不使用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
相关产品推荐
相关产品推荐

