파이썬 숫자맞추기 정답을 맞췄을 때 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)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)