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

如何解决Python抛硬币游戏函数无法正常循环运行的问题?

抛硬币游戏迭代执行问题修复

核心问题原因

  • 函数封装错误:你定义的game()函数内仅包含一行欢迎语打印逻辑,所有核心游戏流程、输入判断、胜负结算的代码都放在了函数全局作用域下,首次运行是执行全局代码,第二次调用game()时自然只会执行欢迎语打印就结束。
  • 硬币结果固定:flip变量仅在程序启动时生成一次随机值,后续所有重玩轮次都不会更新硬币结果,逻辑不符合预期。
  • 全局变量修改问题:money是全局变量,直接在代码逻辑中修改会触发作用域报错,你当前未报错只是因为还没触发到该错误场景。
  • 递归调用风险:用递归实现重玩逻辑,长时间运行会触发栈溢出,更适合用循环实现主流程。

修复后可正常运行的代码

import random
import sys

def game():
    money = 1000000
    while True:
        print("welcome to the coin flip")
        answer = input("do you want to play the coin flip? y/n")
        if answer == "n":
            sys.exit("goodbye")
        if answer == "y":
            print("your balance is", money)
            guess = input("heads or tails? 0 for heads 1 for tails")
            guess = int(guess)
            # 每轮游戏重新生成硬币结果
            flip = random.randint(0, 1)
            if flip == 0:
                print("heads")
            if flip == 1:
                print("tails")
            if guess == flip:
                print("you win")
                money = money + 250000
            else:
                print("you lose")
                money = money - 250000
            print("your balance is", money)
            if money == 0:
                sys.exit("you are bankrupt")
            replay = input("play again? y/n")
            if replay == "n":
                sys.exit("goodbye")

if __name__ == "__main__":
    game()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:06:08