我正在编写一个程序,该程序应该通过暴力来确定数字的平方根。但是,某些数字(每次都相同)。
这是代码:
toCalc = 3
guess = toCalc
toCalc = round(toCalc, 2)
while 1+1==2:
print "Trying ", guess, "..."
calc = guess * guess
calc = round(calc, 2)
print calc
guess = guess - 0.01
if calc == toCalc:
break
这是输出:
Trying 1.22 ...
1.49
Trying 1.21 ...
1.46
Trying 1.2 ...
1.44
Trying 1.19 ...
1.42
Trying 1.18 ...
1.39
Trying 1.17 ...
1.37
Trying 1.16 ...
1.35
Trying 1.15 ...
1.32
Trying 1.14 ...
1.3
Trying 1.13 ...
1.28
Trying 1.12 ...
1.25
Trying 1.11 ...
1.23
Trying 1.1 ...
1.21
Trying 1.09 ...
1.19
Trying 1.08 ...
1.17
Trying 1.07 ...
1.14
Trying 1.06 ...
1.12
Trying 1.05 ...
1.1
Trying 1.04 ...
1.08
Trying 1.03 ...
1.06
Trying 1.02 ...
1.04
Trying 1.01 ...
1.02
Trying 1.0 ...
1.0
Trying 0.99 ...
0.98
Trying 0.98 ...
0.96
Trying 0.97 ...
0.94
Trying 0.96 ...
0.92
Trying 0.95 ...
0.9
Trying 0.94 ...
0.88
Trying 0.93 ...
0.86
Trying 0.92 ...
0.85
Trying 0.91 ...
0.83
“尝试”下面的数字是计算值,“尝试”后面的数字是猜测值。
最佳答案
当您采用下一个猜测
(即旧猜测 - 0.01
)并将其平方时,下一个平方
大约为旧square - 0.02
(使用二项公式)。这意味着猜测平方列中的步长约为 0.02,因此缺少数字。
你是这个意思吗?
更好的算法可能是使用二分法(谷歌搜索)。
关于Python 跳过数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140699/