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 notebook 上运行它时,输出是“3.1415926535897922”。
我该如何解决?
您尝试运行的代码在终端中的 Python 2 和 Jupyter notebook 中的 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包,它允许您将整个代码块复制/粘贴到终端中,并以类似于从一个 Python 代码块运行的方式运行它当您按下Enter键时,Jupyter 笔记本中的单元格。
要安装 python3-ipython 打开终端并输入:
sudo apt install python3-ipython
启动 ipython3 解释器类型ipython3
并退出 ipython3 解释器类型exit
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句