for문을 배우면 전통적으로 구구단을 한번 돌려봐야 한다. 어린이들이 외우는 구구단을 컴퓨터로 구현함으로써 for제어문을 더 잘 알 수 있다. 구구단은 사실 심오하다. 요즘은 유튜브에서 인도 수학이 뜨던데 흥미롭다. 유튜브에 multification table이라고 검색하면 재미있는 영상들이 많이 올라와있다. 인도의 전통복장이 마음에 든다.

 

인도 구구단

 

다음 코드는 for 문으로 구구단을 출력하는 것이다.

 

for i in range(2,10):
    for j in range(1,10):
        print("{0} x {1} = {2:>3}".format(i,j,i*j))
    print("-"*12)

가장 기본적인 구구단 출력이다. for문을 두개 사용한다. 한개는 2~9단까지의 숫자를 다른 하나는 1~9까지의 숫자를 가져온다. 2단 에서 9개 3단에서 9개 이런식으로 루프를 돌게 해놨다. print 문의 포맷은 조금 생소하지만 잘 보면 규칙이 보인다. {0} {1} {2} 이는 format 메소드의 매개변수를 말한다. 첫번째가 i 두번째가 j 마지막 {2}는 i*j 이다.

 

다음의 결과를 얻는다.

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
------------
3 x 1 =   3
3 x 2 =   6
3 x 3 =   9
3 x 4 =  12
3 x 5 =  15
3 x 6 =  18
3 x 7 =  21
3 x 8 =  24
3 x 9 =  27
------------
4 x 1 =   4
4 x 2 =   8
4 x 3 =  12
4 x 4 =  16
4 x 5 =  20
4 x 6 =  24
4 x 7 =  28
4 x 8 =  32
4 x 9 =  36
------------
5 x 1 =   5
5 x 2 =  10
5 x 3 =  15
5 x 4 =  20
5 x 5 =  25
5 x 6 =  30
5 x 7 =  35
5 x 8 =  40
5 x 9 =  45
------------
6 x 1 =   6
6 x 2 =  12
6 x 3 =  18
6 x 4 =  24
6 x 5 =  30
6 x 6 =  36
6 x 7 =  42
6 x 8 =  48
6 x 9 =  54
------------
7 x 1 =   7
7 x 2 =  14
7 x 3 =  21
7 x 4 =  28
7 x 5 =  35
7 x 6 =  42
7 x 7 =  49
7 x 8 =  56
7 x 9 =  63
------------
8 x 1 =   8
8 x 2 =  16
8 x 3 =  24
8 x 4 =  32
8 x 5 =  40
8 x 6 =  48
8 x 7 =  56
8 x 8 =  64
8 x 9 =  72
------------

 

출력이 너무 길고 보기가 불편하다. 이럴 때는 코드를 바꾼다.

for i in range(2,10):
    for j in range(1,10):
        print("| {0} x {1} = {2:>2}".format(i,j,i*j), end = ' ')
    print()

 

print 매개변수에 end = ' '로 줄바꿈을 빼버린다. print는 기본값으로 줄바꿈을 한다. 아래와 같은 값을 얻는다.

| 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 
| 3 x 1 =  3 | 3 x 2 =  6 | 3 x 3 =  9 | 3 x 4 = 12 | 3 x 5 = 15 | 3 x 6 = 18 | 3 x 7 = 21 | 3 x 8 = 24 | 3 x 9 = 27 
| 4 x 1 =  4 | 4 x 2 =  8 | 4 x 3 = 12 | 4 x 4 = 16 | 4 x 5 = 20 | 4 x 6 = 24 | 4 x 7 = 28 | 4 x 8 = 32 | 4 x 9 = 36 
| 5 x 1 =  5 | 5 x 2 = 10 | 5 x 3 = 15 | 5 x 4 = 20 | 5 x 5 = 25 | 5 x 6 = 30 | 5 x 7 = 35 | 5 x 8 = 40 | 5 x 9 = 45 
| 6 x 1 =  6 | 6 x 2 = 12 | 6 x 3 = 18 | 6 x 4 = 24 | 6 x 5 = 30 | 6 x 6 = 36 | 6 x 7 = 42 | 6 x 8 = 48 | 6 x 9 = 54 
| 7 x 1 =  7 | 7 x 2 = 14 | 7 x 3 = 21 | 7 x 4 = 28 | 7 x 5 = 35 | 7 x 6 = 42 | 7 x 7 = 49 | 7 x 8 = 56 | 7 x 9 = 63 
| 8 x 1 =  8 | 8 x 2 = 16 | 8 x 3 = 24 | 8 x 4 = 32 | 8 x 5 = 40 | 8 x 6 = 48 | 8 x 7 = 56 | 8 x 8 = 64 | 8 x 9 = 72 
| 9 x 1 =  9 | 9 x 2 = 18 | 9 x 3 = 27 | 9 x 4 = 36 | 9 x 5 = 45 | 9 x 6 = 54 | 9 x 7 = 63 | 9 x 8 = 72 | 9 x 9 = 81 

 

