python - 如何在 if/else 子句中正确使用 != 符号?

标签 python comparison equality boolean-logic

问题:如果用户输入单词!=“加密”或“解密”,我尝试再次调用ask_user(),但当输入正确时会出现相同的错误消息。

def ask_user():
    while True:
        mode = input("Would you like to encrypt or decrypt:   ")
        if mode != 'encrypt' or mode != 'decrypt':          
            print("Please retry; you must type lowercase. \n")
            ask_user()

        else:
            message = input("Enter your message:   ")

似乎在同一行上使用多个 != 语句并不像我想象的那样工作:

# test to support above observ.
for n in range(4):
    if n != 2 or n != 3:
        print('me')
    else:
        print(n)

我应该如何更改代码来解决这个问题?

最佳答案

您的问题是您使用的是 or 而不是 and。 如果您考虑一下代码是如何解释的:

假设mode=“加密”。一步一步:

mode != 'encrypt' 计算结果为 false。到目前为止一切都很好。

然而,

mode != 'decrypt' 的计算结果为true。这是一个问题。

发送到 if 的最终表达式将为:false 或 true。最后,计算结果为 true,导致进入 if block 。

将其更改为意味着必须检查两种无效模式true才能进入 block 。

关于python - 如何在 if/else 子句中正确使用 != 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326781/

相关文章:

python - Django 错误有时会发生

python panda 计算滚动平均值

python - 移动 3D numpy 数组

python - 比较本地文件与远程文件

Java 数据库编程 - 为什么这些值不是 "equal"?

python - Pandas 中的条件求和

python - __eq __()多次调用,而不是在嵌套数据结构中一次调用

java - int 与 long 比较会损害 Java 的性能吗?

c++ - 检查两个数组是否相等

javascript - 对象和原始类型相等