擅长:python、mysql、java
<p>你的函数是按照你描述的方式工作的,但是我不明白你在剩下的代码中是如何使用它的。你知道吗</p>
<p>你似乎在尝试用牛顿法的一个变种来近似平方根,但很难理解你是如何实现它的。代码中的一些变量没有被使用(什么是<code>temptrunk</code>?),很难确定这是故意的还是错误的。你知道吗</p>
<p>如果它确实是您想要实现的牛顿法,那么您需要一个收敛到目标值的近似函数。为了做到这一点,你要计算一个猜测的算术平均数,然后用你的目标值除以这个猜测(<code>new_guess = mean([old_guess, target/old_guess])</code>)。一旦你有了它,你只需要比较<code>new_guess</code>和<code>target</code>之间的差异,一旦它达到一个给定的阈值(在你的代码中,<code>vague</code>),你就可以中断循环了。你知道吗</p>
<p>有多种方法可以改进代码的其他方面:</p>
<ul>
<li>我建议不要使用sentinel值来打破循环,<code>break</code>语句更显式。你知道吗</li>
<li><p>您可以直接使循环具有最大的步数,使用:</p>
<pre><code>for step in range(MAX_STEPS):
guess = ... # try to guess
if abs(target - guess) < delta:
break
else:
print("Maximum steps reached.")
</code></pre>
<p>只有当<code>break</code>未达到</strong>时,才会调用<code>else</code>块。</p></li>
</ul>