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

Python新手求助:函数循环调用时如何保留balance变量值不重置

问题原因

  • 你在playgame()函数开头写了balance = 2000,这行代码会在每一次调用playgame()的时候,都创建一个局部变量balance,并直接赋值为2000,你后续的修改都是改的这个局部变量,递归调用下一次playgame()的时候又会重新初始化,自然没法持久保存数值。
  • 你最开头写的global balance声明没有生效:一方面你没有在全局作用域定义balance的初始值,另一方面函数内部没有再声明要用全局的balance,操作的都是局部变量。

修复方案

你可以按以下逻辑调整代码:

  1. 把balance = 2000从函数内部移到全局作用域,作为全局变量初始化
  2. 在playgame()函数内部第一行加上global balance声明,告诉函数这次操作的是全局的balance变量,不要创建局部变量
  3. 额外优化:你现在用递归调用playgame()实现重复游戏的逻辑,玩的次数多了会触发递归深度超限报错,可以改成while循环来实现重复游玩的逻辑。

修复后的完整代码

from random import randint

# 全局变量初始化
balance = 2000
name = input("请输入你的名字:")
password = input("请设置密码:")

def playgame():
    global balance
    yesOrNo = input("你想要下注吗?请输入Y/N:")
    if yesOrNo.lower() == "y":
        howBigABet = int(input("你想要下注多少?:"))
        if howBigABet <= balance:
            pickNumber = int(input("请选择一个数字(0或1):"))
            value = randint(0, 1)
            print(f"开出的数字是:{value}")
            if pickNumber == value:
                balance += howBigABet * 2
                print(f"你赢了{howBigABet * 2}")
                print(f"当前余额:{balance}")
            else:
                print("抱歉,你猜错了数字")
                balance -= howBigABet
                print(f"你的新余额是:{balance}")
            
            # 余额检查
            if balance <= 0:
                print(f"你已经没有余额了,{name},请充值")
                return
            elif balance <= 200:
                print("你的余额不足200,是否充值?")
        else:
            print("抱歉,你的余额不足")
    else:
        return

print(f"你好,{name}")
passwordAttempted = input("请输入你的密码:")

if passwordAttempted == password:
    print(f"欢迎回来,{name}")
    # 用循环实现多次游玩,替代递归
    while True:
        playgame()
        continue_play = input("还要继续玩吗?Y/N:")
        if continue_play.lower() != "y":
            print("游戏结束,欢迎下次再来")
            break
else:
    print(f"{name},密码错误!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:27:03