Метод Ньютона для аппроксимации квадратных корней - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь запрограммировать функцию для вычисления метода Ньютона. Ожидайте, что я продолжаю получать ошибку в своем коде. Это подсказка, которую мне дали написать код для

И это мой код, который я записал

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

Я не совсем уверен, что это значит, потому что мой код работает нормально. Кто-нибудь может помочь объяснить это?

1 Ответ

0 голосов
/ 19 марта 2019

Проблема возникает, когда ввод пуст. Потенциальный обходной путь, предполагая, что вы хотите, чтобы в качестве входных данных были только положительные числа, состоял бы в том, чтобы установить отрицательное число (или что-либо еще по вашему выбору), например, -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 == "". В этом посте также описаны дополнительные методы обнаружения пустых входных данных: Как получить Python для обнаружения отсутствия ввода .

...