擅长:python、mysql、java
<p>感谢您回答问题,从回答中有两个问题:</p>
<h2>第一个问题:</h2>
<pre><code>if n**2 < num:
</code></pre>
<p>这个条件在第二次或以后的某个迭代中总是返回False,并且是多余的,因此应该删除它以获得解决方案</p>
<h2>第二个问题:</h2>
<pre><code>if (int((temp+n)/2))**2 == num:
</code></pre>
<p>表达式((temp+n)/2)的整数转换返回浮点数的下限值,这会影响输出的精度,因此程序会无限地停留在循环中,等待条件为真。因此需要改变</p>
<h2>最终解决方案:</h2>
<pre><code>def findSquareRt(num):
n = 8 #Initial Guess
while True:
if not num/n == n:
temp = n
n = num/n
if (((temp+n)/2))**2 == num:
return ((temp+n)/2)
else:
n = (temp+n)/2
else:
return n
</code></pre>