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

如何在Python函数内为结果赋值并在函数外调用?附UnboundLocalError报错

解决计算器代码的UnboundLocalError及外部打印结果问题

问题原因

当用户输入无效操作时,else分支仅打印错误提示,但未对result变量赋值。后续执行print("Result: ", result)时,局部变量result因未绑定任何值,触发UnboundLocalError。同时当前代码的result仅在main函数内部可见,无法直接在函数外部访问打印。

解决方案

  1. 修复变量未绑定错误:给result设置初始值,确保所有分支下变量都已定义;
  2. 实现外部打印结果:让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:13