返回

python——为什么“a == x or y or z”总是计算为 True?我如何将“a”与所有这些进行比较?

发布时间:2022-09-07 09:13:27 203
# node.js

我正在编写一个安全系统,拒绝未经授权的用户访问。

name = input("Hello. Please enter your name: ")
if name == "Kevin" or "Jon" or "Inbar":
    print("Access granted.")
else:
    print("Access denied.")

它按预期授予授权用户访问权限,但也允许未经授权的用户进入!

Hello. Please enter your name: Bob
Access granted.

为什么会发生这种情况?我已经明确表示,只有在name等于凯文、乔恩或英巴。我也尝试过相反的逻辑,if "Kevin" or "Jon" or "Inbar" == name,但结果是一样的。


笔记:这个问题旨在成为这个非常常见问题的典型重复目标。还有一个流行的问题如何测试多个变量是否与单个值相等?这有着同样的根本问题,但比较目标是相反的。这个问题不应该重复这个问题,因为这个问题是Python新手遇到的,他们可能很难将反向问题中的知识应用到他们的问题中。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像