You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python抛硬币程序开发求助:实现多次投掷及正面占比计算

帮你完善Python抛硬币程序!

嘿,作为编程新手,你已经迈出第一步啦!先看看你现有代码里的几个小问题,再一步步把它完善成符合需求的程序~

现有代码的几个小问题

  • 忘记导入random模块了,直接运行会报错哦
  • 判断正面的条件写错了:你已经把随机结果存在coin变量里了,应该判断if coin == 1,而不是if random.randint==1
  • 百分比计算有误:1000次投掷的话,正面占比应该是(正面次数 / 总次数) * 100,也就是(heads / 1000) * 100,不是除以10
  • 代码冗余:如果要分别处理1000次和50000次投掷,重复写两次循环太麻烦,不如写个通用函数复用逻辑

完善后的完整代码

import random

def flip_coins(num_flips):
    heads = 0
    for _ in range(num_flips):
        # 用1代表正面,2代表反面
        coin = random.randint(1, 2)
        if coin == 1:
            heads += 1
    # 计算正面占比,保留两位小数更直观
    percentage = (heads / num_flips) * 100
    return heads, percentage

# 第一次投掷1000次
heads_1000, percent_1000 = flip_coins(1000)
print(f"投掷1000次:正面朝上{heads_1000}次,占比{percent_1000:.2f}%")

# 额外投掷50000次
heads_50000, percent_50000 = flip_coins(50000)
print(f"额外投掷50000次:正面朝上{heads_50000}次,占比{percent_50000:.2f}%")

# 如果需要统计总共投掷的占比,可加上这段
total_heads = heads_1000 + heads_50000
total_flips = 1000 + 50000
total_percent = (total_heads / total_flips) * 100
print(f"总共投掷{total_flips}次:正面朝上{total_heads}次,占比{total_percent:.2f}%")

代码解释

  • import random:导入随机数模块,这样才能用random.randint生成模拟硬币正反的随机数
  • flip_coins(num_flips):通用函数,接收投掷次数作为参数,返回正面次数和占比,避免重复写循环逻辑
  • for _ in range(num_flips):循环指定次数,_表示我们不需要用到循环变量本身
  • 用f-string格式化输出,:.2f表示保留两位小数,让结果看起来更清晰
  • 最后额外加了总投掷次数的统计逻辑,如果你的需求不需要可以直接删掉这部分

这样运行程序就能得到你想要的结果啦!

内容的提问来源于stack exchange,提问作者moose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:50:00