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

Python计算矩形面积时函数相乘报TypeError错误的解决求助

解决TypeError: unsupported operand type(s) for *: 'function' and 'function'问题

错误根源

你犯了两个核心问题:

  1. 直接把length、width这两个函数对象传给了rectanglearea,而非调用函数得到的数值
  2. 你的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:45:43