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

Python三角形面积函数调用报NameError错误的解决方法

解决三角形面积计算的NameError问题

你的代码存在两个关键问题:

  • NameError:a是area函数内部的局部变量,main函数无法直接访问它,必须主动调用area函数并接收其返回值
  • 精度丢失:用//计算半周长s会执行整数除法,哪怕输入是浮点数,结果也会被截断成整数,导致后续面积计算精度出错

修正后的代码如下:

from math import sqrt

def area(linea, lineb, linec):
    """计算三角形面积"""
    s = (linea + lineb + linec) / 2  # 用普通除法替代整数除法,保留浮点精度
    return sqrt(s * (s - linea) * (s - lineb) * (s - linec))

def main():
    linea = float(input("Enter the length of the first side: "))
    lineb = float(input("Enter the length of the second side: "))
    linec = float(input("Enter the length of the third side: "))
    triangle_area = area(linea, lineb, linec)  # 调用area函数,接收返回的面积值
    print("The triangle's area is %.2f" % triangle_area)

# 触发main函数执行,否则程序运行后无输出
if __name__ == "__main__":
    main()

修改说明:

  1. 将//替换为/,保证半周长s为浮点数,避免精度丢失
  2. 在main函数中调用area并接收返回值,解决变量未定义的问题
  3. 添加if __name__ == "__main__":触发主函数执行,否则代码不会主动运行
  4. 无需额外转换float(),因为sqrt返回的本身就是浮点类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:06:33