Python骰子求和概率表格制作:如何实现同一行打印
解决同一行打印及骰子概率统计问题
先修正代码里的基础错误
你的代码存在几个影响运行的问题:
- 未导入
random库,运行会直接报错 - 函数名用了
sum,这是Python内置函数,会和变量名冲突 attempts函数里的rang是拼写错误,正确写法是range- 两个函数分开循环,导致次数和点数和分别换行输出,无法一一对应
修正后实现同一行打印+概率统计的代码
import random total_rolls = int(input("How many times do you want to roll the dice: ")) # 初始化字典,统计2-12每个点数和的出现次数 sum_counts = {i: 0 for i in range(2, 13)} # 打印表头 print(f"{'attempts':<15}{'sum of the dices':<20}{'probability (so far)'}") print("-" * 50) for attempt in range(1, total_rolls + 1): dice1 = random.randint(1, 6) dice2 = random.randint(1, 6) current_sum = dice1 + dice2 sum_counts[current_sum] += 1 # 计算当前点数和的累计概率 current_prob = (sum_counts[current_sum] / attempt) * 100 # 用格式化字符串对齐,一次性打印一行的三个内容 print(f"{attempt:<15}{current_sum:<20}{current_prob:.2f}%") # 打印最终各点数和的总概率 print("\n--- Final Probability Summary ---") for s in range(2, 13): final_prob = (sum_counts[s] / total_rolls) * 100 print(f"Sum {s}: {final_prob:.2f}%")
关键说明
- 同一行打印:使用Python格式化字符串(f-string),通过
<15、<20这类格式符控制内容的对齐宽度,把次数、点数和、概率放在同一个print语句中,就能实现同一行输出。 - 概率统计逻辑:用字典预先存储2-12每个点数和的初始计数,每次掷骰子后更新对应和的计数,实时计算并打印累计概率;最后输出所有点数和的最终概率。
- 错误规避:替换了和内置函数重名的函数名,修正拼写错误,提前导入
random库。
内容的提问来源于stack exchange,提问作者Sohail Matha
相关产品推荐
相关产品推荐

