2015-01-21 70 views
0

我必須設計和實現一個應用程序,該應用程序創建100個範圍爲1到100的值的隨機正整數,然後創建一個圖表,顯示出現值的頻率。它顯示了在1到10,11到12等範圍內有多少值。並且它會爲輸入的每個值打印一個星號。Python - 用範圍每10製作一個柱狀圖

順便說一句: 沒有如果statments,我們必須使用一個列表。

該圖應如下所示。

1 - 10 | **** 
    11 - 20 | ** 
    21 - 30 | **************** 
    31 - 40 | 
    41 - 50 | *** 
    51 - 60 | ******** 
    61 - 70 | **************** 
    71 - 80 | ***** 
    81 - 90 | * 
    91 - 100 | *** 

這是我的嘗試。

ranking = [0,0,0,0,0,0,0,0,0,0,0] 
survey = [] 

for i in range(1,101): 
    ranking[survey[i]]+=random.randint(1,100) 


#create histogram 
print("%5s %5s %7s"%("Element", "Value", "Histogram")) 

#start from element 1 instead of 0 
for i in range(len(ranking)-1): 
    x=10*i + 10 
    y = x-9 
    print("%7s %5d %-s"%((y,"-",x), ranking[i+1], "*" * ranking[i+1])) 

我可能有一些錯誤的地方,如元素列顯示不正確。幫助表示讚賞。謝謝!

回答

0
>>> import random 
>>> ranking = [0] * 10 
>>> for _ in range(100): 
...  ranking[(random.randint(1, 100) - 1) // 10] += 1 
... 
>>> ranking 
[10, 8, 10, 9, 17, 11, 6, 8, 7, 14] 
0

我遵循這個算法;

import random 

obj="1-10 | {}" 
obj1="11-20 | {}" 
obj2="21-30 | {}" 
obj3="31-40 | {}" 
obj4="41-50 | {}" 
obj5="51-60 | {}" 
obj6="61-70 | {}" 
obj7="71-80 | {}" 
obj8="81-90 | {}" 
obj9="91-100 | {}" 
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10=0,0,0,0,0,0,0,0,0,0 



cnt=0 
while cnt<100: 
    x=random.randint(1,100) 
    if 1<=x<=10: 
     c1+=1 
    elif 10<x<=20: 
     c2+=1 
    elif 20<x<=30: 
     c3+=1 
    elif 30<=x<=40: 
     c4+=1 
    elif 40<x<=50: 
     c5+=1 
    elif 50<x<=60: 
     c6+=1 
    elif 60<x<=70: 
     c7+=1 
    elif 70<x<=80: 
     c8+=1 
    elif 80<x<=90: 
     c9+=1 
    elif 90<x<=100: 
     c10+=1 
    cnt+=1 
print (obj.format("*"*c1)) 
print (obj1.format("*"*c2)) 
print (obj2.format("*"*c3)) 
print (obj3.format("*"*c4)) 
print (obj4.format("*"*c5)) 
print (obj5.format("*"*c6)) 
print (obj6.format("*"*c7)) 
print (obj7.format("*"*c8)) 
print (obj8.format("*"*c9)) 
print (obj9.format("*"*c10)) 

輸出是;

>>> 
1-10 | ***************** 
11-20 | ******** 
21-30 | ************* 
31-40 | ************** 
41-50 | *********** 
51-60 | ********* 
61-70 | ***** 
71-80 | ****** 
81-90 | ******* 
91-100 | ********** 
>>> 

僅用於random模塊。基本上我會在這些值之間計算每個空間。然後我把它們與"*"相乘。然後format()幫助,我把它們放在每個obj變量。

+1

沒有,如果/ elif聲明請。 – 2015-02-11 03:36:52

相關問題