본문 바로가기
Python/닭치고 Algorithm

16강 while 문(Python Algorithm 16 while)

by OneHundredPlan 2021. 3. 22.
반응형

16강 while 문(Python Algorithm 16 while)

 

부제 : 알고리즘을 배우면서 파이썬 기초부터 RPG까지 정복

내용 : 초중고 또는 코딩 기초 입문자를 위한 누구나 따라 배울 수 있는 Python Algorithm 프로그램 기초 강의

 

1. 파이썬 기초 입문자

2. 알고리즘 기초에서 수학 기초

3. 기초 코딩

4. Text RPG Project

 

[동영상강의]

https://youtu.be/LrhydbiMO9E

Python-Algorithm-16-while문.pdf
0.14MB

 

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문 사용법을 다뤘습니다. 최대공약수를 다시 돌아가서 코드를 보시면

이제 이해가 다 될 겁니다.

댓글