(“Jesse” or “jesse”)
上面的表达式测试是否
"Jesse"评估为
True。如果是这样,则表达式将返回它;否则,它将返回
"jesse"。该表达式等同于编写:
"Jesse" if "Jesse" else "jesse"
因为
"Jesse"是一个非空字符串,所以它将 始终 求值为
True并因此返回:
>>> bool("Jesse") # Non-empty strings evaluate to True in PythonTrue>>> bool("") # Empty strings evaluate to FalseFalse>>>>>> ("Jesse" or "jesse")'Jesse'>>> ("" or "jesse")'jesse'>>>
这意味着表达式:
name == ("Jesse" or "jesse")
基本上等同于编写此代码:
name == "Jesse"
为了解决您的问题,您可以使用
in运算符:
# Test whether the value of name can be found in the tuple ("Jesse", "jesse")if name in ("Jesse", "jesse"):
或者,您可以小写
namewith的值,
str.lower然后将其
"jesse"直接与进行比较:
# This will also handle inputs such as "JeSSe", "jESSE", "JESSE", etc.if name.lower() == "jesse":