파이썬 독학/입문 강의

[파이썬독학강의] 12. 파이썬 while문 - 반복문

데니 by danny 2023. 3. 31. 01:42
반응형

파이썬 while문
파이썬 while문

 

님들 안녕하세요. 14년 차 IT 개발자 데니예요. 이번 시간에는 파이썬 반복문 중에 하나인 while문을 학습하실 거예요. 파이썬 반복문에는 for문과 while문이 있어요. 이번 강의에서 while문을 먼저 배우시고 다음 시간에 for문을 배울 거예요. 반복문은 말 그대로 반복문 내에 문장을 주어진 조건 하에 계속해서 반복 수행시키는 구문이에요. 가령 print('Hello World')를 100번 출력하고 싶은 경우에 해당 문장을 100줄 입력하지 않고, 반복문을 활용한다면  2~3줄이면 쉽게 100번 출력할 수 있어요.  자 그럼 파이썬 while문 강의 시작할게요! 오늘도 파이팅 넘치게 시작해 보아요!

 

 

12. 파이썬 while문 - 반복문

  ▶ while문 이란?

파이썬에서 while문은 조건이 참(True)일 동안 while문 내 문장을 반복해서 실행하는 구문이에요.  조건이 참(True)인 동안에는 while문 내 문장이 반복해서 실행되며, 조건이 거짓(False)이 되면 반복문을 빠져나와 다음 문장을 실행해요. 그럼 while문은 언제 사용해야 할까요? 인간은 단순 반복 작업에 쉽게 피로감을 느껴 지치게 되죠. 만약 반복문을 사용하지 않고 단순 파이썬 코딩으로 1에서부터 10,000까지 더하는 프로그램을 개발해야 한다면, result = 1 + 2 + 3 + 4 + ... + 10,000 이렇게 직접 타이핑해줘야 할 거예요. 반복문을 사용하면 이런 불필요하고 비능률적인 코드를 단 몇 줄의 코드로 대체할 수 있어요. 아래는 1부터 10,000까지 while문을 사용해서 더하는 소스코드예요.

 

1
2
3
4
5
6
7
8
9
10
>>> result = 0
>>> i = 1
>>> while i <= 10,000:
...    result += i
...    i += 1
...
>>> print(result)
50005000
>>>
 
cs

 

라인[1]~[2]는 결과를 저장할 result 변수와 1부터 10,000까지 숫자를 저장할 i 변수를 선언하여 값을 대입했어요.

라인[3]은 while문 기본 구조로 i가 1부터 10,000까지 반복 수행되도록 조건문을 넣었어요.

라인[4]~[5]는 while문 내에 속하여 반복시킬 문장으로 들여 쓰기를 필수로 해줘야 해요. 반복문이 수행되는 동안 result변수에 i를 더한 값을 다시 result 변수에 대입시켜요. 그리고 i변수의 값을 1씩 증가시켜야 해요.

라인[7]~[8]은 1부터 10,000까지 더한 결과를 출력해 주었어요.

 

 

  ▶ while문 기본 구조

아래 그림은 whle문 기본 구조를 표현하고 있어요. while문은 조건문이 항상 True(참)인 경우에만 while문 내에 속한 문장을 수행시켜요. 즉, 조건문이 True인 경우 수행할 문장1~3을 수행시키고 다시 whle 조건문으로 와서 해당 조건문이 True인 경우 수행할 문장1~3을 다시 수행시켜 주고, 조건문이 False인 경우 수행할 문장을 수행시키지 않고 while문을 종료시켜요.

 

파이썬 while문 기본 구조
파이썬 while문 기본 구조

 

while문 조건문 True 혹은 False인 경우 수행 절차
while문 조건문 True 혹은 False인 경우 수행 절차

 

 

  ▶ 숫자 1~10까지 출력하기

while문을 사용하는 예시로 1부터 10까지 숫자를 출력하는 실습을 진행해 볼게요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> i = 0
>>> while i < 10:
...    i+=1
...    print(i)
...
1
2
3
4
5
6
7
8
9
10
>>>
cs

라인[1]은 i변수에 숫자 0을 대입했어요.

라인[2]는 while문의 조건문은 i가 100이 될 때까지 반복시킨다는 의미예요.

