<p>括号有问题。你写道:</p>
<pre><code>sArea = pi * ((r1+r2) * sqrt(h**2 + ((r2-r1)**2) + (pi * (r1**2))))</code></pre>
<p>对应于:</p>
<p><a href="https://i.stack.imgur.com/7vrDF.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/7vrDF.gif" alt="wrong equation"/></a></p>
<p>正如您所注意到的,<code>pi * (r1 ** 2)</code>也放在平方根之下,这是不正确的。你知道吗</p>
<p>您可以将其重写为:</p>
<pre><code>from math import pi, sqrt
def surfaceArea(r1, r2, h):
return pi * (r1 + r2) * sqrt((r2-r1)**2 + h*h) + pi * r1 * r1</code></pre>
<p>或更详细:</p>
<pre><code>from math import pi, sqrt
def surfaceArea(radius1, radius2, h):
return pi * (radius1 + radius2) * sqrt((radius2-radius1)**2 + height**2) + pi * (radius1**2)</code></pre>
<p>但实际上,写<code>x * x</code>通常比写<code>x ** 2</code>更有效(而且数字正确)。你知道吗</p>
<p>编辑:</p>
<p>然而,你提出的公式是不正确的。公式为:</p>
<p><a href="https://i.stack.imgur.com/Fx6oR.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Fx6oR.gif" alt="correct equation"/></a></p>
<p>我们可以将其实现为:</p>
<pre><code>from math import pi, sqrt
def surfaceArea(r1, r2, h):
return pi * ((r1 + r2) * sqrt((r2-r1)**2 + h*h) + r1*r1 + r2*r2)</code></pre>