大爽Python入门练习题 3-5 控制台文本展示输出直方图

大爽Python入门练习题总目录

第三章 中期练习题 困难 第5题

题目

简介

实现一个函数print_histogram(lst)
接受一个数组lst作为参数。
直接输出该数组对应的直方图(每项的值对应直方图中柱的高度)。

无返回值。

补充: 默认lst数组不为空,起码有一个元素。

详细说明

比如如下数组

lst = [3, 1, 5, 2, 4]

绘制的直方图如下

  #  
  # #
# # #
# ###
#####

lst

  1. 第一个值为3,直方图第一个(列)柱子的高度为3
  2. 第二个值为1,直方图第二个(列)柱子的高度为1
  3. 第三个值为5,直方图第三个(列)柱子的高度为5
  4. 第四个值为2,直方图第四个(列)柱子的高度为2
  5. 第五个值为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()
posted @ 2021-12-14 22:21  大爽歌python编程辅导  阅读(62)  评论(0编辑  收藏  举报