본문 바로가기

IT프로그래밍

[Python]파이썬 구구단 프로그래밍 설명과 소스코드

앞의 포스팅에서 설명드린 파이썬의 반복문과 조건문을 사용하여

다양한 방법으로 구구단을 출력해보겠습니다.

혹시 파이썬의 반복문과 조건문에 대해 궁금하시다면 하단의 링크 참조 부탁드립니다.

파이썬 조건문 정리

파이썬 반복문 정리

 

이번 포스팅은 단순히 구구단 출력이 목표가 아니라, 파이썬의 조건문과 반복문의 쓰임과 문법에 유의하여 살펴보시고, 개발하시는데 도움이 되었으면 합니다.

 

1. 구구단 세로 출력(1 ~ 9단)


소스 코드

for i in range(2, 10):
    for j in range(1, 10):
        print(i, "X", j, "=", i * j)
        if(j == 9):
            print()

실행 결과

결과가 길어서 한번에 캡처를 못하여 나눠서 올립니다;

 

소스 코드 설명

구구단 출력에서 가장 유심히 봐야하는 것은 이중 for문입니다.

이중 for문 이란 : for문(반복문)안에 또 for문(반복문)이 들어가 있는 형태입니다.

 

위 소스 코드에서는 아래와 같이 2번의 반복문이 중첩되어 있습니다.

for i in range(2, 10):  → 변수 i를 증가시키는 반복문 안에

    for j in range(1, 10):  → 변수 j를 증가시키는 반복문이 정의되어 있음

이렇게 이중 for문의 형태의 반복문은 다음과 같이 동작합니다.

