티스토리 뷰

반응형

 

파이썬 for문 구구단 출력

 

- 순서 -

1. 구구단 2단

2. 구구단 2단부터  9단까지

3. for문안에서 print함수 위치에 따른 출력 값의 위치

 


1. 구구단 2단

print(':: 2단 ::')
for i in range(1, 10):  # 1부터 9까지
    print(f'2 x {i} = {2*i}')

 

1-1. 구구단을 한 개의 단만 출력할 때는 한 개의 for문을 사용한다.

1부터 9까지의 숫자는 for문에서 range( ) 함수를 이용해서 하나씩 출력하고 구구단에서 반복되는 문장은 f-string을 이용해 문자열로 작성하였다. 

 

1-2. 숫자 범위 생성을 위해 range 함수를 사용한다.

range( ) 함수는 생성하려는 숫자의 범위를 입력해서 사용한다. 숫자의 개수에 따라서 숫자가 의미하는 바가 달라진다. 숫자 1개는 (stop) 숫자 2개는 (start, stop) 숫자 3개는 (start, stop, step) 숫자를 의미하고 각각 star는 시작 숫자, stop은 종료 숫자, step은 숫자의 간격을 나타낸다.

 

주의해서 사용 할 점은 start 숫자는 range 함수의 숫자 범위에 포함되지만 stop 숫자는 포함되지 않고 stop 숫자의 바로 직전 숫자까지만 포함된다.

 

1-3. f-string 사용방법

f-string은 파이썬의 편리한 문자 포매팅 방법이다. 문자열을 생성하는 따옴표(' ' 혹은 " ") 앞에 f를 접두사로 붙여서 사용한다.  f-string이 편리한 이유는 문자열을 나타내는 따옴표 안에서 { } 괄호를 이용하면 변수를 입력할 수 있기 때문이다. 위에서 사용한 것처럼 { } 괄호 안에 변수뿐만 아니라 변수를 이용한 계산식을 입력할 수도 있다.

 

1-4. 출력 값

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

 

2. 구구단 2단부터 9단까지

for dan in range(2, 10):  # 2 ~ 9
    for i in range(1, 10):  # 1 ~ 9
        print(f'{dan} x {i} = {dan * i}')

2-1. 두 개의 숫자 범위가 반복되기 때문에 두개의 for문을 이용한다.

for문의 하위에 여러 개의 for문이 있는 경우에는 마지막 for문부터 반복을 마친다. 구구단에서 곱하기 뒤의 숫자가 먼저 1부터 9까지 반복되기 때문에 두 번째 for문의 변수로 두었다. 위에서와 마찬가지로 range 함수로 숫자 범위를 생성하고 f-string을 이용해서 출력문을 작성하였다.

 

2-2. 출력 값

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
...
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
...
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81

 

구구단을 2단에서 9단까지 출력할 때 단과 단 사이를 구분하는 출력문을 따로 작성하진 않았다. 단과 단 사이에 구분 없이 출력됐기 때문에 구분을 두도록 해본다.

 

2-3. print 문을 추가해서 단별로 구분한 코드를 작성해보았다.

for dan in range(2, 10):
    print(f':: {dan}단 ::')  # 몇단인지 표시
    for i in range(1, 10):
        print(f'{dan} x {i} = {dan * i}')
    print('-'*10)  #한개의 단이 끝나면 구분선

 

첫 번째 for문의 실행할 문장에 print 함수를 추가하였다. 두 번째 for문이 실행되기 전과 후에 각각 print 함수를 배치해서 두 번째 for문이 반복하기 전에 위쪽 출력문이 출력되고 두 번째 for문이 한번 반복되고 나면 아래의 print 함수 출력문이 실행된다. 

 

2-4. 출력 값

:: 2단 ::
2 x 1 = 2
2 x 2 = 4
...
2 x 8 = 16
2 x 9 = 18
----------
:: 3단 ::
3 x 1 = 3
3 x 2 = 6
...
9 x 8 = 72
9 x 9 = 81
----------

위와 같이 for문 안에서 print 위치에 따라 출력값이 달라진다.  계속해서 for문의 실행 문장 작성 위치에 따라 출력값이 달라지는 예시를 살펴본다.

 

 

3. for문안의 print 함수 위치에 따라 달라지는 출력 값의 위치

3-1.for문 안에서 실행할 문장의 위치에 따라 출력 값이 달라진다.

구구단 2단부터 9단까지 두 개의 for문을 작성한 코드에서 마지막 코드 print('-'*10) 함수의 위치를 바꿔가며 비교해본다.

 

3-2. 두 번째 for문안에서 반복하게 했을 때

for dan in range(2, 10):
    print(f':: {dan}단 ::')
    for i in range(1, 10):
        print(f'{dan} x {i} = {dan * i}')
        print('-'*10)  # 구분선의 위치를 변경

 

3-3. 출력 값 : 한 줄마다 구분선이 출력된다.

:: 2단 ::
2 x 1 = 2
----------
2 x 2 = 4
----------
2 x 3 = 6
----------
...

 

3-4. 첫 번째 for문에서 반복하게 했을 때

for dan in range(2, 10):
    print(f':: {dan}단 ::')  
    for i in range(1, 10):
        print(f'{dan} x {i} = {dan * i}')
    print('-'*10)  # 구분선의 위치를 변경

 

3-5. 출력 값: 한 단이 끝날 때마다 구분선이 출력된다.

:: 2단 ::
2 x 1 = 2
2 x 2 = 4
...
2 x 8 = 16
2 x 9 = 18
----------
:: 3단 ::
3 x 1 = 3
3 x 2 = 6
...
9 x 8 = 72
9 x 9 = 81
----------

 

3-6. for문이 끝나고 출력하게 했을 때

for dan in range(2, 10):
    print(f':: {dan}단 ::')
    for i in range(1, 10):
        print(f'{dan} x {i} = {dan * i}')
print('-'*10)  # 구분선의 위치를 변경

 

3-7. 출력 값: 구분선이 구구단이 모두 끝날 때 출력된다.

...
2 x 8 = 16
2 x 9 = 18
:: 3단 ::
3 x 1 = 3
3 x 2 = 6
...
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
----------

이렇듯 print함수뿐만 아니라 변수를 선언하거나 다른 함수를 포함하는 등 for문을 작성할 때, 위치에 따라서 값이 달라질 수 있다.

 

반응형
댓글
반응형