【问题标题】:python play again function executes first if [duplicate]如果[重复],python play again函数首先执行
【发布时间】: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


【解决方案1】:

使用

if playAgainx.lower() in ["y","yes"]:

而不是

if playAgainx == "Y" or "y" or "yes" or "Yes" or "YES":

这样 if 语句在 y 或 yes 的情况下为真(与它的大小写无关)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2018-12-16
    • 2011-10-29
    相关资源
    最近更新 更多