我需要製作一個程序,打印文本 文件中的字母頻率,並將該頻率與python中的另一個頻率進行比較。python中的字母頻率
到目前爲止,我可以打印信件發生的次數,但我得到的百分比頻率是錯誤的。我認爲這是因爲我需要我的程序通過刪除所有空格和其他 字符來計算文件中只有 字母的數量。
def addLetter (x):
result = ord(x) - ord(a)
return result
#start of the main program
#prompt user for a file
while True:
speech = raw_input("Enter file name:")
wholeFile = open(speech, 'r+').read()
lowlet = wholeFile.lower()
letters= list(lowlet)
alpha = list('abcdefghijklmnopqrstuvwxyz')
n = len(letters)
f = float(n)
occurrences = {}
d = {}
#number of letters
for x in alpha:
occurrences[x] = letters.count(x)
d[x] =(occurrences[x])/f
for x in occurrences:
print x, occurrences[x], d[x]
這是輸出
Enter file name:dems.txt
a 993 0.0687863674148
c 350 0.0242449431976
b 174 0.0120532003325
e 1406 0.0973954003879
d 430 0.0297866444999
g 219 0.015170407315
f 212 0.0146855084511
i 754 0.0522305347742
h 594 0.0411471321696
k 81 0.00561097256858
j 12 0.000831255195345
m 273 0.0189110556941
l 442 0.0306178996952
o 885 0.0613050706567
n 810 0.0561097256858
q 9 0.000623441396509
p 215 0.0148933222499
s 672 0.0465502909393
r 637 0.0441257966196
u 305 0.021127736215
t 1175 0.0813937378775
w 334 0.0231366029371
v 104 0.00720421169299
y 212 0.0146855084511
x 13 0.000900526461624
z 6 0.000415627597672
Enter file name:
程序可以打印在列,但我真的不知道如何顯示在這裏。
的頻率「A」應該是0.0878
這是一個家庭作業嗎? – 2011-02-28 23:42:22
您的「f」變量包含列表的總長度,而不是列表中的字母字符數。另外 - 不要使用SO來欺騙你的作業。如果你不自己學習,你永遠不會學習它。 – 2011-02-28 23:43:44
是的,這是一個任務。我沒有試圖欺騙。我只是遇到了一個死路,需要一些指導。感謝你的幫助。 – SimplyZ 2011-03-01 02:19:55