当前位置: 首页 > 知识库问答 >
问题:

为什么用`或`检查一个变量的多个值时只检查第一个值?[副本]

岳良策
2023-03-14
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"

共有1个答案

曾典
2023-03-14
("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"
# Test whether the value of name can be found in the tuple ("Jesse", "jesse")
if name in ("Jesse", "jesse"):
# This will also handle inputs such as "JeSSe", "jESSE", "JESSE", etc.
if name.lower() == "jesse":
 类似资料:
  • 问题内容: 我想检查一个变量是否具有多个值之一。我对为什么在这种情况下不起作用感到困惑。我正在按照给出该示例的教程进行操作,但是当我尝试执行此操作时,它只会根据第一个值检查变量。我的支票怎么了? 问题答案: (“Jesse” or “jesse”) 上面的表达式测试是否评估为。如果是这样,则表达式将返回它;否则,它将返回。该表达式等同于编写: 因为是一个非空字符串,所以它将 始终 求值为并因此返回

  • 我的程序中有一个变量,它可以从值集中取任何值 我的目标是只在不是、、或时执行一些语句。 我试过了, > 对于类C语言(等式运算符比较实际字符串值;例如C#、javascript、php) 对于类Pascal语言(如plsql) 条件中的语句总是被执行。我做错什么了吗?

  • 是否有更简单的方法来确定变量是否等于一系列值,例如: 而不是像这样迟钝的事情: ?

  • 我正在努力解决这个问题。工作内容:我想打印表中的所有3行(将附上示例),并在EID列中显示值。 我想测试EID1(第一行)的值是否以8开头。(完成) 我想测试CID1(第一行)的值是否以“M”开头。(完成) 现在我想循环整个表,并检查每一行的以下条件,例如:(Done) 如果EID1= 我得到以下错误:无法调用“String.startsWith(String)”,因为java的返回值。util。

  • 问题内容: 我试图获取许多列中的第一个非空值。我知道我可以使用每列的子查询来完成此操作。以性能的名义(在这种情况下确实很重要),我想一次完成。 以以下示例数据为例: 我的梦想查询将在每个数据列中找到第一个非null值,并按排序。 例如,选择第一三列的神奇骨料时,排序由所述下降。 或升序排序时: 有人知道解决方案吗? 问题答案: 可以与一起使用。是必需的,因为SQL Server首先对null进行排