我必须设计和实现一个应用程序,该应用程序在1到100范围内创建100个随机的值正整数,然后创建一个图表,显示这些值出现的频率。它显示了在1到10,11到12之间的范围内有多少个值,等等。它将为输入的每个值打印一个星号。
顺便说一句:如果没有状态,我们必须使用一个列表。
这张图表应该像下面所示的那样。
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]))我可能有一些错误的地方,例如元素列显示不正确。我们很感激你的帮助。谢谢!
发布于 2015-01-21 04:42:33
>>> 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]发布于 2015-01-21 05:06:00
我遵循这个算法;
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变量中。
https://stackoverflow.com/questions/28059545
复制相似问题