본문 바로가기
개발/파이썬

파이썬 반복문 - python while문

by 티포스터 2021. 5. 16.
728x90

파이썬 반복문 중에서 while문에 대해 알아보자.

파이썬 for문은 이전 글에서 참고 - 2021.05.05 - [개발/파이썬] - 파이썬 반복문 - python for문

 

파이썬 while문의 기본 구조는 아래와 같다.

 

while 조건문:
	code
    ...

 

Python while문은 for문 보다 반복하는 행위가 구체적이지 않을 때 사용하면 좋다.

- 리스트 A가 있고 이 A의 모든 원소에 특정 연산을 하고 싶다면? for문이 좋을 듯 하다.

- 원격으로 프로그램에 접속하려는데, 접속 까지 대기시간을 정확히 알 수 없다면? while문이 좋겠다.

 

while문의 대표적인 사용법은 무한루프다.

 

while True:
	print("Hello")

결과화면
Hello
Hello
...
...

 

True는 불(bool) 자료형이다. True - 참, False - 거짓으로 while True는 참이 되어 무한대로 반복문을 수행한다.

프로그램에 따라 진짜 무한루프를 돌며 실행되는 경우도 있지만, 일반적으로는 무한루프를 빠져나올 필요가 있다.

앞서 for문 글에서 나온 것처럼 break를 이용하여 while문을 중단할 수 있다.

 

# break: 반복문 중단

 

cnt = 0
while True:
    print("Hello")
    cnt = cnt + 1
    if cnt == 3:
        break
    
결과화면
Hello
Hello
Hello

 

물론 위와 같은 반복문은 굳이 while문을 사용하지 않아도 된다.

또한, 무조건 참인 True를 사용하지 않고 아래와 같이 조건식을 넣을 수 있다.

 

cnt = 0
while cnt != 3:
    print("Hello")
    cnt = cnt + 1
    
결과화면
Hello
Hello
Hello

 

앞서 말한 것 처럼 while문은 불확실성이 있을 때 사용하면 좋은데 그런예를 보자.

random으로 특정 값이 나올 때, 반복문을 탈출하게끔 만들고 싶다면? 아래와 같이 코딩을 할 수 있다.

 

import random
from time import sleep

while True:
    num = random.randint(0, 10)
    print("rand num: {0}".format(num))
    if num == 5:
        print("exit")
        break
    sleep(1)
    
결과화면
rand num: 4
rand num: 9
rand num: 5
exit

 

이제 Python for문, while문에 대해 모두 공부했으니, 아래와 같이 조합해서 사용할 수도 있다.

 

import random
from time import sleep

while True:
    num = random.randint(0, 10)
    print("rand num: {0}".format(num))
    
    for i in range(num):
        print("*", end=' ')
    print()
    
    if num == 0:
        print("exit")
        break
    sleep(1)
 
결과화면
rand num: 6
* * * * * * 
rand num: 3
* * * 
rand num: 3
* * * 
rand num: 2
* * 
rand num: 10
* * * * * * * * * * 
rand num: 5
* * * * * 
rand num: 0

exit
728x90

'개발 > 파이썬' 카테고리의 다른 글

파이썬 함수 - python def  (0) 2021.06.05
파이썬 조건문 - python if문  (1) 2021.05.29
파이썬 반복문 - python for문  (0) 2021.05.05
파이썬 크롤러 만들기 #1  (0) 2021.04.10
파이썬 설치 (with 파이참)  (0) 2021.03.31