if语句在while循环内无法正常工作

时间:2019-07-08 12:48:08

标签: python

所以我正在用python做一个计算器,我在while循环中有它的代码,并提示询问用户是否要重新启动程序(while循环是为了什么),但它没有似乎工作正常,我缺少什么吗?我对编程有点陌生,所以也许有些公然的错误我根本没有看到。 (我没有添加完整的代码,但确实导入了必要的库(“ sys”和“ math”))

var1 = True

while var1 == True:

    op = eval(input("\n Your operation: "))

    print(f"\n The result would be: {op}")

    var2 = input("\n Would you like to do another operation? If so type yes: ")

    if var2 != "yes" or "Yes" or "YES" or "y" or "Y" or "1":
        print("\n Ok then, exiting... \n")
        sys.exit()

因此,如果用户在提示符下键入“ yes”,则应重新启动程序,但无论如何条件都不会执行,它仍将执行if语句并关闭程序。

我尝试添加这样的“ else”语句:

if var2 != ... :
   sys.exit()
else:
   print("Restarting...")

但它似乎也不起作用。

我还尝试了另一种方法,即不检查它是否不匹配,而是检查它是否匹配。像这样:

if var2 == ... :
   print("Restarting...")
else:
   sys.exit()

但这只是陷入了while循环中,并没有关闭程序。

我只是看不出代码有什么问题。

正确的做法是:

if var2.lower() not in ("yes", "1"):
   print("Ok then, exiting...")
   sys.exit()

1 个答案:

答案 0 :(得分:0)

您的逻辑是倒退的,如果它是ISNT,则需要退出,而不是使用或(加上您使用不正确)使用in,而不是键入是的所有不同变体,请使用star.lower()

var1 = True

while var1 == True:

    op = eval(input("\n Your operation: "))

    print(f"\n The result would be: {op}")

    var2 = input("\n Would you like to do another operation? If so type yes: ")

    if var2.lower() not in ("yes", "1"):
        print("\n Ok then, exiting... \n")
        sys.exit()