在第二個返回語句(返回False)的縮進級別正好在循環之下的教程之後,因此在循環之外。 不應該在for循環中嗎?Python返回語句縮進級別
import scrabble
letters = "abcdefghijklmnoprstuvwxyz"
def has_a_double(letter):
for word in scrabble.wordlist:
if letter + letter in word:
return True
return False
for letter in letters:
if not has_a_double(letter):
print(letter + " never appears doubled")
我還有一個片段,其中相同的縮進水平導致不正確的輸出:
#word_list = ["one", "two", "four"]
#word_list = ["three", "five", "six", "seven", "nine"]
word_list = ["one", "two", "three", "five", "four"]
#word_list = ["one", "two", "three", "five"]
def has_o_in_it(words):
for word in words:
if "o" not in word:
return False
return True
if has_o_in_it(word_list):
print("word list has o in it")
else:
print("word list has no o in it")
當我運行上面的代碼,結果是「單詞列表中有沒有O」 爲什麼不把回報聲明全部在條件檢查下?
爲什麼你認爲它應該在循環內?它會在第一次迭代時結束循環,* always *。 –
換句話說,通過** not **將其放置在循環中,只有在循環中的所有項目都被檢查後才返回'False'。你認爲更正確的是什麼? –
我會假設教程沒有提到'any()'函數? –