Проблемы с циклами while (Python 2.7) - PullRequest
0 голосов
/ 27 апреля 2018

У меня проблемы с петлями. Это для одного из моих проектов: Напишите программу, которая предлагает пользователю угадать ваше имя. Программа следует продолжать спрашивать, пока пользователь не угадает имя правильно. Когда правильный выбор сделан, отправьте поздравительное сообщение пользователю. пользователю говорят, что он / она имеет только десять догадок. Цикл должен завершиться, когда пользователь правильно угадал имя или сделал десять неправильных догадок?

Проблема в том, что когда я в цикле while, я набираю «Имя», он все равно регистрирует, что я ошибся.

Вот что у меня сейчас есть:

count = 0
print "Hello. I have a name inside my head. Please guess what name it is."
text = raw_input ("What is your answer? ")
while (text != "Name"):
    count = count + 1
    attempt = 10 - count

    if count >= 10:
        print "That is the maximum amount of attempts allowed. Sorry!"
        stopper = raw_input ("Thanks for playing!")

    if count < 10:
        print "Sorry, that is not the answer. You have", attempt, "more attempts."
        newText = raw_input ("What is your next guess? ")


if (text == "Name"):
    print "Amazing. You got it correct!"

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вам необходимо внести несколько изменений в свой код:

(1) Замените new_text на text, чтобы значение text обновлялось на каждой итерации.

(2) Выход из цикла while, когда пользователь достиг максимального числа попыток.

(3) Нет смысла просить пользователя ввести текст, когда счетчик достиг максимума, поэтому вместо получения raw_input просто print "Thanks for playing!".

Вот обновленный код, который работает:

count = 0
print "Hello. I have a name inside my head. Please guess what name it is."
text = raw_input ("What is your answer? ")
while (text != "Name" and count < 10):
    count = count + 1
    attempt = 10 - count

    if count >= 10:
        print "That is the maximum amount of attempts allowed. Sorry!"
        print "Thanks for playing!"

    if count < 10:
        print "Sorry, that is not the answer. You have", attempt, "more attempts."
        text = raw_input ("What is your next guess? ")

if (text == "Name"):
    print "Amazing. You got it correct!"
0 голосов
/ 27 апреля 2018

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

count = 0
print("Hello. I have a name inside my head. Please guess what name it is.")
text = input("What is your answer? ")
while (count<12):
    count = count + 1
    attempt = 10 - count

    if (text == 'Name'):
        print("Amazing. You got it correct!")
        count = 12

    if count >= 10:
        print("That is the maximum amount of attempts allowed. Sorry!")
        stopper = input ("Thanks for playing!")

    if count < 10:
        print ("Sorry, that is not the answer. You have", attempt, "more attempts.")
        text = input ("What is your next guess? ")
...