python循环内返回
如果我定义:python循环内返回,python,loops,for-loop,return,Python,Loops,For Loop,Return,如果我定义: 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语句中不返回任何内容,因为如果s不是字符串,它只返回FalseIf。所以,当for循环说“嘿,我没有看到'x'或'
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语句中不返回任何内容,因为如果s
不是字符串,它只返回False
If。所以,当for循环说“嘿,我没有看到'x'
或'x'
,所以我可以返回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'))
如果输入字符串中的所有字符不等于“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'))
在for循环中遍历字符串中的每个字符。所以它是在看每个角色。当这些if语句为真时,您的循环正在寻找的几乎就是
但是,使用或如果其中一个为true,则整个事件的条件计算结果为true,因此使用并确保这两个语句都为true在for循环中遍历字符串中的每个字符。所以它是在看每个角色。当这些if语句为真时,您的循环正在寻找的几乎就是
但是,使用或如果其中一个为真,则整个事件的条件计算结果为真,因此使用并确保这两个语句都为真
if c!='x' or c!='X':
这是一个带有两个术语的布尔表达式
和c!='x'
c!='X'
或
运算符时,如果任一项的计算结果为True,则整个表达式的计算结果为True。如果表达式的计算结果为True,则执行If
语句的主体(在本例中为return True
)
以下是或表达式(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
分支
因此,当函数检查所提供字符串中的第一个字符时,它将返回True
此函数返回False的唯一方法是
- 如果提供的不是
str
- 如果提供了空字符串-因为从未输入
循环的
让我们只关注if语句
if c!='x' or c!='X':
这是一个带有两个术语的布尔表达式
c!='x'
和
c!='X'
在使用或
运算符时,如果任一项的计算结果为True,则整个表达式的计算结果为True。如果表达式的计算结果为True,则执行If
语句的主体(在本例中为return True
)
以下是或表达式(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
分支
因此,当函数检查所提供字符串中的第一个字符时,它将返回True
此函数返回False的唯一方法是
- 如果提供的不是
str
- 如果提供了空字符串-因为从未输入
循环的
因为您的逻辑测试是否至少有一个字母不是x。只要手动运行您的代码,您就会明白原因。它会在第一次写入时返回,因为对if
语句的求值为True或False,这显然是真的。我已经修复了缩进。如果字符串中的任何字符不是“x”或“x”,代码将返回True。实际上,它将始终返回True-即使对于字符串“xxxxx”。它将返回False的唯一字符串是空字符串“”
,因为您的逻辑测试是否至少有一个字母不是x。只要手动运行您的代码,您就会明白原因。它会在第一次写入时返回,因为对if
语句的求值为True或False,这显然是真的。我已经修复了缩进。如果字符串中的任何字符不是“x”或“x”,代码将返回True。实际上,它将始终返回True-即使对于字符串“xxxxx”。它将返回False的唯一字符串是空字符串“
”,如果您正确解释了OP的意图,则此字符串有效。然而,他们实际上在问为什么他们的代码总是返回True。见我的回答如果你正确解释了OP的意图,这是有效的。然而,他们实际上在问为什么他们的代码总是返回True。查看我的答案查看我的答案-if语句对所有字符的计算结果均为true。现在我看到,此人很可能必须使用并获得这两种情况。。但是函数名没有帮助。如果“字符串中没有X”或“字符串中有X以外的内容”,函数是否返回True?这就是为什么我要集中精力解释他们看到的结果。请看我的答案-if语句对所有字符的计算结果都是真的。现在我明白了,这个人很可能必须使用和获得这两种情况。。但是函数名没有帮助。如果“字符串中没有X”或“字符串中有X以外的内容”,函数是否返回True?这就是为什么我要集中精力解释他们看到的结果。谢谢你花时间做这件事!这是非常有用的。谢谢你花时间做这件事!这很有帮助。