2016-12-19 2 views
1

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

Я буду включать код, приведенный ниже, так что вы можете проверить себя (Python 3)

from random import randint 

def rollthedice(): 
    print("The number you rolled was: "+ str(randint(1,6))) 

rollthedice() 

shouldwecontinue = input("Do you wish to roll again? (y or n) ").lower() 

if shouldwecontinue == "y" or "yes": 
    rollthedice() 

elif shouldwecontinue == "n" or "no": 
    print("Goodbye.") 

elif shouldwecontinue != type(str): 
    print("Sorry the program only accepts 'y' or 'n' as a response.") 

желаемый эффект программы должен быть, что если пользователь вводит у, он бросает кости снова, соответственно, начиная всю программу снова. Принимая во внимание, что если пользователь не вводит, он должен печатать сообщение Goodbye.

+1

Мы видим эту ошибку почти каждый день на SO, это очень распространено. Используйте 'if shouldwecontinue in (" y "," yes "):' вместо этого. –

+1

@PaulRooney - Почти каждый день? Больше похоже на несколько раз в день. >.> – TigerhawkT3

+0

И, OP, вы можете рассмотреть вопрос, который не может технически применяться к каждому вопросу на сайте. Если вы читали раздел по устранению неполадок руководства, насколько это было бы полезно, если бы в оглавлении было 20 одинаковых записей, помеченных как «когда что-то пошло не так, и вы хотите его исправить»? – TigerhawkT3

ответ

3

or не работает подобный. Сейчас ваша программа оценивает (shouldwecontinue == "y") or "yes", и поскольку Python интерпретирует "yes" как правдивую, то это условие всегда выполняется успешно. Самое простое исправление - изменить его на shouldwecontinue == "y" or shouldwecontinue == "yes". И тогда аналогичные изменения для других условных выражений, конечно.

+0

Ах, я не могу поверить, что я наблюдал за этим, мой плохой. Спасибо дружище! –

+1

... или более Pythonically 'if shouldwecontinue in (" y "," yes "):' –

+0

@LeeDanielCrocker или даже 'if shouldwecontinue в {" y "," yes "}:'. И да, это не очень важно :-) –

Смежные вопросы