大爽Python入门练习题 3-5 控制台文本展示输出直方图
第三章 中期练习题 困难 第5题
题目
简介
实现一个函数print_histogram(lst)
,
接受一个数组lst
作为参数。
直接输出该数组对应的直方图(每项的值对应直方图中柱的高度)。
无返回值。
补充: 默认lst
数组不为空,起码有一个元素。
详细说明
比如如下数组
lst = [3, 1, 5, 2, 4]
绘制的直方图如下
#
# #
# # #
# ###
#####
lst
中
- 第一个值为3,直方图第一个(列)柱子的高度为3
- 第二个值为1,直方图第二个(列)柱子的高度为1
- 第三个值为5,直方图第三个(列)柱子的高度为5
- 第四个值为2,直方图第四个(列)柱子的高度为2
- 第五个值为4,直方图第五个(列)柱子的高度为4
所有的柱子均用#
表示,
对应项的值为多少,该柱就有多少个#
总输出行数为最高柱子的高度。
示例
示例一
lst = [3, 1, 5, 2, 4]
print_histogram(lst)
输出为
#
# #
# # #
# ###
#####
示例二
lst = [1, 3, 2, 0, 5, 4, 1, 4]
print_histogram(lst)
输出为
#
## #
# ## #
## ## #
### ####
分割线
本小段没有实际意义,
仅用于分隔题目和答案。
防止学生无意中直接看到答案,
影响思路。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
答案
def print_histogram(lst):
max_h = lst[0]
for item in lst:
if item > max_h:
max_h = item
for ri in range(max_h, 0, -1):
for item in lst:
if item >= ri:
print("#", end="")
else:
print(" ", end="")
print()