<p>您的代码有许多问题。从语法上讲,有两种:</p>
<p><code>horiztonal_total</code>是一个打字错误。在所有情况下都应为<code>horizontal_total</code></p>
<p>您需要导入数学函数:</p>
<pre><code>from math import sin, cos, sqrt, radians, atan2, degrees
</code></pre>
<p>从逻辑上讲,问题是当您应用<code>radians()</code>时。你在错误的地方做,而不是在你应该做的地方做。以下是给出正确答案的代码版本:</p>
<pre><code>from math import sin, cos, sqrt, radians, atan2, degrees
def find_net_force(forces):
horizontal_total = 0
vertical_total = 0
for i in forces:
horizontal = i[0] * cos(radians(i[1]))
vertical = i[0] * sin(radians(i[1]))
horizontal_total += horizontal
vertical_total += vertical
total_magnitude = sqrt(horizontal_total ** 2 + vertical_total ** 2)
total_angle = atan2(vertical_total, horizontal_total)
total_angle = degrees(total_angle)
total_magnitude = round(total_magnitude, 1)
total_angle = round(total_angle, 1)
force = (total_magnitude, total_angle)
return force
forces = [(10, 90), (10, -90), (100, 45), (20, 180)]
print(find_net_force(forces))
</code></pre>
<p>结果</p>
<pre><code>(87.0, 54.4)
</code></pre>
<p>记住<code>radians()</code>将度转换为弧度。还要知道,所有数学运算都接受以弧度表示的角度和返回角度。因为您的输入值是以度为单位的,所以在将它们传递给<code>sin()</code>或<code>cos()</code>之前,将它们的引用包装在<code>radians()</code>中是有意义的,如<code>cos(radians(i[1]))</code>。这给了你一个单位力。也就是说,假设总力为<code>1</code>,则为特定方向上的力。要从<code>1</code>以外的某个量级获得总力,可以将该量级乘以sin/cos的返回值,您已经在这样做了</p>
<p><code>atan2</code>实际上与调用<code>sin()</code>和<code>cos()</code>相反。它把一对震级变成一个角度。结果以弧度为单位。由于您希望以度为单位的结果与输入值匹配,因此可以对结果调用<code>degrees</code></p>
<p>干得好。你真的很接近!快乐编码</p>