Python简单直方图代码输出不符合预期 如何调整实现目标格式
调整后可实现目标效果的代码
result1 = ["Progress","Progress(MT)","ModuleRT","Excluded"] result2 = [3,4,3,5] # 可根据实际表头长度调整列宽,保证对齐 COLUMN_WIDTH = 12 def histogram(list1, list2): # 打印表头,每个表头左对齐补空格到固定列宽 print(''.join([item.ljust(COLUMN_WIDTH) for item in list1])) # 取计数最大值为直方图总高度,从最高行向下逐行打印 max_height = max(list2) for current_row in range(max_height, 0, -1): line_content = '' for count in list2: # 当前列计数大于等于当前行号时输出*,否则输出空格,统一补到列宽 line_content += '*'.ljust(COLUMN_WIDTH) if count >= current_row else ' '.ljust(COLUMN_WIDTH) print(line_content) histogram(result1,result2)
关键修改说明
- 新增固定列宽参数
COLUMN_WIDTH,保证表头和每行星号的列对齐,你可以根据自己的表头长度调整数值 - 先输出所有表头,通过
ljust方法将每个表头补空格到统一列宽,避免排版错乱 - 调整打印逻辑为从上到下逐行打印,先取所有计数的最大值作为直方图的总高度,从最高层往第一层遍历
- 每一行内遍历所有类别的计数,计数大于等于当前行号时输出星号,否则输出等宽空格,保证横向排版符合预期
- 已同步将你示例输出里的最后一个表头
Exclude改为Excluded,如果需要保留原命名直接修改result1的最后一项即可
内容的提问来源于stack exchange,提问作者Alex Mercer
相关产品推荐
相关产品推荐

