需要帮忙! Python的新手,已经停留了好几天(因此,为什么我要在这里发布,不得已!)
我需要找到最大,最小(基于单词数的最长和最短的行)和每行的平均单词数(进入to_analyze字符串)
我的问题是,我只能获得每行的单词数,但它不准确,因为它仅打印每行的单词数,而不是哪一行具有最大单词数和最小单词数。
这是我的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Task 03"""
import re
from decimal import *
def lexicographics(to_analyze):
"""
"""
lines=0
num_of_words=0
max_words=0
min_words=0
mostWordsInLine=0
for line in to_analyze.split('\n'):
lines +=1
words=line.split()
if len(words) > mostWordsInLine and len(words) != None:
mostWordsInLine = len(words)
num_of_words=len(words)
max_words=max_words+len(words)
print num_of_words
print "Decimal({:.1f})".format(Decimal(max_words) / Decimal(lines))
电流输出:
>>> import task_03
>>> task_03.lexicographics('''Don't stop believing,
Hold on to that feeling.''')
3
5
Decimal(4.0)
如您所见^-我得到了正确的单词数,但是它计算的是每行的单词数,而不是我所需要的。
输出应该是这样的:
>>> import task_03
>>> task_03.lexicographics('''Don't stop believing,
Hold on to that feeling.''')
(5, 3, Decimal(4.0))
如果我想让它也测量另一个文件中的行
>>> import task_03
>>> import data
>>> task_03.lexicographics(data.SHAKESPEARE)
(12, 5, Decimal('8.14'))
任何帮助/提示,我们将不胜感激!
最佳答案
告诉您,这可以全部包含在一个简单的def
中:
from decimal import Decimal
def f(s):
lines=list(map(lambda x: len(x.split()),s.splitlines()))
return (max(lines),min(lines),Decimal(sum(lines))/Decimal(len(lines)))
然后:
print(f("Don't stop believing,\nHold on to that feeling."))
是:
(5, 3, Decimal('4'))
关于python - Python-一个for循环,计算以下每行中的最大,最小和平均单词数以进行分析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53273001/