파이썬 숫자맞추기 정답을 맞췄을 때 while 루프 나오기
조회수 2314회
정답일때만 시행을 멈추는 코드를 작성하려고 하는데 이대로 시행하면 시도횟수가 무한대로 나오는데 tries=tries+1
위치를 어디다 둬야 할까요?
import random
tries=0
num=random.randint(1,100)
print("1부터 100 사이의 숫자를 맞추시오")
g=int(input("숫자를 입력하시오: "))
while True :
tries=tries+1
if g>num:
g=int(input("%d보다 작은 숫자로 맞춰보세요: "%g))
elif g<num:
g=int(input("%d보다 큰 숫자로 맞춰보세요: "%g))
else :
print("축하합니다! 시도횟수=",tries)
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
숫자를 종료했을 때 while loop에서 빠져나가는 부분이 없어서 그렇습니다.
정답을 찾고 나서는 항상
g == num
이 성립하는데 그 상태에서tries
에 1을 더하는 부분과tries
를 출력하는 부분이 끊임없이 실행되고 있습니다.else
부분 마지막에 break를 넣으시면 해결됩니다.덧붙여서, while loop를 사용할 때 일단
while True:
부터 쓰시는 경우가 많은데, 명확하게 loop가 끝나는 조건이 있을 경우 break를 사용하는 것보다는while
의 조건에 이를 명시해 주는 것이 좋습니다.import random tries=0 num=random.randint(1,100) print("1부터 100 사이의 숫자를 맞추시오") g=int(input("숫자를 입력하시오: ")) while g != num: tries=tries+1 if g>num: g=int(input("%d보다 작은 숫자로 맞춰보세요: "%g)) elif g<num: g=int(input("%d보다 큰 숫자로 맞춰보세요: "%g)) else : print("축하합니다! 시도횟수=",tries)
댓글 입력