2012-10-10 73 views
-2

我在教師作業時遇到問題。我是一個Python新手,所以我不太瞭解這門語言。在列表中搜索帶有更多字母的單詞

我需要創建一個函數,它給出一串單詞並查找帶有更多「a」的單詞,並且如果有兩個具有相同數字「a」的單詞打印第一個單詞。

編輯1: 是好我的想法是看每個單詞,並使用類似str.count("a"),然後打印字具有最高值

+5

尋求幫助的一個很好的起點就是展示你到目前爲止所考慮的事情......任何你可以通過手動操作的方式來引導我們? – Crisfole

+0

@Downvoter:不,這不是一個好問題,而不是讓新人陷入湮沒,而不是讓他有機會編輯? – Crisfole

+0

對不起,我的想法對於 – user1502668

回答

0

這個答案應該很簡單,即使是初學者,因爲它只使用非常基本的命令:

s = 'caaat caat cat kittycaat, rack, smaaack' 
x = 0 
for i in s.split(): 
    if i.count('a') > x: 
     x = i.count('a') 
     word = i 
print word 

基本上,它使用字符串的.split()函數將字符串拆分爲單獨的單詞。然後for循環遍歷每個單詞,注意每個單詞中有多少個「a」,如果有多於x個單詞,則用數字更新x並將單詞放入「單詞」變量中。

當循環得到更多'a'的循環時,它會再次更新x和單詞,但是如果它得到的單詞少了'a',那麼它什麼都不會做。

+0

哇謝謝,這真的很容易理解!我不太瞭解z字母爲什麼使用它? – user1502668

+0

對不起,我應對了來自IDLE的錯誤代碼。那個z應該是「s.split()」,我將它固定在答案中。你明白現在的代碼是如何工作的嗎?克里斯托弗解釋了很多。順便說一句,分裂返回一個單詞列表和代碼中的「我」基本上是該列表中的每個元素,即。一個字。 – Protagonist

+0

是的!非常感謝。你的代碼非常容易閱讀! – user1502668

3
>>> words = "foo bar baz banana" 
>>> max(words.split(), key=lambda x:x.count("a")) 
'banana' 
+0

謝謝。我嘗試了你的解決方案,它的工作原理!但我不明白拉姆達方法,也許我會在未來的任務中做到這一點。但是,謝謝! – user1502668

相關問題