Как закончить пока Loop с правильным ответом? - PullRequest
0 голосов
/ 06 февраля 2019

По сути, мой код не будет «заканчиваться».Я точно знаю, что что-то не так с тем, как я написал свой код, но я не знаю, где это исправить или изменить.Я пробовал так много разных вещей.

Так что я впервые пытаюсь написать «Угадайку».Мне кажется, что я не совсем понимаю, как использовать цикл while, потому что сколько бы раз я ни пытался дать правильный ответ, моя игра не остановится.Может кто-нибудь сказать мне, где я пошел не так?Большое спасибо.

#import random was used
answer = random.randint(1,101) #This is the answer for the specific game.
print(answer) #NEED TO DELETE THIS LINE AFTER Successful answer
print()
print()
print ("Enter a number!")
guess = int(input()) #Player guesses here.




while True:
    if guess == answer:
        print("YOU GOT THE ANSWER! WELL DONE")
        break

    elif guess <1 or guess > 100:
        print("OUT OF BOUNDS")
        break

    elif abs(guess - answer) <= 10 or abs(answer - guess) <= 10:
        print(input("WARM. YOU ARE GETTING CLOSER."))

    elif abs(guess - answer) > 10 or abs(answer - guess) > 10:
        print(input("COLD. TRY AGAIN."))

    else:
        print("ERROR")


Ожидаемый: я ожидал, что когда мое целое число == ответ при разных попытках, оно вернется к "ВЫ ПОЛУЧИЛИ ОТВЕТ! ХОРОШО СДЕЛАНО!".Факт: даже если я напишу фактический ответ, код просто бесконечно зацикливается.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вот очень упрощенный (не самый эффективный) подход к этому:

cycle = True 
while cycle: 
    if guess == answer:
        print("YOU GOT THE ANSWER! WELL DONE")
        cycle = False

    elif guess <1 or guess > 100:
        print("OUT OF BOUNDS")
        cycle = False

    elif abs(guess - answer) <= 10 or abs(answer - guess) <= 10:
        print(input("WARM. YOU ARE GETTING CLOSER."))

    elif abs(guess - answer) > 10 or abs(answer - guess) > 10:
        print(input("COLD. TRY AGAIN."))

    else:
        print("ERROR")`

Надеюсь, это поможет, счастливого обучения!

0 голосов
/ 06 февраля 2019

Когда вы принимаете входные данные:

    elif abs(guess - answer) <= 10 or abs(answer - guess) <= 10:
         print(input("WARM. YOU ARE GETTING CLOSER."))
    elif abs(guess - answer) > 10 or abs(answer - guess) > 10:
         print(input("COLD. TRY AGAIN."))

Вы не назначаете входные данные для переменной думаю , поэтому это всегда значение, которое вы вводите в начале и из-за этогопервый ответ будет повторен в цикле.

Измените этот фрагмент на:

elif abs(guess - answer) <= 10 or abs(answer - guess) <= 10:
    guess = int(input("WARM. YOU ARE GETTING CLOSER."))
elif abs(guess - answer) > 10 or abs(answer - guess) > 10:
    guess = int(input("COLD. TRY AGAIN."))

, чтобы переназначить угадать переменную, и он будет работать.

...