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».
Как это исправить?
Код, который вы пытаетесь запустить, дал разные результаты на 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 тип выход