(#번호로 스텝을 구분하여 표시하여, 이해하기 쉽게 써보겠습니다)

#01 ▶ i = 2 할당

#02 ▶ j = 1 할당

#03 ▶ j = 2 할당

#04 ▶ j = 3 할당

#05 ▶ j = 4 할당

#06 ▶ j = 5 할당

#07 ▶ j = 6 할당

#08 ▶ j = 7 할당

#09 ▶ j = 8 할당

#10 ▶ j = 9 할당

 

#11 ▶ i = 3 할당

 

#12 ▶ j = 1 할당

#13 ▶ j = 2 할당

#14 ▶ j = 3 할당

#15 ▶ j = 4 할당

.

.

.

#마지막 ▶ j = 9 할당

구조상 i의 값이 1번 증가할 때, j는 1부터 9까지 전체를 반복합니다.

두번째 for문 안에 print문을 위치시켜 2,1 / 2,2 / 2,3 / .... / 9,9로 값을 증가시키며

화면에 그 결과를 출력시킵니다.

마지막으로 j == 9 ☞ j의 값이 9일 때 ☞ 한 단이 끝났을 때를

if( j == 9)라는 조건문을 통해 그때마다 print()를 통해 한줄 띄우는 효과를 냈습니다.


2. 구구단 가로 출력(1 ~ 9단)


소스 코드

for i in range(2, 10):
    for j in range(1, 10):
        print(i, "X", j, "=", i * j, end = '\t')
        if(j == 9):
            print()

 

실행 결과

 

 

소스 코드 설명

기본적인 구동은 1번과 동일합니다.

차이점에 대해서만 말씀드리자면 구구단을 가로로 출력하기 위해,

파이썬 print함수의 끝에 end파라미터의 값을 '\t'로 지정하였습니다.

→ print(i, "X", j, "=", i * j, end = '\t')

해당 구문에서 마지막에 입력된 end '\t'의 의미는 출력의 마지막에 탭을 입력해! 입니다.

(end를 파라미터로 따로 지정하지 않으면 기본값은 개행(한줄을 띄움)입니다.)

 

따라서 2 X 1 = 2(탭이입력됨)2 X 2 = 4(탭이입력됨)... 으로 띄어쓰기하면서 가로로 출력이 되는 것을 볼수 있습니다.

 

end파라미터를 따로 지정하지 않은 경우(일반적으로 지금까지 우리가 사용하던 방식)에는

2 X 1 = 2(엔터가입력)

2 X 2 = 3(엔터가입력)

.

.

이런식으로 캐리지 리턴이 들어가 있어서 한줄을 띄운 것과 같이 보인것 입니다.


 

3. 사용자가 입력한 단의 구구단 세로로 출력


소스 코드

a = int(input("몇 단을 출력하시겠습니까? : "))
for i in range(1, 10):
    print(a, "X", i, "=", a*i)

 

실행 결과

 

소스 코드 설명

이것 역시 전에 포스팅 했던 파이썬 입력에서 다루었던 부분이었죠?

링크

변수 a에 사용자로부터 입력받은 숫자를 int형으로 할당해줍니다.

그리고 1에서 9까지 반복하는 for 반복문을 안에 그 값을 대입시키고, 반복하면서 출력 시킵니다.


4. 사용자가 입력한 단의 구구단 가로로 출력


소스 코드

a = int(input("몇 단을 출력하시겠습니까? : "))
for i in range(1, 10):
    print(a, "X", i, "=", a*i, end='\t')

 

실행 결과

 

소스 코드 설명

2번에서 진행했던 가로 출력 방법과 3번에서 진행한 사용자의 입력을 받는 방법을 혼합 사용하여

사용자의 입력을 받아, 해당 단의 구구단을 가로로 출력하는 프로그래밍 소스 코드 입니다.


 

5. 사용자에게 구구단 출력을 시작할 단, 구구단 출력이 끝날 단. 2개의 입력을 받아 세로로 출력

 - 단 구구단이 끝날 단은 반드시 시작할 단 보다 커야한다.


 

소스 코드

a = int(input("몇 단부터 출력하시겠습니까? : "))
while(True):
    b=  int(input("몇 단까지 출력하시겠습니까? : "))
    if a < b:
        break
    else:
        print(a,"보다 큰값을 입력해주세요")
for i in range(a, b+1):
    for j in range(1, 10):
        print(i, "X", j, "=", i * j)
        if(j == 9):
            print()

 

실행 결과

 

소스 코드 설명

앞에서 진행한 것에서 추가된 것만 설명드리면, 

1. while 반복문 : while(조건)을 통해 조건이 참이면 계속 반복문을 수행

2. break문 : 실행중인 반복문을 빠져나가라는 명령어

이 두가지 입니다.

 

위 소스 코드에서는 while(True)를 통해 b의 값을 입력하라는 출력을 무한으로 계~속 반복을 수행하게 됩니다.

이 무한 반복문을 빠져 나갈 수 있는 방법은 break문 밖에 없습니다.

하지만 break를 실행시키기 위해서는 if조건문을 만족시켜야 합니다.

결국 이것은 a < b 라는 조건을 만족하지 않으면 무한으로 b값을 다시 입력하게 하는 코드입니다.

 

위의 실행 결과에서도

a = 5 입력

b = 1을 입력 한 경우에는

5(a) 보다 큰값을 입력해주세요. 라는 메시지를 출력하고

다시 사용자가 b의 값을 입력해주길 기다립니다.

 

이 동작은 사용자가 b에 5(a)보다 큰 값을 입력하기 전까지 무한으로 반복됩니다.

조건이 충족되면 break를 실행시켜 while반복문을 빠져나가고 하단의 for문을 수행하며 값을 출력시킵니다.


 

6. 사용자에게 구구단 출력을 시작할 단, 구구단 출력이 끝날 단. 2개의 입력을 받아 가로로 출력

 - 단 구구단이 끝날 단은 반드시 시작할 단 보다 커야한다.


 

소스 코드

a = int(input("몇 단부터 출력하시겠습니까? : "))
while(True):
    b=  int(input("몇 단까지 출력하시겠습니까? : "))
    if a < b:
        break
    else:
        print(a,"보다 큰값을 입력해주세요")
for i in range(a, b+1):
    for j in range(1, 10):
        if(j != 9):
            print(i, "X", j, "=", i * j, ",", end=' ')
        if(j == 9):
            print(i, "X", j, "=", i * j)

 

실행 결과

소스 코드 설명

5번 소스 코드와 동일하며, 출력에서 , 를 추가하고, print함수의 end를 공백으로 지정하여 가로로 표출되게 하였습니다.

 

이상 파이썬에서 구구단을 출력하는 여러가지 방법이었습니다.

 

질문과 지적은 댓글로 부탁드립니다 >_+