我想检查一个变量是否具有多个值之一。我对为什么or
在这种情况下不起作用感到困惑。我正在按照给出该示例的教程进行操作if (a or b):
,但是当我尝试执行此操作时,它只会根据第一个值检查变量。我的支票怎么了?
name = raw_input('Please type in your name:')
if len(name) < 5:
print "Your name has fewer than 5 characters"
elif len(name) == 5:
print "Your name has exactly 5 characters"
if name == ("Jesse" or "jesse"):
print "Hey Jesse!"
else:
print "Your name has greater than 5 characters"
(“Jesse” or “jesse”)
上面的表达式测试是否"Jesse"
评估为True
。如果是这样,则表达式将返回它;否则,它将返回"jesse"
。该表达式等同于编写:
"Jesse" if "Jesse" else "jesse"
因为"Jesse"
是一个非空字符串,所以它将 始终 求值为True
并因此返回:
>>> bool("Jesse") # Non-empty strings evaluate to True in Python
True
>>> bool("") # Empty strings evaluate to False
False
>>>
>>> ("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"):
或者,您可以小写name
with的值,str.lower
然后将其"jesse"
直接与进行比较:
# This will also handle inputs such as "JeSSe", "jESSE", "JESSE", etc.
if name.lower() == "jesse":
问题内容: 我有一个filename(),然后需要用“-” 分配给文件类型。目前,无论文件类型如何,我总是会得到。 为什么使用OR运算符的if语句不起作用? 问题答案: 该逻辑 (OR)运算符 如您预期的工作不工作。该运营商始终计算结果为布尔TRUE或FALSE。因此,在您的示例中,您的字符串将转换为布尔值,然后进行比较。 如果声明: 归结为: 要解决此问题并使代码按您希望的方式工作,可以使用其他
我的程序中有一个变量,它可以从值集中取任何值 我的目标是只在不是、、或时执行一些语句。 我试过了, > 对于类C语言(等式运算符比较实际字符串值;例如C#、javascript、php) 对于类Pascal语言(如plsql) 条件中的语句总是被执行。我做错什么了吗?
问题内容: 我有这种方法,可以在登录前检查用户名和密码。现在,我的for循环仅检查第一个项目,它发现第一个项目不满足第一个条件,因此与其去检查第二个项目,它只是中断并返回null。 为什么会这样? 这是我的方法: 问题答案: 因此,请尝试此代码。
通常,我可以看到如下代码结构: 我想知道是否有任何广泛使用的库(Google、Apache等)可以同时检查多个对象的空性,例如: 或 更新: > 我完全知道怎么自己写 我知道这可能是程序结构不佳的结果,但在这里不是个案 让我们使它更具挑战性,并用这样的内容替换原始示例: 更新2: 我已经为Apache Commons Lang库创建了一个pull请求,以修复这个漏洞: 问题:https://iss