2017-10-13 81 views
0

我正在做一個簡單的程序,學校 - 它應該使輸入句子的列表(這將是輸入之前,該第一個和最後一個符號相同的句子),然後搜索最常用的元音並用它來代替所有輸入句子中的所有其他元音(我還沒有到那個部分)。但我有一個問題, - 我用python的導師發現有什麼問題,因爲我沒有直接在pyhon的錯誤信息,它似乎只是不會讓我把事情列入清單,「P」只是保持在0全程。我無法弄清楚什麼是錯,所以任何幫助它表示讚賞!對不起,如果它只是一些菜鳥的錯誤,我對python很陌生。如何使用列表中的計數功能? (蟒蛇)

def V(sentence, vowel): 
    a=0 
    p=0 
    b="" 
    for i in sentence: 
     for z in i: 
      if z in vowel: 
       p=sentence.count(z) 
       if p>a: 
        a=p 
        b=z 
    return b     
sentences=[] 
vowels=["a", "e", "i", "o", "u", "y"] 
v=input("input a sentence: ") 
while v[0]!=v[-1]: 
    sentences.append(v) 
    v=input("input a sentence: ") 
print("Most used vowel: ", V(sentences, vowels)) 
+0

您可以分享輸出結果和迄今爲止嘗試的結果嗎? – RSHAP

+3

您是否嘗試過將一些打印語句放在每個迭代中顯示'a','p'和'b'的值......它會很快顯示您的狀態...... –

+0

到目前爲止,這是找到最多來自每個句子的常見元音,而不是全部句子。那是你要的嗎? – pylang

回答

4

你在做sentence.count(z)當你應該做i.count(z)。你的變量名稱有點混亂。但sentence是正在傳遞的句子的集合,而i是實際的句子。

+0

謝謝,這解決了我的問題!對於這些名字感到抱歉,我以他們的母語快捷方式,所以我只是在這裏發佈時改變了他們 – Ronnie

0

誤導sentencessentencevowelsvowel

要在一個字符串列表計算得到該列表中的元音的數量是:

p = 0    # 1 
for s in sentences: # 1 
    p += s.count(z) # 1 

或者,如果你是一個俏皮話風扇:

p = sum([s.count(z) for s in sentences]) # 2 

代替這樣做的:

for i in sentence: 
    for z in i: 
     # ... 

您應該遍歷vowels,所以你只有一次算每個元音:

for z in vowels: 
    p = 0    # 1 
    for s in sentences: # 1 
     p += s.count(z) # 1 
    if p > a: 
     a = p 
     b = z 

清理,給出:

def mostUsedVowel(sentences, vowels): 
    a = 0 
    p = 0 
    b = "" 
    for vowel in vowels: 
     p = 0     # 1 
     for s in sentences:  # 1 
      p += s.count(vowel) # 1 
     if p > a: 
      a = p 
      b = vowel 
    return b 

您可以# 2取代# 1如果你喜歡 - 只記得有vowel更換z