Python 程序无法正常工作

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”。

我该如何修复它?

图片来自我的电脑

答案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

相关内容