当我对输入说"n"或"否"时,如果工作正常,但当我对输入说"y"或"是"时,它只是做与"否"相同的事情。 除此之外,程序中的其他所有内容都可以完美运行。 我完全不知道为什么会发生这种情况。
def restart():
replay = input("Do you want to restart? (Y/N): ")
if replay.lower() == "n" or "no":
print("exiting")
sys.exit()
if replay.lower() == "y" or "yes":
calc()
else:
print("Unknown Command")
restart()
restart()
if 语句中的条件没有按照您认为的方式进行评估。当您使用像 or 这样的逻辑运算符时,它首先计算 or 之前的部分,然后计算 or 之后的部分,如果任一为真,则整个语句为真。
所以而不是
if replay.lower() == "n" or "no": #always runs because just "no" evaluates as being true
用
if replay.lower() == "n" or replay.lower == "no":
并对测试"是"的 if 语句进行类似的更改。
替换这个:
if replay.lower() == "n" or "no":
print("exiting")
sys.exit()
if replay.lower() == "y" or "yes":
calc()
有了这个:
if replay.lower() == "n" or replay.lower() == "no":
print("exiting")
sys.exit()
if replay.lower() == "y" or replay.lower() == "yes":
calc()