我制作了一个 python 脚本来轻松找到平方根,但我无法阻止它
I made a python script to easily find a square root but I can't stop it
我制作了一个 python 脚本来计算一个数的平方根并打印出到目前为止的结果,但它使用了一个无限循环,我无法停止它。有人知道打印了好几次正确答案后如何停止吗?
我正在寻找停止条件。我可以阻止它,但不知道什么时候停止它
代码如下:
def find_root(n):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
print(hw)
inp = float(input())
find_root(inp)
稍作修改。
def find_root(n):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
prev = -1
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
if prev == hw:
break
prev = hw
print(hw)
inp = float(input())
find_root(inp)
prev 检查您刚才计算的数字以前是否见过。如果是,说明你已经找到了正确的根!
您的代码包含 while true
没有中断。你可以试试:
def find_root(n, eps = 1e-3):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
if (n2-n1) < eps:
run = False
return hw
print(find_root(2)) # 1.4150390625
我制作了一个 python 脚本来计算一个数的平方根并打印出到目前为止的结果,但它使用了一个无限循环,我无法停止它。有人知道打印了好几次正确答案后如何停止吗?
我正在寻找停止条件。我可以阻止它,但不知道什么时候停止它
代码如下:
def find_root(n):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
print(hw)
inp = float(input())
find_root(inp)
稍作修改。
def find_root(n):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
prev = -1
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
if prev == hw:
break
prev = hw
print(hw)
inp = float(input())
find_root(inp)
prev 检查您刚才计算的数字以前是否见过。如果是,说明你已经找到了正确的根!
您的代码包含 while true
没有中断。你可以试试:
def find_root(n, eps = 1e-3):
if n < 1:
print("error")
return
n1 = 1
n2 = n
run = True
while run:
hw = n1 + ((n2 - n1) / 2)
if (hw ** 2) < n:
n1 = hw
else:
n2 = hw
if (n2-n1) < eps:
run = False
return hw
print(find_root(2)) # 1.4150390625