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”。
我该如何修复它?
答案1
您尝试运行的代码在终端中的 Python 2 和 Jupyter 笔记本中的 Python 3 中给出了不同的结果,这是因为 Python 2 和 Python 3 处理浮点数的方式不同(Python 3 中的整数除法与真除法)。
在Python 3中代码结果如下。
From 0
To 1000
??? 0
reached 0
reached 1000
3.1415926535897922
在 Python 2 中,除了最后一行是 2.0 之外,结果是相同的。
从终端运行此代码块的更好方法是安装python3-ipython该包允许您将整个代码块复制/粘贴到终端中并以类似于按下键时从 Jupyter 笔记本中的单元格运行 Python 代码块的方式运行它Enter。
要安装 python3-ipython,请打开终端并输入:
sudo apt install python3-ipython
要启动 ipython3 解释器类型ipython3
,请输入以下命令退出 ipython3 解释器类型exit