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
相关产品推荐
相关产品推荐

