如何在列表中使用count函数? (Python)的

时间:2017-10-13 15:14:27

标签: python

我正在制作一个简单的学校课程 - 它应该列出输入的句子(输入句子直到一个句子的第一个和最后一个符号相同),然后搜索最常用的元音并用它来替换所有输入句子中的所有其他元音(我还没到达那个部分)。但我有一个问题, - 我使用python导师找到了什么错误,因为我没有直接在pyhon中得到错误消息,它似乎只是让我不知道列表中的内容和&#34 ; 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))

2 个答案:

答案 0 :(得分:4)

当你应该sentence.count(z)时,你正在做i.count(z)。你的变量名有点令人困惑。但是sentence是传递的句子的集合,而i是实际的句子。

答案 1 :(得分:0)

sentences sentencevowels作为vowel传递是误导性的。

要计入字符串列表以获取该列表中元音的编号:

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

如果您愿意,可以将# 1替换为# 2 - 只需记住将z替换为vowel