2024-09-27 02:27:08 发布
网友
如果我定义:
def hasNoX_2(s): if type(s)!=str: return False for c in s: if c!='x' or c!='X': return True return False
然后输入hasNoX_2('Xenon'),True返回,我不知道为什么。第一个If语句中没有返回任何内容,因为它只返回FalseIf{}不是字符串。当for循环说“嘿,我看不到'x'或{},所以我可以返回True时,它在看什么呢在
hasNoX_2('Xenon')
True
False
'x'
我们只关注if语句
if c!='x' or c!='X':
这是一个包含两个项的布尔表达式
c != 'x'
c != 'X'
当您使用or运算符时,如果任一项的计算结果为True,则整个表达式的计算结果为True。如果表达式的计算结果为True,则执行if语句的主体(在本例中为return True)。在
or
if
return True
这是or表达式(A或B)的标准真值表
如您所见,结果是False只有在这两个条件都为False时
让我们看看表达式如何计算每种类型的输入
c | c != 'x' | c != 'X' | or expression | 'x' | False | True | True | 'X' | True | False | True | any other character | True | True | True |
简而言之,您的表达式将始终求值为True,并且始终采用if分支。在
因此,当函数检查提供的字符串中的第一个字符时,return True。在
此函数返回False的唯一方法是
str
for
在for循环中迭代字符串中的每个字符。所以它要看每个角色。当那些if语句为真的时候,你的循环几乎都在寻找。在
但是,如果使用或如果其中一个为真,则整个条件的计算结果为true,因此请使用并确保这两个语句都为true
如果输入字符串中的所有字符都不等于“x”或“x”,我支持您尝试实现True。在
如果是这样,您只需使用以下代码:
def hasNoX_2(s): if isinstance(s, str): return 'x' not in s.lower() return False print(hasNoX_2('Xenon')) print(hasNoX_2('eenon'))
我们只关注if语句
这是一个包含两个项的布尔表达式
c != 'x'
和c != 'X'
当您使用
or
运算符时,如果任一项的计算结果为True,则整个表达式的计算结果为True。如果表达式的计算结果为True,则执行if
语句的主体(在本例中为return True
)。在这是
^{pr2}$or
表达式(A或B)的标准真值表如您所见,结果是
False
只有在这两个条件都为False时让我们看看表达式如何计算每种类型的输入
简而言之,您的表达式将始终求值为True,并且始终采用
if
分支。在因此,当函数检查提供的字符串中的第一个字符时,
return True
。在此函数返回False的唯一方法是
str
以外的内容for
循环。在在for循环中迭代字符串中的每个字符。所以它要看每个角色。当那些if语句为真的时候,你的循环几乎都在寻找。在
但是,如果使用或如果其中一个为真,则整个条件的计算结果为true,因此请使用并确保这两个语句都为true
如果输入字符串中的所有字符都不等于“x”或“x”,我支持您尝试实现True。在
如果是这样,您只需使用以下代码:
相关问题 更多 >
编程相关推荐