牛顿近似平方根的方法

问题描述 投票:1回答:1

我正在尝试编写一个函数来计算牛顿方法。期待我的代码中出现错误。这是我给编写代码的提示

这是我写下的代码

import math

def newton(x):
   tolerance = 0.000001
   estimate = 1.0
   while True:
        estimate = (estimate + x / estimate) / 2
        difference = abs(x - estimate ** 2)
        if difference <= tolerance:
            break
   return estimate

def main():
   while True:
       x = input("Enter a positive number or enter/return to quit: ")
       if x == '':
           break
       x = float(x)
       print("The program's estimate is", newton(x))
       print("Python's estimate is     ", math.sqrt(x))
main()

它似乎工作但我在Cengage 上运行检查时一直收到此错误

我不确定这意味着什么,因为我的代码似乎运行得很好。有人可以帮忙解释一下吗?

python newtons-method
1个回答
0
投票

当输入为空时,似乎会出现此问题。一个潜在的解决方法,假设你只想要正数作为输入,将设置一个负数(或你选择的任何其他东西),例如-1作为退出条件:

x = input("Enter a positive number or enter/return to quit: ")
if not x:
    break
x = float(x)

这应该避免EOFError


Edit

如果你想使用空白输入(点击返回行)来摆脱循环,你可以尝试这种替代语法:

x = input("Enter a positive number or enter/return to quit: ")
if not x:
    break
x = float(x)

not x检查x是否为空白。它也比x == ""更pythonic。检测空白输入的其他方法也在这篇文章中:How do you get Python to detect for no input

© www.soinside.com 2019 - 2024. All rights reserved.