这种打印的方法,是不是要用join方法?想不出怎样做
题目:用字符做一个简单的直方图(柱状图)。已知每月的数据如下:
做出横坐标为月份的直方图。
| * *
| * * *
| * * * *
| * * * *
| * * * * *
| * * * * * *
| * * * * * * * *
| * * * * * * * * * *
| * * * * * * * * * * *
------------------------------------------------------------
1月2月3月4月5月6月7月8月9月10月 11月 12月
求大神指导。 最直接的就是使用列表设计一个二维数组,相当于打印一张9*12的表格,空的地方就用空格表示,有数据的地方就用*表示,然后横向输出 这种东西好像数据可视化做着更方便吧
百度 python 直方图
跟用不用jion没多大关系,关键看你想怎么设计,如果一定要用print函数打印,你需要设计每个字符之间的间隔,每一行的分布等
这种做图当然是交个库来实现,参考 matplotlib 库的各种做图函数 from pprint import pprint
data =
t = [[] for i in range(len(data))]
for i, n in enumerate(data):
for j in range(n):
t.append("*")
不会翻转{:10_278:} sky 发表于 2018-1-31 11:50
不会翻转
还没学到,但谢谢你。 def func(nums):
lis = [['|']+[' ' if max(nums)-x>i else '*' for x in nums] for i in range(max(nums))]
lis.append(["-"]+['-----' for i in range(12)])
lis.append([" "]+[' {}月 '.format(i) for i in range(1,13)])
for i in lis:
print(''.join(i))
if __name__ == '__main__':
func()
| * *
| * * *
|* * * *
|* * * *
|* * * * *
|* * * * * *
|* * * * * * * *
|* * * * * * * * * *
|* * * * * * * * * * *
-------------------------------------------------------------
1月2月3月4月5月6月7月8月9月10月11月12月
gopythoner 发表于 2018-1-31 16:21
我也是够无聊的,居然给你弄出来了一个 gopythoner 发表于 2018-1-31 16:21
大神请留步,帮助小学生解决问题,并不是一件无聊的事。我就觉得用join的方法会比较好,但就是想不出来。你写的代码很好{:10_303:},但能解释一下思路吗?看得不是很明白。。{:10_262:} checkily 发表于 2018-2-1 09:04
大神请留步,帮助小学生解决问题,并不是一件无聊的事。我就觉得用join的方法会比较好,但就是想不出来。 ...
首先,你要画一个条形图,就有2个关键参数,第一个是横坐标的长度,这个就是1-12个月固定了,然后就是纵坐标的高度,这个是不固定的,要看你给的数字里面最大的数是什么,就是max(nums)来决定。
长宽知道了,就好办,每一行都是一个列表,也即是总共有max(nums)个列表,每个列表里面包含了空格和星号,每个月有几个空白和几个星号,这个就可以通过每个月的数字跟最大值对比就知道了 gopythoner 发表于 2018-2-1 09:11
首先,你要画一个条形图,就有2个关键参数,第一个是横坐标的长度,这个就是1-12个月固定了,然后就是纵 ...
这个思路跟我的想法是差不多的,至于代码如何实现,为什么要这样写,可能是我水平问题,还是不太理解。
页:
[1]