*사용자에게 입력받기

dan = int(input("몇 단부터 출력합니까? (1~9단) :"))

for i in range(dan,10):
    for j in range(1,10):
        print("| {0} x {1} = {2:>2}".format(i,j,i*j), end = ' ')
    print()

dan  변수에 사용자에게 입력받는다. 바깥 for 루프의 시작점에 dan을 대입하면 그 단부터 시작된다.

 

사용자에게 입력받기 파이썬 구구단

 

*그밖에 구구단

 

꼭 9단까지 하라는 법은 없다. 19단도 해보고 100단도 해보자. range의 마지막 숫자만 바꿔주면 된다. 바깥쪽과 안쪽의 차이점을 알면 된다.

for i in range(2,20):
    for j in range(1,20):
        print("| {0:>2} x {1:>2} = {2:>3}".format(i,j,i*j), end = ' ')
    print()

파이썬 19단

 

* for문으로 도형 그리기

 

유니코드 이모지를 사용해서 출력해본다. ' ' 안에 *를 쓰는 건 지겨워서. 유니코드가 동작하지 않는 환경이면 * 별표로 바꾸면 된다.

 

1) 직각삼각형그리기

for i in range(1,6):
    print('\U0001f603'*i)

- 출력결과: 높이를 조절한다. range(1, 높이)

 

😃
😃😃
😃😃😃
😃😃😃😃
😃😃😃😃😃

 

2) 사각형그리기

for i in range(1,6):
    print('\U0001f603'*5)

- 출력결과: 높이와 너비를 조절한다. '유니코드'*너비

 

😃😃😃😃😃
😃😃😃😃😃
😃😃😃😃😃
😃😃😃😃😃
😃😃😃😃😃

 

 

3) 안이 비어있는 사각형

 

이모지로 하면 가로길이가 안맞아서 글자 O를 사용하였다. w와 h를 조작함으로써 사각형의 너비와 높이 조절가능하다. 

w = 20
h = 7

for i in range(1,h+1):
    if i == 1 or i == h:
        print("O"*w)
    else:
        print("O"," "*(w-2),"O",sep='')

4) 위쪽을 향한 삼각형 아래쪽을 향한 삼각형

 

range로 큰 수에서 작은수로 내려오며 만드는 삼각형이다. 사용자에게 높이 입력을 받아서 그린다

rg = eval(input("input triangle length: "))

for i in range(rg, 0, -1):
    print(" " * i, end='')
    print("*" * (rg - i + 1), end='')
    print("*" * (rg - i), end='\n')

파이썬 for 삼각형

 

아래쪽을 향한 삼각형이다.

rg = eval(input("input triangle length: "))

for i in range(1,rg):
    print(" "*(i+1),end='')
    print("*"*(rg-i),end='')
    print("*"*(rg-i-1))


* enumerate 메소드

enumerate 메소드로 인덱스와 값을 동시에 꺼내준다. 현재 위치확인이 용이하다.

a = [35,52,40,81,25,46,75]

for i,j in enumerate(a):
    print("index : {0} | value : {1}".format(i,j))

 

*시작 인덱스를 1로 바꿀 수 있다.

a = [35,52,40,81,25,46,75]

for i,j in enumerate(a,start=1):
    print("index : {0} | value : {1}".format(i,j))

 

 

 

파이썬 반복문 | while 루프, for 루프 | 열린 파이썬 독학 3-1 - 메타버스의 코딩

파이썬 반복문을 학습합니다. for 루프와 while 루프의 사용법을 배울 수 있습니다.

metaversemachine.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band