比较!=不像我所说的那样工作

2024-09-28 05:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个:

salir = ""
while  salir != "s" or salir != "S":
       print("no has salido")
       salir = input("Digit s to exit or enter to continue)
print("saliste")

但是接线员!=不起作用,但如果我这样说:

salir = ""
while  not (salir == "s" or salir == "S"):
       print("no has salido")
       salir = input("Digit s to exit or enter to continue")
print("saliste")

代码工作正常,问题是比较运算符!因为如果我改成“not=”,这就行了。有人能解释这个问题吗?你知道吗


Tags: ortonoinputexitnothasprint
3条回答

要计算的表达式总是返回True

salir != "s" or salir != "S" == True  # always

如果用户输入's',那么salir != "S"

如果用户输入'S',那么salir != "s"

如果您想拆分这两个案例(而不是调用lower()方法),可以使用循环

while  salir != "s" and salir != "S":
    # Do stuff

根据德莫根定律,这相当于

while  not (salir == "s" or salir == "S"):
    # Do stuff
while  salir != "s" or salir != "S":

如果salir是“s”它不同于“s”,如果是“s”,它不同于“s”。 所以,你的条件总是正确的。你知道吗

如果我们把字母改一下,就更容易理解了。你知道吗

当萨利尔!=“a”或salir!=“b”:

虽然变量不同于a或b,但它总是不同于两个选项中的一个,因此条件总是正确的。你知道吗

您只需更改变量的大小写即可进行单个比较,如:

while salir.lower() != "s":

您还可以执行以下操作:

salir = ""
while True:
  print("no has salido")
  salir = input("Digit s to exit or enter to continue")
  if salir.lower() == "s": break
print("saliste")

相关问题 更多 >

    热门问题