我正在尝试编写一个函数来计算牛顿方法。期望我的代码中不断出现错误。 这是提示我为
这是我写下的代码
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进行检查时我一直收到此错误
我不太确定这是什么意思,因为我的代码似乎运行得很好。有人可以帮忙解释一下吗?
答案 0 :(得分:0)
当输入为空白时,似乎会出现此问题。假设您只希望使用正数作为输入,一个可能的解决方法是设置一个负数(或其他任何选择),例如-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
是否为空白。与x == ""
相比,它也是 pythonic 。此帖子中还提供了其他方法来检测空白输入:How do you get Python to detect for no input。
答案 1 :(得分:0)
我确实是这样的,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()