定义一个带有一个参数的函数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))
答案 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
更改为我们可以append的list
,然后使用该列表存储每行的元音数。这可能是您获得所需输出所需的代码的唯一主要更改。
但是,"段落"中有新行('\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]