关于 python 中的 or 运算符的基本问题

A basic question regarding or operator in python

我很困惑为什么无论用户输入什么,消息总是像 'Welcome xxx' 那样弹出。

username = input('Please enter your username: ')

if username == 'admin' or 'Admin' or 'ADMIN':
    print(f'Welcome {username}')

抱歉,我知道这似乎是一个愚蠢的问题,但希望它能帮助像我这样的初学者更好地理解或操作 python。

感谢您的帮助。

您想参加:

if username == 'admin' or username == 'Admin' or username =='ADMIN':

这里发生的事情是把 Python 当作一种口头语言。

你打算用什么:

if username == 'admin' or 'Admin' or 'ADMIN':
    # stuff

是指:

if <condition>:

"condition" 如果用户名是 'admin'、'Admin' 或 'ADMIN'。

但这不是 python 的工作方式。 Python 读取

if username == 'admin' or 'Admin' or 'ADMIN':
    # code

作为

if <condition 1> or <condition 2> or <condition 3>: 
    # code

--

Condition 1: username == 'admin' is FALSE.

--

Condition 2: 'Admin' is TRUE. This is because 'Admin' is a string literal object, which exists, and is non-zero, not null, and not empty, and therefore true.

这就像去

myString = "any string"

if myString:
    # code is executed because myString is not empty.

但你却在做

if 'my string': 
    # this code would run.

--

Condition 3: 'ADMIN' is TRUE, for the same reason Condition 2 is TRUE.

--

这里发生的事情是 if 条件始终为真,无论输入什么。 因为

if username == 'admin' or 'Admin' or 'ADMIN':
    # code

评估为

if FALSE or TRUE or TRUE:
    # code

因此,将始终评估为真并打印 username 变量中的任何内容,即使它不是 'admin'.