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

不使用global函数,如何修改局部变量作用域并通过return更新money变量?

利用return更新全局money变量(无需global)

原代码问题分析

原代码里直接在函数内修改全局变量money会触发UnboundLocalError——Python会把函数内赋值的money当成局部变量,但这个变量在函数里根本没提前定义,自然报错。

修改方案(用return实现)

核心逻辑很简单:让函数只负责返回对应饮品的价格,把全局变量money的更新操作放到函数外部来做,完全不用global声明。

修改后的代码

drink = input("What would you like? (espresso/latte/cappuccino): ")

money = 0
def price(drink):
    if drink == "espresso":
        return 1.5
    elif drink == "latte":
        return 2.0
    elif drink == "cappuccino":
        return 3.0
    # 处理用户输入错误的情况
    else:
        print("Sorry, we don't serve that.")
        return 0

# 调用函数拿到价格,再更新全局money
cost = price(drink)
money += cost

print(f"money = ${money:.2f}")  # 格式化金额为两位小数,更贴合实际场景

关键改动说明

  • price函数不再直接碰全局的money,只专注于根据饮品类型返回对应的价格数值
  • 在主代码里,先通过cost = price(drink)获取函数返回的价格,再用money += cost完成全局变量的更新
  • 加了无效输入的处理,返回0避免异常情况影响后续逻辑
  • 打印时用.2f格式化,让金额显示更规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:45:36