Python-每10个区域绘制一个直方图

Python-每10个区域绘制一个直方图,python,python-3.x,Python,Python 3.x,我必须设计并实现一个应用程序,创建100个1到100范围内的随机正整数,然后创建一个图表,显示这些值出现的频率。它显示了有多少值落在1到10、11到12的范围内,依此类推。它将为输入的每个值打印一个星号 顺便说一下: 如果没有声明,我们必须使用列表 图表应如下图所示 1 - 10 | **** 11 - 20 | ** 21 - 30 | **************** 31 - 40 | 41 - 50 | *** 51

我必须设计并实现一个应用程序,创建100个1到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]))

我可能有一些错误的点,例如元素列显示不正确。谢谢你的帮助。谢谢大家!

我遵循这个算法

>>> 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]
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))

仅用于随机模块。基本上,我计算每个值之间的空间。然后我将它们乘以*。然后格式化帮助,我将它们放入每个obj变量。

请不要使用if/elif语句。
>>> 
1-10   |  *****************
11-20  |  ********
21-30  |  *************
31-40  |  **************
41-50  |  ***********
51-60  |  *********
61-70  |  *****
71-80  |  ******
81-90  |  *******
91-100 |  **********
>>>