라인[3]~[4]는 라인[2]의 i < 100 조건문이 True인 경우 수행되는 문장으로 i에 1을 더한 값을 출력해주고 있어요. 숫자 1개를 출력한 후 다시 while문 조건문으로 이동하여 조건 판단 결과 True인 경우 반복해서 수행시켜 주어 숫자 10까지 출력하게 돼요.

라인[6]~[15]를 보시면 숫자 1~10까지 출력된 걸 확인하실 수 있어요.

 

 

  ▶ 구구단 출력하기

while문을 사용해서 구구단을 출력하는 실습을 진행해 볼게요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> dan = 2
>>> i = 0
>>> while i < 9:
...    i += 1
...    print(f'{dan} * {i} = {dan*i}')
...
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
>>>  
cs

라인[1]은 구구단 중 2단을 출력하기 위해서 dan 변수에 숫자 2를 대입했어요.

라인[2]는 2에 1부터 9까지 곱해야 하므로 i 변수에 0을 대입했어요.

라인[3]은 i가 9보다 작은 경우 반복 수행되도록 while문을 작성했어요.

라인[4]~[5]는 i를 1씩 증가시키고 dan*i 연산을 수행하여 구구단을 출력시켰어요.

라인[7]~[15]는 2단이 정상적으로 출력된 결과를 확인하실 수 있어요.

 

 

  ▶ 무한 루프(infinite loop)

 

while문 무한루프
while문 무한루프

 

파이썬에서 무한 루프(infinite loop)란, 조건식이 항상 참(True)을 반환하여 끝나지 않는 반복문을 말해요. 무한 루프는 종료 조건을 설정하지 않거나 조건식이 항상 참(True)을 반환하도록 작성되었을 때 발생해요.
무한 루프는 프로그램에서 예기치 않은 동작을 발생시킬 수 있으므로, 주의해서 사용해야 해요. 하지만 무한 루프를 사용해야 하는 상황이 종종 있어요. 예를 들어, 특정한 이벤트가 발생할 때까지 계속해서 대기하는 코드를 작성할 때 무한 루프를 사용할 수 있어요.

앞서 구구단을 출력해 주는 실습에서 2단만 출력해서 아쉬운 점이 없지 않아 있었어요. while문 무한 루프를 사용해서 단수를 입력받고 그 단수를 사용해서 구구단을 출력해주는 실습을 해볼게요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
>>> while True:
...     dan = 0
...     i = 0
...     dan = int(input('몇 단을 출력할까요?(2~9 입력, 0 입력 시 종료) '))
...     if dan == 0:
...         print('프로그램을 종료합니다.')
...         break
...     elif dan < 2 or dan > 9:
...         print('잘못 입력하셨습니다. 2~9 숫자를 입력하세요.')
...     else:
...         while i < 9:
...            i+=1
...            print(f'{int(dan)} * {i} = {int(dan) * i}')
...     print('\n')
...
몇 단을 출력할까요?(2~9 입력, 0 입력 시 종료) 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
 
몇 단을 출력할까요?(2~9 입력, 0 입력 시 종료) 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
 
몇 단을 출력할까요?(2~9 입력, 0 입력 시 종료) 10
잘못 입력하셨습니다. 2~9 숫자를 입력하세요.
 
 
몇 단을 출력할까요?(2~9 입력, 0 입력 시 종료) 0
프로그램을 종료합니다.
>>>
cs

님들 해당 소스코드는 직접 실행해 보시면서 어떻게 작동되는지 확인해 보시는 시간을 가지면 좋을 같아요.

위 소스코드를 분석하실 때 왜 while문이 무한 루프를 수행하는지 알 수 있으셔야 해요. 그리고 어떻게 무한 루프가 종료되었는지 설명하실 수 있으셔야 해요. 힌트는 break에 있어요. break를 만나는 순간 바로 break문이 속해 있는 반복문을 탈출(종료)하게 돼요.

 

님들 오늘은 파이썬 반복문 중에 while문을 살펴보았어요. 오늘도 너무 고생 많으셨어요. 그럼 오늘 강의는 여기까지 진행할게요. 다음 강의는 파이썬 for문에 대해서 학습할 테니 그때까지 실습 많이 해보세요. 감사해요.

반응형