为何我的代码输出函数对象而非三角形面积与周长?急求解答
问题分析与修复
你的代码存在三个核心问题,导致输出的是函数对象而非预期的计算结果:
1. 函数返回值错误
两个计算函数中,你返回的是函数本身(比如return triangle_area),而非计算好的结果变量。
2. 未正确调用函数
打印时直接引用函数名,没有传入参数并执行函数,Python会默认输出函数的内存地址。
3. 面积计算不符合要求
用//做整数除法,无法返回注释要求的float类型结果,需要改用浮点除法。
修正后的完整代码
def triangle_area(base, height): # 计算面积并返回float类型 area = base * height / 2 return area def triangle_perimeter(a,b,c): # 返回周长(求和后round不影响,因为输入是整数) perimeter = round(a+b+c) return perimeter def main(): base = int(input('Enter the base of the triangle: ')) height = int(input('Enter the height of the triangle: ')) second = int(input('enter the second side of the triangle: ')) third = int(input('Enter the third side of the triangle: ')) # 调用函数并传入对应参数 print('the area of the triangle is: ', triangle_area(base, height)) print('the perimeter of the triangle is: ', triangle_perimeter(base, second, third)) # 确保主函数在脚本直接运行时执行 if __name__ == "__main__": main()
关键修改说明
- 返回值修正:把
return triangle_area改为return area,return triangle_perimeter改为return perimeter,确保返回计算结果而非函数对象。 - 函数调用修正:打印时主动调用函数并传入参数,比如
triangle_area(base, height),触发函数执行并获取返回值。 - 面积计算修正:将
//替换为/,保证结果为float类型,符合注释要求。 - 语义优化:给输入提示补充
side,让描述更清晰;添加if __name__ == "__main__":,规范脚本执行逻辑。
内容的提问来源于stack exchange,提问作者minimoon
相关产品推荐
相关产品推荐

