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()
修改说明:
- 将
//替换为/,保证半周长s为浮点数,避免精度丢失 - 在
main函数中调用area并接收返回值,解决变量未定义的问题 - 添加
if __name__ == "__main__":触发主函数执行,否则代码不会主动运行 - 无需额外转换
float(),因为sqrt返回的本身就是浮点类型
内容的提问来源于stack exchange,提问作者emkay
相关产品推荐
相关产品推荐

