我正在为这个问题编写代码:“写一个名为letter_check
的函数,它接受两个输入,word
和letter
。如果单词包含字母,如果没有则包含True
。”它提供的答案如下:
False
我不知道这是如何工作的。例如,我以为def letter_check(word, letter):
for m in word:
if m == letter:
return True
return False
print(letter_check("strawberry","a"))
中的第一个字符为strawberry
,进入s
循环。 for
不等于s
,退出循环并返回a
。第二个字符的结果(False
)相同,然后继续。第四个字母False
的结果为a
。其余的再次返回True
。
所以我认为False
的结果是letter_check("Strawberry","a")
。 (由于最后一个字符与“ false
”不匹配,因此最后一个a
为return
)。我不明白为什么结果是false
?
我后来得知我可以对这个问题使用true
,但是我希望知道为什么上面的编码返回in
答案 0 :(得分:1)
return语句是任何函数将执行的最后一条语句。执行return语句后,控件移出函数主体。因此,一旦条件在循环本身内匹配,该函数将返回true。仅当控件之前没有遇到return false
语句时,该控件才会从循环中移至return
语句,这意味着if条件永远不会成立。
答案 1 :(得分:1)
从@Tojrah早已解释过的原因继续进行,您可以使用布尔标志和Index var来检查char的存在:
def letter_check(word, letter):
isFound = False
Index = None
for m in word:
if m == letter:
isFound = not isFound # set the flag to true
Index = word.index(m) # get the index pos of the letter
return isFound, Index
print(letter_check("strawberry","a"))
print(letter_check("strawberry","o"))
输出:
(True, 3)
(False, None)