我正在处理打印出圆柱体表面区域的代码:
class Cylinder(object):
def __init__(self,height=1,radius=1):
self.height = height
self.radius = radius
def volume(self):
return float(3.14159265359 *(radius**2) * height)
def surface_area(self):
return ((2 * 3.14159265359 (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))
所有代码都有效......除了surface_area
height = 5
radius = 7
cy = Cylinder(height,radius)
cy.volume()
此块打印出来: 769.69020012955,这是正确的。
这是发生错误的地方:
cy.surface_area()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-142-116a6dc9a6c1> in <module>()
----> 1 cy.surface_area()
<ipython-input-139-66295086aec9> in surface_area(self)
9
10 def surface_area(self):
---> 11 return ((2 * 3.14159265359 (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))
TypeError: 'float' object is not callable
^这是错误,我在Python 2中工作,我无法弄清问题是什么。代码出了什么问题? - 我也想知道为什么它会说&#39;浮动&#39;当我没有打电话时,我不能打电话。
答案 0 :(得分:4)
您在此处调用浮点值:
3.14159265359 (self.radius **2)
请注意,float和(...)
之间没有任何内容。你可能想要成倍增加,所以你错过了*
:
return ((2 * 3.14159265359 * (self.radius **2)) + (2 * 3.14159265359 * self.radius * self.height))
您可能希望使用math.pi
constant而不是每次都输入:
from math import pi
# ...
return 2 * pi * (self.radius ** 2) + 2 * pi * self.radius * self.height
答案 1 :(得分:0)
将jinja2
替换为3.14159265359 (self.radius **2)
。或者甚至更好,导入3.14159265359 * (self.radius **2)
并将math
替换为3.14159265359
。有关math.pi
模块,请参阅reference。