for word in sentence.split():
if word[0] in VOWELS:
pig_latin = word + "ay"
else:
pig_latin = word[1:] + word[0] + "ay"
return pig_latin
如何使它返回打印整個句子,而不僅僅是一個單詞?函數中的Python簡單循環
for word in sentence.split():
if word[0] in VOWELS:
pig_latin = word + "ay"
else:
pig_latin = word[1:] + word[0] + "ay"
return pig_latin
如何使它返回打印整個句子,而不僅僅是一個單詞?函數中的Python簡單循環
你必須建立全文以某種方式。例如,你可以建立一個單詞列表:
pig_words = []
for word in sentence.split():
if word[0] in VOWELS:
pig_latin = word + "ay"
else:
pig_latin = word[1:] + word[0] + "ay"
pig_words.append(pig_latin)
return pig_words
如果你希望把它放回句子中,split
對面是join
,所以只是最後一行改爲:
return ' '.join(pig_words)
您需要將值附加到列表中,並從循環中刪除返回語句,以便在for循環完成迭代後它將返回列表。
words = []
for word in sentence.split():
if word[0] in VOWELS:
pig_latin = word + "ay"
else:
pig_latin = word[1:] + word[0] + "ay"
words.append(pig_latin)
return words
您的返回語句是通過for循環的第一遍執行的。即使您不縮進return語句以結束運行,您也只會在pig_latin變量中包含最後一個翻譯的單詞。
要翻譯整個句子,只有在整個for循環運行完成後才能返回,保存已翻譯單詞的累積列表。
entensesay = []
for word in sentence.split():
if word[0] in VOWELS:
entensesay.append(word + "ay")
else:
entensesay.append(word[1:] + word[0] + "ay")
return ' '.join(entensesay)
避免在Python中循環執行字符串連接也是一種好習慣。 List append方法更高效,然後使用''.join()來產生最終的連接字符串。
關於字符串追加緩慢的說明實際上是過時的;二進制字符串連接行爲在Python 2.4中已經修復,大約十年前,但人們仍然在今天重複它... – abarnert
請顯示整個功能。 – Daniel
爲了好玩:如果你只是把'return'改成'yield',你可以在'pig_latinize(句子):print(ordway)'中編寫'ordway',它會得到所有的單詞。請參閱本教程中的[迭代器](http://docs.python.org/2.7/tutorial/classes.html#iterators)和以下關於生成器的部分。這可能不是你要求的......但希望你會很快。 – abarnert