16강 while 문(Python Algorithm 16 while)
부제 : 알고리즘을 배우면서 파이썬 기초부터 RPG까지 정복
내용 : 초중고 또는 코딩 기초 입문자를 위한 누구나 따라 배울 수 있는 Python Algorithm 프로그램 기초 강의
1. 파이썬 기초 입문자
2. 알고리즘 기초에서 수학 기초
3. 기초 코딩
4. Text RPG Project
[동영상강의]
while 문의 구조
반복해서 문장을 수행해야 할 경우 while 문을 사용합니다.
그러므로 while 문을 반복문이라고도 부릅니다.
<초기식> # 초기화
while <조건문>: # 조건식
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
while 문은 조건문이 참인 동안에 while 문 아래에 속하는 문장들이 반복해서 수행됩니다.
1부터 100까지 출력하는 것을 while 문으로 만들어 봅시다.
1, 2, 3, … , 98, 99, 100
>>> num = 1
>>> while num <= 100:
... print(num)
... num = num + 1 # num += 1
...
while num <= 100: # 숫자가 100보다 작거나 같으면 참이되어
# while 문 아래에 있는 문장들을 반복 수행합니다.
num = num + 1 # num += 1 로 사용해도 됩니다.
결과물은 아래와 같이 주욱 나옵니다.
1
2
3
...(생략)
96
97
98
99
100
다른 예로 TRPG 에 자주 사용되는 적을 잡을 때 체력을 감소시키는 알고리즘을
while 문으로 구현해 봅시다.
while.py
#while 문에서는 변수의 초기화를 해야 합니다.
enemy_health = 50 # 초기식
sword_damage = 10 # 초기식
while enemy_health > 0: # while 조건식
enemy_health = enemy_health - sword_damage
print('The enemy has {} health left.'.format(enemy_health))
if enemy_health == 0:
print("The enemy is dead.")
**.format() 사용법에 관해 간단하게 설명하고 갑니다. **
정확한 명칭은 str.format() 함수입니다.
format() 에 관해서는 다른 강의에서 다루기로 하고 지금은 while 문을 배우는 과정에서
format() 가 나오므로 해당하는 것만 잠깐 언급하고자 하는 것입니다.
% 와 동일한 기능을 지원하며, 변수의 타입과 상관없이 괄호와 숫자만 이용하면 됩니다.
%의 예로는 아래와 같습니다.
출력문 안쪽에 %s %d %f를 써주고, 출력구문 바로 %뒤에 변수명이나 값을 써줍니다.
print('Text %s'%var_char) # %s : 문자열
print('Number %d'%var_num) # %d : 정수
print('Float %f'%var_float) # %f : 부동소수점
이번 강의에서는 그냥 {} 괄호를 이용한 포맷팅 방법만 잠깐 언급하겠습니다.
>>> print("integer : {}, string : {}, float : {}".format(100, "str", 1.1))
inter : 100, string : str, float : 1.1
그러므로 while 문은 {} 괄호를 사용하고 .format(변수) 를 사용하여 {} 부분에 변수의 값이 찍히게
한 것입니다.
다음은 while 문이 반복되는 과정을 순서대로 정리한 표입니다.
enemy_health조건문조건판단수행하는 문장while문
50 | 50 > 0 | 참 | The enemy has 40 health left. | 반복 |
40 | 40 > 0 | 참 | The enemy has 30 health left. | 반복 |
30 | 30 > 0 | 참 | The enemy has 20 health left. | 반복 |
20 | 20 > 0 | 참 | The enemy has 10 health left. | 반복 |
10 | 10 > 0 | 참 | The enemy has 0 health left. The enemy is dead. | 반복 |
0 | 0 > 0 | 거짓 | 종료 |
while 문 강제로 빠져 나오기
while문은 조건문이 참인 동안 계속해서 while문 안의 내용을 반복적으로 수행합니다.
while 반복문으로 무한 루프를 만들어보겠습니다.
while True: # while에 True를 지정하면 무한 루프
print('Hello, world!')
무한히 Hello, world! 반복되어 나타납니다. Ctrl+C 로 끝냅시다.
Hello,world!
Hello,world!
Hello,world!
Hello,world!
Hello,world!
Hello,world!
Hello,world!
...(생략)
while 1: # 0이 아닌 숫자는 True로 취급하여 무한 루프로 동작
print('Hello, world!')
while 'Hello': # 내용이 있는 문자열은 True로 취급하여 무한 루프로 동작
print('Hello, world!')
이제 강제로 빠져나오게 하는 break 에 대해 배워 보겠습니다.
>>> num = 0
>>> while 1:
... print(num)
... if num == 10:
... break
... num += 1
...
break를 사용하면 반복문 전체를 빠져나오게 됩니다.
while 1: # 1 은 True 와 같은 것으로 참을 말합니다.
if num == 10: # num 이 10 이면
break # while 문 전체를 빠져 나옵니다.
0부터 10까지 출력이 됩니다.
0
1
2
3
4
5
6
7
8
9
10
이번에는 continue를 배워봅시다.
반복문 전체를 빠져나오는 것이 아니라 해당 조건만 건너뛰고 싶을 때 즉,
화면에 1부터 10까지 출력하는데 7인 경우에만 출력하지 않고 나머지는 출력이 되게 하고 싶을 때 사용할 수 있는 키워드가 바로 continue입니다.
>>> num = 0
>>> while num < 10:
... num += 1
... if num == 7:
... continue
... print(num)
1
2
3
4
5
6
8
9
10
7을 건너뛰고 출력이 되는 것을 볼 수 있습니다.
최대공약수에 while 문을 사용하여 구현하여서
짧게 기초적인 while문 사용법을 다뤘습니다. 최대공약수를 다시 돌아가서 코드를 보시면
이제 이해가 다 될 겁니다.
'Python > 닭치고 Algorithm' 카테고리의 다른 글
15강 최대공약수(Python Algorithm 15 GCD) (0) | 2021.03.22 |
---|---|
14강 계산기(Python Algorithm 14 calculator) (2) | 2020.04.04 |
13강 동명이인 찾기(Python Algorithm 13 person with the same name) (0) | 2020.04.02 |
12강 최댓값찾기(Python Algorithm 12 Maximum value) (4) | 2020.04.02 |
11강 재귀호출 sum(Python Algorithm 11 Recursive call sum) (0) | 2020.03.25 |
댓글