TypeError: 不支持的操作数类型 '*':'int' 和 'function',不明白原因和哪个是函数
我搞不懂为什么我在用一个整数和一个函数相乘的时候会出现错误。
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
在你的代码中指向了一个函数,所以你会遇到上面的错误。