我必须设计并实现一个应用程序,该应用程序在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]))
我可能有一些错误的位置,例如Element列显示不正确。感谢帮助。谢谢!
答案 0 :(得分: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]
答案 1 :(得分: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
变量中。