- 首先获取列表的最大元素,同时也是确定输出总行数的关键
data = [7, 3, 2, 9, 5, 1, 4, 0, 2, 8, 3, 9]
- 行数
r = max(data) + 2
- 列数
c = len(data)
通过循环打印图像
- 每行第一列的第一个字符串必定以'|'开头
- 是否有星(*)依赖于data列表中的元素大小
- 最后再适当结合运行结果调整参数,使图像效果达到最好
代码(基于Python3)
data = [7, 3, 2, 9, 5, 1, 4, 0, 2, 8, 3, 9]
r = max(data) + 2
c = len(data)
for i in range(r):
for j in range(c):
if i < max(data) - data[j]:
k = 0
elif i < max(data):
k = 1
elif i == max(data):
print('-' * 63)
break
else:
print(' {}月 '.format(j + 1), end='')
continue
if not j:
print('|' + ' ' * (2 - k) + '*' * k + ' ' * 2, end='')
elif j < c - 3:
print(' ' * (3 - k) + '*' * k + ' ' * 2, end='')
elif j < c - 1:
print(' ' * (4 - k) + '*' * k + ' ' * 2, end='')
else:
print(' * ')
运行结果如下:
360截图16620615114117128.jpg
网友评论