Python掷双骰子统计结果如何将横向星号直方图改为纵向展示
Python双骰子投掷纵向直方图实现
首先优化原代码的冗余统计逻辑,再通过从高到低遍历层数的方式输出纵向直方图,完整实现代码如下:
import random def q6(): results = [] # 模拟100次投掷 for _ in range(100): d1 = random.randint(1, 6) d2 = random.randint(1, 6) sum_val = d1 + d2 results.append(sum_val) # 统计2~12每个和的出现次数,存入有序列表 counts = [results.count(i) for i in range(2, 13)] max_count = max(counts) display = "" # 从最高层往下逐行打印 for layer in range(max_count, 0, -1): for cnt in counts: # 当前层数小于等于对应次数时输出星号,否则输出空格对齐 display += "* " if cnt >= layer else " " display += "\n" # 最后打印底部的数字标签 display += " ".join(str(i) for i in range(2,13)) return display # 测试输出 print(q6())
如果需要调整列间距,只需要修改星号和空格的占位宽度即可,比如把* 改为*、 改为 就能让列间距更宽松。
内容的提问来源于stack exchange,提问作者user15464781
相关产品推荐
相关产品推荐

