파이썬 기초

[ 파이썬 기초 ]16. while 문

외양간찾는 새끼소 2025. 3. 14. 16:50

1. 콩떡이를 찾아주세요 : while

for문을 배울 때 풀었던 문제 입니다. 다시 한번 풀어보죠!

- 강아지 이름이 들어있는 dog_list가 주어집니다.
- 강아지 이름이 “손콩떡” 이면 “찾았다!”를 출력해 주세요.
- 강아지 이름이 “손콩떡”이 아니면 “~는 손콩떡이 아니야”라고 출력해 주세요.
- 손콩떡을 찾았으면 더 이상 찾을 필요 없으므로 출력을 멈춰야 합니다.
dog_list = ["제리", "튼튼이", "김대호", "킹율", "히렌", "돌이", "손콩떡", "티아"]

# 코드를 작성해 주세요. 

< 정답 코드 >

for name in dog_list:
	if name == "손콩떡": # 손콩떡 찾음
		print("찾았다!")
		break

	print(f"{name}는 손콩떡이 아니야")

이런 문제를 풀 때 while을 사용할 수 있습니다. while은 for과 if를 더한 느낌이라고 생각하시면 됩니다.

while 조건 :
	코드

조건이 False가 되기 전까지 계속 반복하는 것이 while입니다.

이를 콩떡이 찾는 문제에 적용시키면 아래 코드와 같습니다.

cnt = 0
name = dog_list[cnt]

while name != "손콩떡":
	print(f"{name}는 손콩떡이 아니야")
	
	cnt += 1
	name = dog_list[cnt]

if name == "손콩떡":
	print("찾았다")

2. 무한으로 반복해요.

위 문제와 같이 for로 해결 할 수 있는 모든 문제를 while을 활용해서도 해결 할 수 있습니다. for로 해결할 수 있으면 for을 사용하면 되지 굳이 while을 사용해야 하는 이유는 무엇일까요?

while의 진가는 무한 반복에서 나타납니다. 이를 확인하기 위해 랜덤 숫자 맞추기 문제를 풀어 봅시다.

import random

random_num = random.randint(0, 30)
print(random_num)

위 코드를 실행하면 0이상 30이하 범위에서 랜덤하게 정수를 반환합니다.

이를 이용해서 랜덤값 맞추기 프로그램을 만들어 봅시다.

< 랜덤값 맞추기 프로그램 >
- 0이상 30이하의 랜덤 정수를 생성합니다.
- 사용자에게 0이상 30이하의 수를 입력 받습니다.
- 사용자의 입력이 랜덤 값과 동일하면 "맞췄습니다"를 출력합니다.
- 사용자의 입력이 랜덤 값 보다 크면 "더 작습니다. 다시 입력해 주세요."를 출력하고 다시 입력을 받습니다.
- 사용자의 입력이 랜덤 값 보다 작으면 "더 큽니다. 다시 입력해 주세요."를 출력하고 다시 입력을 받습니다.
- 맞출 때 까지 반복합니다.

< 정답 코드 >

import random

random_num = random.randint(0, 30)

while True:
	user_input = int(input())
	
	if user_input == random_num: # 맞췄다면
		print("맞췄습니다")
		break
		
	elif user_input > random_num: # 크게 예측 했다면
		print("더 작습니다. 다시 입력해 주세요.")
		
	else: # 작게 예측 했다면
		print("더 큽니다. 다시 입력해 주세요.")

이와 같이 while True를 통해 무한으로 반복하다가 특정 조건이 맞으면 break를 통해 반복을 멈출 수 있습니다. while문은 무한 반복을 하기위해 존재한다고 해도 과언이 아닙니다.