본문 바로가기
IT/Python

[Python] 구구단 프로그래밍 예제

by 초록술 2020. 5. 5.
반응형

 

 

개발 언어를 배우는 데 있어서 직접 프로그래밍을 해보는 것만큼 좋은 것은 없습니다.

 

구구단 프로그래밍을 하는 방법은 여러 가지가 있을 텐데요

각자의 코딩을 서로 비교해 좋을 것 같습니다.

 

# 2단부터 9단까지 출력 예제

구구단은 다음과 같이 2단부터 9단까지 1씩 증가하는 8개의 그룹으로 이루어집니다.

  •  2단, 3단, 4단, 5단, 6단, 7단, 8단, 9단

각 단은 1부터 9까지 1씩 증가하는 9개의 숫자의 곱을 계산합니다.

  • 2 * 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 3 * 1, 2, 3, 4, 5, 6, 7, 8, 9
  • ...
  • 9 *  1, 2, 3, 4, 5, 6, 7, 8, 9

2단부터 9단까지 출력 예제

for i in range(2,10):
    print("*"*10)
    print(str(i)+" 단")
    print("*"*10)
    for j in range(1,10):
        print(str(i) +"+"+ str(j) + "=" + str(i*j))

 

결과

더보기

********** 
2 단 
********** 
2+1=2 
2+2=4 
2+3=6 
2+4=8 
2+5=10 
2+6=12 
2+7=14 
2+8=16 
2+9=18 
********** 
3 단 
********** 
3+1=3 
3+2=6 
3+3=9 
3+4=12 
3+5=15 
3+6=18 
3+7=21 
3+8=24 
3+9=27 

... 중략 ... 

********** 
9 단 
********** 
9+1=9 
9+2=18 
9+3=27 
9+4=36 
9+5=45 
9+6=54 
9+7=63 
9+8=72 
9+9=81


# range()

range() : 일련의 숫자를 반복

range class는 다음과 같이 정의되어 있습니다.

class range(start, stop[, step])

start : 시작 매개 변수 (0 : 값이 생략되었을 경우)
stop : 정지 매개 변수 (값을 포함하지 않음)
step : 단계 매개 변수 (1 : 값이 없을 경우)

예를 들어 보겠습니다.

range(10) 은 range(0,10) 과 동일하며 0보다 크거나 같고 10보다 작은 범위입니다. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

range(5, 10) 은 5보다 크거나 같고 10보다 작은 범위입니다. (5, 6, 7, 8, 9) 

range(0, 10, 3) 은 0보다 크거나 같고 10보다 작은 범위이며 숫자는 3씩 증가합니다. (0, 3, 6, 9)

 

값이 작아지게 하려면 다음과 같이 step을 음수로 사용합니다.

range(0,-10,-1)

이는 0부터 -9까지 범위를 나타냅니다. (0, -1, -2, -3, -4, -5, -6, -7, -8, -9)

 

 

※ python에서 range(0,10)을 호출하면 range(0,10)이 반환됩니다.

 마치 list형 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 인 것처럼 동작하지만 list와 차이가 있습니다. 반복할 때 비로소 시퀀스의 연속적인 항목을 반환합니다. (현재 시점에서는 크게 중요하지 않습니다.)

간단하게 list(range(10)) 을 입력하면 0~9의 값이 list형으로 값을 확인할 수 있습니다.

