【发布时间】:2018-02-21 13:06:23
【问题描述】:
如果我定义:
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。那么当 for 循环说“嘿,我没有看到 'x' 或 'X',所以我可以返回 True”时,它在“查看”什么?
【问题讨论】:
-
因为您的逻辑测试是否至少有一个字母不是 x。只需手动运行您的代码,您就会明白为什么。
-
它在第一次迭代时返回,因为对您的
if语句的评估是 True 或 False,这显然是 True -
我已经修复了缩进
-
如果字符串中的任何字符不是'x'或'X',代码返回True
-
实际上,它总是会返回 True - 即使对于字符串 'xxxxx' 也是如此。它将返回 False 的唯一字符串是空字符串
""
标签: python loops for-loop return