我想通过打印星号图案使用Python制作垂直直方图。在水平方向上做同样的事情很容易但是如何垂直地做呢?
答案 0 :(得分:2)
您需要按行打印出数据,从最大直方图值的行开始。
在每一行中,您将为每个桶打印一个'*',其中该桶的值大于或等于与当前行对应的值,以及该值小的空间。
例如)三个6面骰子之和的直方图:
>>> r = list(x+y+z+3 for x in range(6) for y in range(6) for z in range(6))
>>> data = [r.count(v) for v in range(max(r)+1)]
>>> for y in range(max(data), 0, -3):
... print(*('*' if v >= y else ' ' for v in data))
...
* *
* * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
>>>