0

我想计算文件中每个字母的百分比而不是数字。如何修改以下代码?

stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
    stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))

提前致谢!

4

2 回答 2

1

您需要找到所有字母的总和,如下所示:

letter_count=0
for letter in one_letter:
    letter_count= letter_count + statistics[letter]

然后要获得您需要更改代码的百分比,如下所示:

stat_file.writelines('%s : %d %% \n' % (letter, (statistics[letter]/letter_count)*100) if statistics[letter]>0 else 0) 

注意:我没有测试过代码(这台电脑上没有安装 python),但它应该可以工作。编辑:检查这封信是否发生了 0 次。

于 2013-03-11T15:39:13.620 回答
1

首先,字母总数可以有两种含义:

1.只有在one_letter(你的问题中只有“AZ”)

one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
stat = {'A': 5, 
          'B':3, 
          'C':9, 
          'U': 5, 
          'D': 9, 
          'a': 99}

total_count = sum(stat.get(letter, 0) for letter in one_letter) # should be 31

2.你文件中的所有单词(包括'az','0-9',...)

total_count = sum(stat.values()) # should be 130


之后,您可以通过以下方式计算您的百分比

for letter in one_letter:
    stat_file.writelines("%s: %f%%\n" %(letter, \
        stat.get(letter, 0)/float(total_count)*100))

请注意,stat.get(letter, 0)如果不是所有字母都在stat.

如果您stat[letter]确定A-Zstat.

于 2013-03-11T18:22:51.987 回答