<개인공부>/[Python]

[python] 파이썬 구구단 프로그램 (가로출력, 세로출력)

BlockDMask 2019. 12. 1. 19:36
반응형

안녕하세요. BlockDMask 입니다.

오늘은 간단하게 파이썬 구구단 가로출력 과 세로출력을 해주는 프로그램을 만들어 보았습니다.

간단한 프로그램인 만큼 복잡하지 않게 구현을 하려 했으며, 이해하기 쉽도록 각 함수들을 분리해서 만들었습니다.

이해가 가지 않는 부분은 댓글로 말씀해주시면 최대한 빠른 시일내에 답변 하겠습니다.


<목차>

1. 파이썬 구구단 가로출력, 세로출력, 특정 수 입력받아서 출력하는 로직

2. 파이썬 구구단 프로그램에 사용된 함수, 지식 간단 설명 (range, f string)

3. python 구구단 소스코드


1. 파이썬 구구단 출력 로직


▶ 구구단 특정 숫자 출력

def guguNormal(n):
for m in range(2, 10):
print(f'{n} x {m} = {n * m}') # f스트링 이용

특정 숫자 n 을 입력 받는 guguNormal 이라는 이름의 함수 입니다.

n 은 몇 단 할때 몇을 나타내고, m 은 뒤에 곱해지는 수를 나타냅니다. 식으로 나타내면 아래와 같습니다.

n x m = n*m

2 x 8 = 2*8 //(=16)


range(2, 10)은 숫자 2에서부터 10-1 까지 숫자. 즉, 2~9까지의 숫자를 반복 가능한 형태로 만들어줍니다.

range로 만든 list 를 for 반복문을 이용해서 2부터 하나씩 차례대로 변수 m에 넣어준다는 뜻 입니다.


그렇게 되면 for 반복문을 돌면서

n x 2, n x 3, n x 4 .. n x 9 까지 출력하게 되는 것 입니다.


▶ 구구단 세로 출력 (1~9단 한번에)

def guguVertical():
for n in range(1, 10): # 단 수가 밖에 존재.
for m in range(2, 10):
print(f'{n} x {m} = {n * m}') # f스트링 이용

이 함수는 1~9단 까지의 구구단을 세로로 한번에 출력하기 위한 함수입니다.

내부 로직은 구구단 특정 숫자를 출력해주는 guguNormal 함수와 동일한 로직입니다.

하지만 단수를 나타내는 n 값을 따로 받지 않고 range 함수를 이용해서 변수 n 에 1~9 까지 집어 넣어서

1부터 9단까지 차례대로 출력하게 됩니다.



▶ 구구단 가로 출력 (1~9단 한번에)

def guguHorizontal():
for m in range(2, 10):
for n in range(1, 10): # 단 수가 안에 들어왔다.
print(f'{n} x {m} = {n * m}', end='\t')
print() # 한줄 엔터

이 함수는 1~9단 까지의 구구단을 가로로 한번에 출력하기 위한 함수입니다.

세로로 출력하는 로직과 비슷(?)해 보이지만 자세히 보면 m 과 n 의 반복문 위치가 바뀌었습니다.


단수를 나타내는 n이 안쪽 반복문로 들어가게 되어서 "n의 값이 먼저 1~9까지 한번 순회" 한 후에 

"m값이 증가하고 -> 다시 n의 값이 1~9까지 순회" 이런식으로 로직이 돌아가게 됩니다. 한번 글로 표현을 해본다면


m = 2 일때 n이 1~9 까지 반복되면서 출력되고

1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8    5 x 2 = 10 6 x 2 = 12     7 x 2 = 14 8 x 2 = 16     9 x 2 = 18


다 출력이 되면 print()로 인해 다음줄로 넘어간 후,  m이 3으로 증가하고 또다시 n이 1~9까지 반복됩니다.

1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12    5 x 3 = 15 6 x 3 = 18    7 x 3 = 21 8 x 3 = 24    9 x 3 = 27


