如何解决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
相关产品推荐
相关产品推荐

