我正在做python基本挑战这是其中之一。我所要做的就是通读一个文件,然后按降序打印出字母的频率。我能做到这一点,但我想通过打印出频率百分比和字母-频率-频率%来增强程序。像这样:o - 46 - 10.15%
这就是我目前所做的:def exercise11():
import string
while True:
try:
fname = input('Enter the file name -> ')
fop = open(fname)
break
except:
print('This file does not exists. Please try again!')
continue
counts = {}
for line in fop:
line = line.translate(str.maketrans('', '', string.punctuation))
line = line.translate(str.maketrans('', '', string.whitespace))
line = line.translate(str.maketrans('', '', string.digits))
line = line.lower()
for ltr in line:
if ltr in counts:
counts[ltr] += 1
else:
counts[ltr] = 1
lst = []
countlst = []
freqlst = []
for ltrs, c in counts.items():
lst.append((c, ltrs))
countlst.append(c)
totalcount = sum(countlst)
for ec in countlst:
efreq = (ec/totalcount) * 100
freqlst.append(efreq)
freqlst.sort(reverse=True)
lst.sort(reverse=True)
for ltrs, c, in lst:
print(c, '-', ltrs)
exercise11()
如您所见,我可以计算并排序不同列表上的freq%,但我无法将其与字母freq一起包含在lst[]列表的元组中。有什么方法可以解决这个问题吗?在
如果你对我的代码有任何其他建议的话。请务必提及。
Output Screen
修改
应用@wwii I提到的一个简单的修改就得到了期望的输出。我所要做的就是在迭代lst[]列表时向print语句再添加一个参数。以前,我尝试为freq%,sort创建另一个列表,然后尝试将其插入到列表中的letters count tuple中,但没有成功。在
^{pr2}$