위 range 예제 list 형으로 값을 확인해 보겠습니다.

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> list(range(0,10,3))
[0, 3, 6, 9]
>>> list(range(0,-10,-1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

# for 문

for문 : 모든 시퀀스(sequence)를 순서대로 표시합니다.

 

for i in range(2,10):

 2~9 까지 정수가 하나씩 i변수에 대입됩니다.

for j in range(1,10):

 1~9 까지 정수가 하나씩 j 변수에 대입됩니다.

 

# str, int, float, type

숫자형인 int 나 float는 string 타입과 같이 출력할 수 없습니다.

위 구구단 코드를 print(i+"단") 으로 작성하면 다음 에러가 납니다.

Traceback (most recent call last): 
  File "c:/Users/ymshim/Python38/Multiplication.py", line 4, in  
    print(i+"단") 
TypeError: unsupported operand type(s) for +: 'int' and 'str'


int 형과 string형을 같이 사용할 수 없기 때문에 나는 에러입니다.
이럴 때 str()을 사용하여 int 형을 string으로 바꿔줄 수 있습니다.

 

print(str(i)+" 단")하면 저희가 출력하고자 하는 내용이 출력됩니다.

반대로 string을 int() 나 float()을 사용하여 정수나 실수로 바꿀 수도 있습니다.

 

type(변수)를 사용하여 변수의 타입을 확인할 수도 있습니다.

 

# 값을 입력받는 구구단 계산기

약간의 코드를 추가하여 값을 입력 받는 구구단 계산기를 만들어 보았습니다..

# -*- coding: utf-8 -*-
# Python 3.8.2
# FileName : Multiplication.py


def Multiplication(num):
    if(num >= 1):
        print("[ "+ str(num) + " 단 ]")
        for i in range(1,10):
            print(str(num) + " + " + str(i) + " = " + str(num * i) )
    else:
        print("0 보다 큰 수를 입력하세요")


if __name__ == '__main__':
    print("*****************************************************")
    print("* 구구단 계산기 입니다.")
    print("* 숫자가 아닌 문자를 입력하면 프로그램이 종료됩니다.")
    print("*****************************************************")
    while True :
        try:
            Num = int(input("몇 단을 출력할까요: "))
            if Num == "" :
                break
            else:
                Multiplication(Num)        
        except ValueError:
            print("*****************************************************")
            print("* 프로그램이 종료됩니다.")
            print("*****************************************************")
            break

 

결과>

더보기

***************************************************** 
* 구구단 계산기 입니다. 
* 숫자가 아닌 문자를 입력하면 프로그램이 종료됩니다. 
***************************************************** 
몇 단을 출력할까요: 7 
[ 7 단 ] 
7 + 1 = 7 
7 + 2 = 14 
7 + 3 = 21 
7 + 4 = 28 
7 + 5 = 35 
7 + 6 = 42 
7 + 7 = 49 
7 + 8 = 56 
7 + 9 = 63 
몇 단을 출력할까요: 12 
[ 12 단 ] 
12 + 1 = 12 
12 + 2 = 24 
12 + 3 = 36 
12 + 4 = 48 
12 + 5 = 60 
12 + 6 = 72 
12 + 7 = 84 
12 + 8 = 96 
12 + 9 = 108 
몇 단을 출력할까요: 0 
0 보다 큰 수를 입력하세요 
몇 단을 출력할까요: abc 
***************************************************** 
* 프로그램이 종료됩니다. 
*****************************************************


# -*- coding: utf-8 -*-

 

첫 줄에 문자열이 UTF-8 형식이라는 것을 명시하는 코드를 삽입하였습니다.

(참고로 VSCode에서는 Code에 한글이 들어가면 자동으로 UTF-8로 인코딩을 변환해 줍니다.)

 

def Multiplication(num) : 으로 구구단을 하는 함수를 선언합니다.

if 문으로 0보다 큰 수를 입력받을 때만 구구단을 출력합니다. 양수가 아니면 구구단을 출력하지 않습니다.

 

if __name__ == '__main__':

 이 프로그램(Multiplication.py)을 직접 호출하면 if __name__ == '__main__': 가 True 가 되어 다음 문장이 수행됩니다.

다른 파일에서 이 프로그램을 사용할 때는 if __name__ == '__main__': 가 False 이 되어 다음 문장이 수행되지 않습니다.

 

while True : 로 구구단을 (break를 만나기 전까지) 무한 반복하게 합니다.

 

Num = int(input("몇 단을 출력할까요: ")) 으로 input 으로 입력받은 문자열을 int 로 변환하여 Num 변수에 대입합니다.

이때 문자열이 숫자 형태가 아닐 경우 에러가 발생합니다.

Traceback (most recent call last): 
  File "c:/Users/ymshim/Python38/Multiplication.py", line 32, in  
    Num = int(input("몇 단을 출력할까요: ")) 
ValueError: invalid literal for int() with base 10: 'a'

try:이 에러가 발생할 때 프로그램을 종료하기 위해 예외 처리를 하는 코드를 삽입하였습니다.

    ....

except ValueError :

    ....

int 형변환이 실패하면 except ValueError: 다음 구문이 실행되고 break를 만나 while 문이 종료됩니다.

 

 

구구단 계산기와 값을 입력받는 구구단 계산기를 만들어 보았습니다.

여러분들도 각자의 개성을 살려 만들어 보면 어떨까요? 

반응형

댓글