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

如何实现指定正面次数的硬币投掷循环Python程序?

解决方案与代码解释

首先,直接给出能实现需求的完整代码,再逐步拆解关键部分:

import random

# 获取用户指定的正面次数
target_heads = int(input("Enter the amount of heads needed to stop: "))

# 初始化计数器:已获得的正面次数、总投掷次数
heads_count = 0
total_flips = 0

# 循环直到达到目标正面次数
while heads_count < target_heads:
    # 随机生成硬币结果:Heads 或 Tails
    flip_result = random.choice(["Heads", "Tails"])
    total_flips += 1  # 每次投掷后总次数+1
    
    # 显示本次投掷结果
    print(f"Flip {total_flips}: {flip_result}")
    
    # 如果是正面,更新正面计数器
    if flip_result == "Heads":
        heads_count += 1

# 循环结束后输出总投掷次数
print(f"\nTotal flips needed to get {target_heads} heads: {total_flips}")

关键部分解释:

  • 随机生成硬币结果:
    使用random.choice(["Heads", "Tails"])可以随机从列表中选取一个元素,完美模拟硬币投掷的两种结果。

  • 计数器与循环逻辑:

    • heads_count:记录已经掷出的正面次数,初始为0,每次掷出正面就加1。
    • total_flips:记录总投掷次数,每次循环(每次投掷)都加1。
    • while heads_count < target_heads:循环会一直执行,直到正面次数达到用户指定的目标,这正是你需要的终止条件。
  • 原代码问题修复:

    • 原代码用整数代表Heads,不符合显示字符串结果的需求,且没有实际生成随机结果。
    • 循环条件错误:你用tails1 < heads_flips,但实际应该跟踪正面次数是否达标。
    • 语法错误:if heads_flips > 0 print Heads amount of head_flips缺少冒号和正确的字符串输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:31:00