编写一个函数,返回每行元音数的列表

时间:2017-05-03 00:05:40

标签: python

定义一个带有一个参数的函数lineStats(): 段落,一串单词和空格 该函数返回一个列表,其中包含每行中元音的数量。 例如,

t="Apple\npear and kiwi" 
print(lineStats(t))
[2,5]

这就是我所拥有的。我得到的输出是7但是不能使它成为2,5。我试图为每一行制作一个计数器,但这没有用,有什么建议吗?

def lineStats(paragraph):
    vowels = "AEIOUaeiou"
    for line in paragraph:
        for word in line:
            for letter in word:
                if letter in vowels:
                    counter +=1
                else:
                    continue

    return counter

t = "Apple\npear and kiwi"
print(lineStats(t))

4 个答案:

答案 0 :(得分:0)

试试这个

创建此功能

from collections import Counter 

print [temp(x) for x in lines.split('\n')]

现在

{{1}}

答案 1 :(得分:0)

根据需要更改代码,其他答案可以改进。

def lineStats(paragraph):
    counter = []
    vowels = "AEIOUaeiou"
    lines = paragraph.split('\n')
    for line in lines:
        count = 0
        for word in line:
            for letter in word:
                if letter in vowels:
                    count +=1
                else:
                    continue
        counter.append(count)
    return counter

t = "Apple\npear and kiwi"
print(lineStats(t))        # [2, 5]

问题表明它希望结果为list个计数,因此将counter更改为我们可以appendlist,然后使用该列表存储每行的元音数。这可能是您获得所需输出所需的代码的唯一主要更改。

但是,"段落"中有新行('\n')的问题,所以我们str.split()在进入for之前将段落分成单独的行 - 环。这将打破每一行的计数,而不是您获得的总计数。

答案 2 :(得分:0)

这是您当前代码的改编

def lineStats(paragraph):
    vowels = "AEIOUaeiou"
    counter = []
    current_line_count = 0
    newline = "\n"

    for letter in paragraph:
        if letter in vowels:
            current_line_count += 1
        elif letter == newline:
            counter.append(current_line_count)
            current_line_count = 0
    counter.append(current_line_count)
    return counter

答案 3 :(得分:0)

t="Apple\npear and kiwi" 

def lineStats(p):
    #find vowels in each line and sum the occurences using map
    return map(sum, [[1 for e in f if e in "AEIOUaeiou"] for f in p.split('\n')])

lineStats(t)
Out[601]: [2, 5]