Программа Python не работает должным образом [закрыто]

from math import factorial as f
a=int(input("From "))
b=int(input("To "))
x=float(input("??? "))
if a<b:
    for k in range(a,b+1):
        x+=(2**(k+1))*f(k)*f(k)/f(2*k+1)
        if k%1000==0:print("reached",k)
    print(x)
else: print("Wrong values, a must be smaller than b")

После запуска программы в терминале для ввода a = 0, b = 1000 и x = 0 программа выдала "2.0" в качестве вывода. Но когда я запустил ее на записной книжке Jupyter, результат был «3.1415926535897922».

Как это исправить?

Image from my computer

-2
задан 13 January 2021 в 13:17

1 ответ

Код, который вы пытаетесь запустить, дал разные результаты на Python 2 в терминале и на Python 3 в ноутбуке Jupyter из-за того, что на Python 2 и Python 3 по-разному работают с числами с плавающей точкой (целочисленное деление против истинного деления на Python 3).

На питоне 3 результаты кода следующие.

From 0
To 1000
??? 0
reached 0
reached 1000
3.1415926535897922

На питоне 2 результаты одинаковы, за исключением последней строки, которая равна 2.0.

Лучшим способом запуска этого блока кода из терминала является установка пакета python3-ipython, который позволяет скопировать/вставить весь блок кода в терминал и запустить его аналогично тому, как блок кода на Python запускается из ячейки ноутбука Jupyter при нажатии клавиши Enter.

Для установки python3-ipython откройте терминал и наберите:

sudo apt install python3-ipython

Для запуска интерпретатора ipython3 тип ipython3 и выхода из интерпретатора ipython3 тип выход

-1
ответ дан 18 March 2021 в 23:44

Другие вопросы по тегам:

Похожие вопросы: