为了账号安全,请及时绑定邮箱和手机立即绑定

牛顿近似平方根的方法

牛顿近似平方根的方法

繁华开满天机 2021-12-09 10:47:03
我正在尝试编写一个函数来计算牛顿法。希望我的代码中不断出现错误。这是给我写代码的提示这是我写下的代码import mathdef 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 estimatedef 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 运行检查时,我不断收到此错误我不太确定这意味着什么,因为我的代码似乎运行得很好。谁能帮忙解释一下?
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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


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

if not x:

    break

x = float(x)

这应该避免EOFError.


编辑

如果您想使用空白输入(点击返回行)来跳出循环,您可以尝试以下替代语法:


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

if not x:

    break

x = float(x)

该not x检查是否x为空。这也更符合Python比x == ""。


查看完整回答
反对 回复 2021-12-09
?
倚天杖

TA贡献1828条经验 获得超3个赞

我是这样做的,Cengage 接受了。


import math


tolerance = 0.000001

def newton(x):

   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))

if __name__ == "__main__":

    main()


查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信