如何在Python函数内为结果赋值并在函数外调用?附UnboundLocalError报错
解决计算器代码的UnboundLocalError及外部打印结果问题
问题原因
当用户输入无效操作时,else分支仅打印错误提示,但未对result变量赋值。后续执行print("Result: ", result)时,局部变量result因未绑定任何值,触发UnboundLocalError。同时当前代码的result仅在main函数内部可见,无法直接在函数外部访问打印。
解决方案
- 修复变量未绑定错误:给
result设置初始值,确保所有分支下变量都已定义; - 实现外部打印结果:让
main函数返回计算得到的result,在函数外部接收返回值后再打印。
修改后的代码
import math def main(): # 提示用户输入操作符 op = input("Enter the operation (+, -, *, /, % or ^): ") # 提示用户输入第一个数字 num1 = float(input("Enter the first number: ")) # 提示用户输入第二个数字 num2 = float(input("Enter the second number: ")) result = None # 初始化result,避免未绑定错误 if op == "+": result = num1 + num2 elif op == "-": result = num1 - num2 elif op == "*": result = num1 * num2 elif op == "/": result = num1 / num2 elif op == "%": result = num1 % num2 elif op == "^": result = pow(num1, num2) else: print("Invalid operation") return result # 返回计算结果 # 在函数外部接收结果并打印 calculation_result = main() if calculation_result is not None: print("Result: ", calculation_result)
补充说明
- 初始化
result为None,确保无论用户输入何种操作,变量都处于已定义状态,彻底避免UnboundLocalError; - 通过
return result将函数内部的计算结果传递到外部,再通过判断结果是否有效,决定是否打印最终计算值。若为无效操作,仅输出错误提示,不打印无效结果。
内容的提问来源于stack exchange,提问作者Zaker Samoray
相关产品推荐
相关产品推荐

