Python计算矩形面积时函数相乘报TypeError错误的解决求助
解决TypeError: unsupported operand type(s) for *: 'function' and 'function'问题
错误根源
你犯了两个核心问题:
- 直接把
length、width这两个函数对象传给了rectanglearea,而非调用函数得到的数值 - 你的
length、width函数没有返回值,就算调用也拿不到输入的有效数值
修正方案
1. 重写输入函数,添加返回值
调整获取长度和宽度的函数,增加return返回验证后的数值,同时避免函数名与内部变量重名:
# 获取长度的函数 def get_length(): while True: length_input = input("Input Length: ") try: # 输入验证通过后返回数值 return float(length_input) except ValueError: print("Invalid input please TRY AGAIN !!") # 获取宽度的函数 def get_width(): while True: width_input = input("Input Width: ") try: return float(width_input) except ValueError: print("Invalid input please TRY AGAIN !!!")
2. 修正面积计算函数
让它接收具体的数值参数,而非函数对象:
# 计算矩形面积 def rectanglearea(length, width): area = length * width print("\nFormula = Length X Width") print("Area Of This Rectangle Is: ", area)
3. 正确调用函数流程
先调用输入函数拿到有效数值,再将数值传给面积计算函数:
# 获取用户输入的长度和宽度数值 rect_length = get_length() rect_width = get_width() # 计算并输出面积 rectanglearea(rect_length, rect_width)
原代码错误细节解释
- 原代码中
rectanglearea(length, width)这行,length和width是函数本身而非数值。Python中函数是一等对象,但不支持直接对函数做乘法运算,因此抛出TypeError。 - 你修改后的
area = length(a) * width(a)依然错误:一方面a是传入的函数对象,完全无用;另一方面原输入函数没有return,调用后默认返回None,最终还是会触发运算错误。
内容的提问来源于stack exchange,提问作者Hiran
相关产品推荐
相关产品推荐

