字符串和条件:循环返回true和false,为什么输出结果只返回true

时间:2019-03-16 15:49:44

标签: python-3.x

我正在为这个问题编写代码:“写一个名为letter_check的函数,它接受两个输入,wordletter。如果单词包含字母,如果没有则包含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”不匹配,因此最后一个areturn)。我不明白为什么结果是false

我后来得知我可以对这个问题使用true,但是我希望知道为什么上面的编码返回in

2 个答案:

答案 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)