如何使用嵌套循环找到数字的平方根?


def main():
num = int(input("What number? "))
err = 0.0001
square_root(num, err)
def square_root(num, err):
for x in range(num):
guess=1
next_guess=guess-((guess*guess)-num)/(2*guess)
guess=next_guess     
print(guess, end=' ' )
print()

在课堂上,我们最近开始使用嵌套循环,我们的一项作业是使用循环使用艾萨克牛顿的微积分方程求解数字的平方根,以求平方根。

老师(尝试(教我们如何使用滑动窗口技术来解决它,但这对我来说没有任何意义。

此代码的问题在于它不会更改"guess"变量,而是会重复打印出相同的数字。它也没有正确解决它。例如,如果我输入 13,它将打印 7.0,这是不正确的,因为 13 的平方根是 3.6。

每次在循环中重置guess。您只需将guess的初始化移到循环之外:

def square_root(num, err):
guess = 1
for x in range(num):
next_guess=guess-((guess*guess)-num)/(2*guess)
guess=next_guess     
return guess
print(square_root(49, .001))

这很快收敛到 7.0,但您可以考虑接受通过循环的次数参数。例如,寻找 2 的平方根并不能给出很好的结果 因为它只循环两次。一种选择是使用传入的err值并运行循环,直到您的猜测仅更改该量。像这样:

def square_root(num, err):
guess = 1.0
curr_err = guess-((guess*guess)-num)/(2*guess)
while(curr_err > err):
next_guess=guess-((guess*guess)-num)/(2*guess)
curr_err = abs(guess - next_guess)
guess=next_guess     
return guess
print(square_root(2, .000001))
#1.4142135623730951

有了这个,您可以调整err以获得越来越准确的结果。

我会尝试查看python sqrt((或pow(num,0.5(函数的工作原理或查看本教程 它很好地解释了滑动窗口技术,我推荐它。

最新更新