2017-10-13 83 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