为什么我的程序会这样做?

时间:2016-12-19 23:39:06

标签: python python-3.x

出于某种原因,无论用户回答什么,我的程序都会再次滚动骰子,并且不打印再见消息。

我将包含以下代码,以便您自己测试(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.")

程序的预期效果应该是,如果用户输入y,它会再次滚动骰子,分别再次启动整个程序。然而,如果用户输入no,那么它应该打印Goodbye消息。

1 个答案:

答案 0 :(得分:3)

or不起作用。现在你的程序正在评估(shouldwecontinue == "y") or "yes",并且由于Python将"yes"解释为真实,那么这个条件总是成功的。最简单的解决方法是将其更改为shouldwecontinue == "y" or shouldwecontinue == "yes"。当然,其他条件表达式也有类似的变化。