2. 파이썬 구구단 프로그램에 사용된 지식들


▶ 범위의 숫자를 반환해주는 range

파이썬의 내장함수 range 입니다. 이 함수는 매개변수로 들어온 범위에 있는 숫자들을 반복 가능한 형태로 변환해주는 함수 입니다.

이번 구구단에서는 range(1, 10), ragne(2, 10) 이런식으로 매개변수가 두개 들어간 형태로 사용했습니다.

range(a, b) 라 했을때 range가 만들어 주는 범위는 [a, b) 입니다. 다시 말하면

a를 포함한 숫자보다 크고 b 보다 작은 (b는 포함하지 않습니다) 숫자들만 반복가능한 형태로 변환해주는 기능을 합니다.

그렇기 때문에 range(1, 10)은 1, 2, 3, 4, 5, 6, 7, 8, 9 까지를 나타내고,

range(2, 10)은 2, 3, 4, 5, 6, 7, 8, 9 의 숫자를 나타냅니다.


range 함수는 반복문 for와 함께 사용하기 편리합니다.


▶ 출력을 좀더 편하게 해주는 f string

파이썬 3.6.x 부터 사용할 수 있는 편리한 문자열 포메팅 기능입니다.

문자열을 시작할때 f를 붙이고 시작하게 되면 변수를 { } 중괄호 안에 대입해서 넣어서 사용할 수 있습니다.


예를들어.

name = "BlockDMask"

print(f"My name is {name}")

위와같이 name이라는 변수를 {} 중괄호 안에 넣게되면 해당 변수를 대입해서 출력해주는 그런 기능을 해줍니다.


3. python 구구단 소스코드


▶ 파이썬 구구단 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# [파이썬] 간단한 구구단 프로그램 만들기 (by. BlockDMask)
# GuGu.py
 
# 구구단 특정 단수 입력 받아서 출력
def guguNormal(n):
    for m in range(210):
        print(f'{n} x {m} = {n * m}')  # f스트링 이용
 
 
# 구구단 세로 출력
def guguVertical():
    for n in range(110):  # 단 수가 밖에 존재.
        for m in range(210):
            print(f'{n} x {m} = {n * m}')  # f스트링 이용
 
 
# 구구단 가로 출력
def guguHorizontal():
    for m in range(210):
        for n in range(110):  # 단 수가 안에 들어왔다.
            print(f'{n} x {m} = {n * m}', end='\t')
        print()
cs

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 메인 while 루프 입니다.
print("구구단 프로그램 시작...")
while True:
    print("=" * 30)         # "="를 30개 출력
    print("1. 특정 단수 세로로 출력.")
    print("2. 1~9단 까지 세로로 출력.")
    print("3. 1~9단 까지 가로로 출력.")
    print("4. 프로그램 종료")
    print("=" * 30)
    print("입력 : ", end="")  # end=""는 print 하고 다음줄로 넘어가지 않겠다는 뜻
    num = int(input())       # 첫번째 입력 받고 int 타입으로 받습니다
    if num == 1:  # 특정 단수 입력
        print("단수를 입력하세요 : ", end='')
        n = int(input())  # 몇단을 원하는지 입력받음.
        guguNormal(n)
    elif num == 2:  # 세로
        guguVertical()
    elif num == 3:  # 가로
        guguHorizontal()
    elif num == 3:
        break  # 프로그램 종료
    else:
        print("1~4 사이의 숫자를 입력해주세요")  # 1~3 번호가 아닐 때 예외처리
cs



▶ 구구단 예제 결과


1. 특정 단수 입력했을때. 20단을 넣어봤습니다.


2. 1단 부터 9단까지 구구단 세로로 출력 (세로는 화면이 길어지기 때문에 2단 까지만 캡쳐 했습니다)


3. 1단 부터 9단까지 구구단 가로로 출력


감사합니다. 이상 파이썬 구구단 프로그램 이었습니다.

반응형