直方图程序

时间:2016-11-21 03:16:56

标签: python histogram

我正在制作一个Lab程序,要求创建一个程序,要求打印输入的分数(用逗号分隔),并在每次列出分数时添加星号。我列出的程序很简短,看起来应该可行,但是我在这个问题上遇到麻烦,如果我把这个问题弄得太简单了。任何人都可以帮助解决为什么这不起作用以及在这里做什么的想法?

test_scores = input("Enter test scores: ").split(",")

for num in range(0,101):
    count = test_scores.count(num)
    if count > 0:
      print(num)

已完成的计划:

test_scores = input("Enter test scores: ").split(",")

a_set = sorted(set(test_scores))
test_scores.sort()

for score in a_set:
    x = test_scores.count(score)
    print(score,('*'*x))

1 个答案:

答案 0 :(得分:0)

由于这是一项任务,我不想为您编写实验室代码,因此我将概述您可以实施的方法。这是最简单的方式(imo)给出你的评论你说直方图但列出得分(asterisks = num appearances)......

如果你想要一个实际的直方图放到操作系统中,其中的分数与“条形”垂直对齐,这将是高度=数字出现的星号,那么这将需要额外的工作。因此,我将概述您在评论中列出的内容的方法。

  1. 你的第一行可以获得分数列表并将它们分成一个列表(假设用户输入正常)

  2. 你正在迭代1-100,这是所有可能的分数。冗余imo,为什么不对列表进行排序,然后打印出所需星号数字?

  3. 提示:sort在这里很方便,您可以通过执行(例如)

    来迭代和打印列表中的项目
    for element in aSortedList: 
        #do something with "element"
    
    1. 对于每个分数,您希望多个星号等于分数旁边显示的列表中的出现次数。
    2. 对于字符串调用,您可以对{num}重复自身的字符串执行(string) * (num)

      提示:如您所见,您可以使用count获取列表中出现的次数。然后使用(string) * (num)

      你去。