提示用戶輸入一個文件,在本例中爲'histogram.txt'。該程序將獲取文本文件中的每個分數,並在文件中的所有分數中生成一個直方圖,對其進行組織,以便用戶可以查看每個分區有多少個分區。我寫了一個非常簡單的代碼:簡易python程序
filename = raw_input('Enter filename of grades: ')
histogram10 = 0
histogram9 = 0
histogram8 = 0
histogram7 = 0
histogram6 = 0
histogram5 = 0
histogram4 = 0
histogram3 = 0
histogram2 = 0
histogram1 = 0
histogram0 = 0
for score in open(filename):
if score >= 100:
histogram10 = histogram10 + 1
elif score >= 90:
histogram9 = histogram9 + 1
elif score >= 80:
histogram8 = histogram8 + 1
elif score >= 70:
histogram7 = histogram7 + 1
elif score >= 60:
histogram6 = histogram6 + 1
elif score >= 50:
histogram5 = histogram5 + 1
elif score >= 40:
histogram4 = histogram4 + 1
elif score >= 30:
histogram3 = histogram3 + 1
elif score >= 20:
histogram2 = histogram2 + 1
elif score >= 10:
histogram1 = histogram1 + 1
elif score >= 0:
histogram0 = histogram0 + 1
print
print 'Grade Distribution'
print '------------------'
print '100 :',('*' * histogram10)
print '90 - 99 :',('*' * histogram9)
print '80 - 89 :',('*' * histogram8)
print '70 - 79 :',('*' * histogram7)
print '60 - 69 :',('*' * histogram6)
print '50 - 59 :',('*' * histogram5)
print '40 - 49 :',('*' * histogram4)
print '30 - 39 :',('*' * histogram3)
print '20 - 29 :',('*' * histogram2)
print '10 - 19 :',('*' * histogram1)
print '00 - 09 :',('*' * histogram0)
但是每當我運行的程序,全部二十檔次得到記錄到> = 100 這樣的:
100 : ********************
90-99 :
80-89 :
等 ...如何我是否做到這一點,以便程序將星星放在正確的地方?
始終步驟1:確保進入程序的數據是正確的。 – 2012-03-29 05:14:44
您正在比較字符串和數字... – avasal 2012-03-29 05:17:47
小技巧:您可以使用列表並計算索引,例如, '直方圖[min(100,score)/ 10] + = 1'。 'min'將所有分數都放在100以上。對於更一般的數據,如計算文本中的單詞數量,可以使用字典。 – 2012-03-29 05:22:55