【发布时间】:2020-03-13 17:35:15
【问题描述】:
我已导入 sys 并创建了一个“再次播放”函数,该函数被正确调用并输出到屏幕。但是,无论给出什么输入,该函数都会执行os.execl(sys.executable, sys.executable, *sys.argv)。
def playAgain():
print("would you like to play again? Y/N :")
playAgainx = input()
if playAgainx == "Y" or "y" or "yes" or "Yes" or "YES":
os.execl(sys.executable, sys.executable, *sys.argv)
elif playAgainx == "n" or "N":
sys.exit()
else:
print("invalid input")
playAgain()
【问题讨论】:
-
if playAgainx == "Y" or "y" or "yes" or "Yes" or "YES":这并不像您认为的那样。 -if playAgainx in ["yes, "y", "YES"]会做你想做的事。 -
在 Python 中
if playAgainx == "Y" or "y" or "yes" or "Yes" or "YES":将始终计算为 True,因为 Python 中的非空字符串计算为 True。要做你想做的事,你需要在所有选项前面添加playAgainx ==...所以就像```playAgainx == "Y" 或 playAgainx == "y" 或 playAgainx == "yes"..等等。 -
另外,使用字符串方法
lower会将要测试的案例数量减少到两个。 -
您需要提供所有出现的语句:如果 playAgainx == "Y" 或 playAgainx == "y" ... 等等。问题是:转换后的“yes”的布尔值是真的,因此“if”中至少有一个语句是真的并且它输入了它。
标签: python