Почему этот сценарий повторяется? - PullRequest
1 голос
/ 15 марта 2020

Я пытаюсь научить себя python, я недавно узнал, как использовать необработанный ввод в операторе if (yes или no). Однако, когда я отвечаю yes, программа спрашивает меня тоже самое, если вопрос.
Может кто-нибудь помочь? Я не очень хорош в программировании, но люблю это делать.

import time
name = raw_input("what is your name? ")
print "Hello " + name
#yes no statement with raw input
while True:
        yesno = raw_input("would you like to play hangman?")
        if yesno.lower().startswith("n"):
                print("ok bye")
                exit()
        elif yesno.lower().startswith("y"):
                print("cool, let me prep for e second")
                time.sleep(5)
# this is where it goes wrong
# below is what is supposed to follow
word = "kaasblok"
guesses = ''
turns = 6
while turns > 0:

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Если вы используете некоторое время true l oop, ваша программа продолжит работу.

В Python вкладки или пробелы сообщают интерпретатору, когда al oop заканчивается.

Итак, что происходит в вашем коде:

Когда True работает, он спрашивает, хотите ли вы играть. Если вы пишете no, он работает как задумано. Если вы пишете yes, он видит, что l oop закончилась, поэтому он перезапускается.

Также в вашем коде есть несколько ошибок, например синтаксис из Python 3 и Python 2, и некоторое время l oop, которое не завершается.

Я написал несколько обновлений, чтобы код работал, но это не «хороший» код, потому что я старался сделать его как можно более похожим. Также я выбрал синтаксис (python 3), поэтому обязательно измените его, если вы используете Python 2.

Я рекомендую вам модульно кодировать и смотреть на код других людей, это сделает твой код лучше. Старайтесь не использовать некоторое время True l oop, по крайней мере, в начале. Код, который я написал, пытается решить эту проблему, но он, вероятно, не делает такой большой работы.

Может быть, попробуйте немного отредактировать код и позже обновить его ответом? Я думаю, что вы хотели написать ввод, а не raw_input, но, возможно, именно так вы и поступите в Python 2. Вы действительно должны научиться Python 3, если вы пытаетесь выбрать Python btw как Python 2. В конце жизненного цикла.

Поместите свою игру в l oop, и она запустится. Попробуйте что-то вроде этого:

import time
name = input("what is your name? ")
word = "kaasblok"
turns = 6

print("Hello " + name)
#yes no statement with raw input
trueorfalse = True
while trueorfalse:
        yesno = input("would you like to play hangman?")
        if yesno.lower().startswith("n"):
                print("ok bye")
                #trueorfalse = False
                break
        elif yesno.lower().startswith("y"):
                print("cool, let me prep...")
                time.sleep(1)
# Place your code in the elif block
                while turns > 0:
                    guess = input("what is the word")
                    if guess == word:
                        print('win')
                        #trueorfalse = False
                        break

                    else:
                        turns -=1
                        print("you have these many turns left", turns)
                print("you lost")
                break
0 голосов
/ 15 марта 2020

Все, чего не хватает, это способ вырваться из времени l oop. Итак, используйте команду break.

import time
name = raw_input("what is your name? ")
print "Hello " + name
#yes no statement with raw input
while True:
        yesno = raw_input("would you like to play hangman?")
        if yesno.lower().startswith("n"):
                print("ok bye")
                exit()
        elif yesno.lower().startswith("y"):
                print("cool, let me prep for e second")
                time.sleep(5)
                break # <-- break out of of the current loop

print "made it!"
...