数字ではなく、ファイル内の各文字のパーセンテージを計算したいと思います。次のコードを変更するにはどうすればよいですか?
stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))
前もって感謝します!
数字ではなく、ファイル内の各文字のパーセンテージを計算したいと思います。次のコードを変更するにはどうすればよいですか?
stat_file = open(filename, 'w')
one_letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for letter in one_letter:
stat_file.writelines('%s : %d \n' % (letter, statistics[letter]))
前もって感謝します!
まず、文字数の合計には 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-Z
stat
次のように、すべての文字の合計を見つける必要があります。
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回発生したかどうかを確認してください。