抛硬币正反面占比计算代码异常求助:次数越多占比越低如何修复?
抛硬币占比统计错误修复
你的代码核心问题是统计次数的逻辑错了:你用throw.count("head")统计的是当前单次输入字符串里"head"的出现次数(比如输入"head"时只会得到1),而不是整个投掷记录列表里的正面总次数。随着投掷次数增加,这个固定的1除以越来越大的总次数,占比自然会越来越低,完全不符合统计需求。
修正后的代码如下:
throws = [] while True: throw = input("你抛了硬币,结果是?Head/Tail:").lower() # 转小写避免大小写问题 throws.append(throw) total_flips = len(throws) heads_count = throws.count("head") # 统计列表中所有"head"的次数 tails_count = throws.count("tail") # 统计列表中所有"tail"的次数 heads_percentage = (heads_count / total_flips) * 100 tails_percentage = (tails_count / total_flips) * 100 match throw: case "head": print(f"正面占比:{heads_percentage}%") case "tail": print(f"反面占比:{tails_percentage}%")
关键改动说明
- 把单次输入的
throw.count()改成列表throws.count(),这样才能统计所有投掷记录里的正面/反面总次数 - 增加了
.lower()处理输入,避免用户输入大写(比如"Head")导致统计失败 - 输出文本改成更符合中文习惯的表述
内容的提问来源于stack exchange,提问作者Spless
相关产品推荐
相关产品推荐

