TypeError: 不支持的操作数类型 '*':'int' 和 'function',不明白原因和哪个是函数

0 投票
2 回答
3690 浏览
提问于 2025-05-10 09:59

我搞不懂为什么我在用一个整数和一个函数相乘的时候会出现错误。

File "E:/Fundamentals of Programming/Programs/polygon_area.py", line 23, in polygon_area
    area = (num_sides * side_length * side_length) / \
TypeError: unsupported operand type(s) for *: 'int' and 'function'

代码:

#this program computes
#the area of polygons

import math


def main():
    get_side_length()
    side_length = get_side_length
    report(side_length)

    def report(side_length):
        print('side length \t number of sides \t area')

    for i in range(3, 10):
        num_sides = i
        polygon_area(num_sides, side_length)
        area = polygon_area
        print(side_length, '\t', num_sides, '\t', area)


def polygon_area(num_sides, side_length):
    area = (num_sides * side_length * side_length) / \
           (4 * math.tan(math.pi / num_sides))
    return area


def get_side_length():
    int(input('Input the length of a side. '))
    return get_side_length


#start program
main()

相关文章:

  • 暂无相关问题
暂无标签

2 个回答

0

抱歉我没有仔细看你的代码。你需要知道一个函数应该返回一些东西。在你的 get_side_length 函数里,比如说,结果是一个整数,应该把这个结果返回。

我已经修改了你的代码,现在应该可以正常工作了。

import math

def main():
    side_length = get_side_length() # get_side_length returns an integer and assigns it to side_length
    report(side_length)

    def report(side_length):
        print('side length \t number of sides \t area')

    for i in range(3, 10):
        num_sides = i
        area = polygon_area(num_sides, side_length) # polygon_area returns an number representing the area and assigns it to area
        print(side_length, '\t', num_sides, '\t', area)


def polygon_area(num_sides, side_length):
    area = (num_sides * side_length * side_length) / \
           (4 * math.tan(math.pi / num_sides))
    return area


def get_side_length():
    return (input('Input the length of a side. ')) # you get an integer from input and should return it
1

你调用函数的方式导致了这个问题。

side_length = get_side_length

上面的代码把 side_length 赋值成了函数本身。要把 side_length 赋值为函数返回的值,你应该这样做:

side_length = get_side_length()

类似地,

area = polygon_area(num_sides, side_length)

get_side_length 函数应该是:

def get_side_length():
    side_length = int(input('Input the length of a side. '))
    return side_length

因为 side_length 在你的代码中指向了一个函数,所以你会遇到上面的错误。

撰写回答