在教程中,第二个返回语句的缩进级别(返回False)正好位于循环的下方,因此在循环之外。 它不应该在for循环中吗?
nix-shell -p coq_8_6 --run coqide
我有另一个片段,其中相同的缩进级别导致输出错误:
nix-env --rollback
当我在上面的片段上运行时,结果是“单词列表中没有o” 为什么不将返回语句全部置于条件检查之下?
答案 0 :(得分:1)
让我们来看看paranoid: false
:
has_o_in_it(words)
for word in words:
if "o" in word:
return True
continue
的情况下浏览整个列表,我们可以断定列表中不包含“o”:returning True
。因此代码应如下所示:
return False
还有其他(更简洁的方法)来编写此代码(第一个是最好的):
def has_o_in_it(words):
for word in words:
if "o" in word:
return True
else:
continue
return False
答案 1 :(得分:1)
我有另一个片段,其中相同的缩进级别导致输出错误
输出只是错误的,因为逻辑有缺陷。
自己跳过列表。它会立即在三点返回False并声称没有单词包含o。
你不应该在循环中返回。假设您想要查看所有元素
,您可以跟踪它def has_o_in_it(words):
seen = False
for word in words:
if "o" in word:
seen = True
return seen
然而,这非常冗长,而且可能是
return any(lambda word: 'o' in word, words)
或
return 'o' in ''.join(words)