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

まず、文字数の合計には 2 つの意味があります。

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 に答える
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) 

注: コードをテストしていません (この PC に Python はインストールされていません) が、動作するはずです。編集:文字が0回発生したかどうかを確認してください。

于 2013-03-11T15:39:13.620 に答える