如何实现指定正面次数的硬币投掷循环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
相关产品推荐
相关产品推荐

