카테고리 없음

쉽게하는 Python : for문

tamnazio 2022. 3. 31.
반응형

프로그래밍을 하다보면 하나하나씩 코딩하는 것이 엄청나게 귀찮을 수가 있어요. 예를 들어 구구단을 출력하는 프로그램을 만든다고 해보죠. 2x1 = 2, 2x2 = 4... 이런식으로 코딩하면 작성하는데에만 허무한 시간을 보낼 수도 있습니다.

이러한 귀찮거나 직접 입력했을 때 오래걸리는 일들을 반복으로 처리함으로써 프로그램의 코드도 간결해지고 빠르게 프로그램을 만들 수 있습니다. 이러한 반복문을 처리하기 위해 파이썬에서 제공하는 for문을 이용해보도록 할께요.

 

for문 문법
for 변수명 in [리스트 or 튜플 or 문자열] :
    처리문

for문 다음에 처리문을 작성하실 때에는 탭(Tab) 또는 스페이스 4칸으로 들여쓰기를 해야한다는 점 꼭 기억해주세요! 간단한 예제를 통해 for문을 사용하는 방법에 대해 알아보겠습니다.

 

for문 숫자 반복 예제

for문을 숫자로 반복을 해볼께요. 숫자 1~5까지 나타내는 리스트를 만들고, 이를 for문으로 반복해서 출력하는 예제입니다.

>>> numbers = [1, 2, 3, 4, 5]
>>> for i in numbers:
...     print(i)
...
1
2
3
4
5

for문을 반복할 때 i라는 변수에 numbers의 값을 하나씩 꺼내서 출력을 합니다.

이 예제의 for문이 실행되는 메커니즘을 하나씩 설명해드릴께요.

  1. numbers의 값 1이 변수 i에 저장이 되고 값이 출력이 됩니다.
  2. numbers의 값 2가 변수 i에 저장이 되고 값이 출력이 됩니다.
  3. numbers의 값 3이 변수 i에 저장이 되고 값이 출력이 됩니다.
  4. numbers의 값 4가 변수 i에 저장이 되고 값이 출력이 됩니다.
  5. numbers의 값 5가 변수 i에 저장이 되고 값이 출력이 됩니다.

엄청 간단하죠? for문은 변수에 담긴 내용을 다람쥐 쳇바퀴 돌아가듯이 반복을 해주는 역할을 수행합니다.

 

구구단 쉽게 구현해보기

이번에는 구구단을 구현을 해보는 코드를 만들어 볼께요. for문은 다중 for문을 사용할 수 있습니다. for문 안에 for문이 들어 있는 것을 다중 for문이라고 하는데 아래와 같은 구조입니다.

for a in 리스트:
   for b in 리스트:
   ...

다만, for문은 왠만해서는 이중 for문까지만 사용하시길 권장드립니다. 코드를 이해하기도 어려울 뿐더러 잘못된 결과가 나올 가능성이 높아집니다.

이제, 구구단을 만들어볼께요.

1단~9단의 구구단은 어떻게 되는지 먼저 확인해 보겠습니다.

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

 

이렇게 많은 숫자를 일일이 타이핑하기 굉장히 어렵습니다... 이것을 간단하게 for문으로 구현해볼께요.

>>> numbers = range(1, 9)
>>> for gugudan in numbers:
...     for number in numbers:
...             print(gugudan, ' x ', number, ' = ', gugudan * number)
...
1  x  1  =  1
1  x  2  =  2
1  x  3  =  3
1  x  4  =  4
1  x  5  =  5
1  x  6  =  6
1  x  7  =  7
1  x  8  =  8
1  x  9  =  9
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

굳이 리스트로 1~9까지 입력하지 않고 range 함수를 이용해서 숫자를 반복할 수 있도록 했습니다.

단 4줄로 구구단을 구현되었습니다. 쉽죠? 이렇게 for문을 이용하여 귀찮은 부분을 쉽게 반복할 수 있도록 하였습니다.

 

Trouble Shooting

for문 문법 중, 변수부분을 숫자 또는 문자열 등으로 기입할 경우 SyntaxError: cannot assign to literal 오류가 발생합니다. 이 오류는 문법을 정확히 사용하지 않았을 때 발생하는 오류입니다. 아래와 같은 경우, for문 다음에 숫자 1을 넣었는데 이 부분을 변수명으로 변경해주시면 오류가 해결이 됩니다.

>>> for 1 in [1, 2, 3, 4, 5]:
    File "<stdin>", line 1
        for 1 in [1, 2, 3, 4, 5]:
                     ^
SyntaxError: cannot assign to literal

 

 

반응형

댓글