【问题标题】:SAME code giving DIFFERENT output in python [closed]相同的代码在python中给出不同的输出[关闭]
【发布时间】:2021-04-13 22:33:13
【问题描述】:

我尝试在不同的 python 平台上运行此代码相同的 python 代码得到不同的输出 以下是输出:

Microsoft V.S Code=7654321.0 

python official ide=77316373.73737083

我的代码是,

import math
a=1234567
i=len(str(a))
number=0
while a>0:
    digit=a%10
    number=digit*math.pow(10,i)+number
    a=a/10
    i=i-1;
print(number)

【问题讨论】:

  • 请阅读How to Ask。您的问题内置了一些谜团:第三个 python 平台是什么?每个平台上的 Python 版本是什么?你得到了什么输出?
  • 第一个答案是python 2.x,第二个答案是python 3.xa=a/10 与众不同。
  • 更改了标签,因为 'n/m' 的结果与用于编写该表达式的编辑器/IDE 无关。

标签: python math visual-studio-code python-idle


【解决方案1】:

它在 python 2 和 python 3 中产生不同的输出,因为 / 运算符的行为不同。

在 Python 2 中,/ 是一个“floordiv” - 除整数的结果被四舍五入到小于结果的最接近的整数。

在 Python 3 中,/ 是一个“truediv”——无论是整数还是浮点数,结果都是浮点数。

您的 IDE 使用不同的 Python 版本,因此当您运行 Python 代码时,您会得到不同的结果。 VS Code 调用默认系统 python,在您的情况下是 Python 2,而 python ide(IDLE?)使用与它一起安装的 python - Python 3。

【讨论】:

    【解决方案2】:

    我只收到 77316373.73737083。可能还有其他问题。 在 VS 中检查 a 和所有 10 的值

    【讨论】:

    • 是的,我也试过了,值为 77316373.73737083
    • 您必须运行python 2.x 中的代码才能获得不同的输出。
    【解决方案3】:

    看起来你想反转整数,所以使用整数运算符 ** // 而不是浮点运算符。至于为什么float计算不同,常见的float计算取决于python运行时的精度,如果精度很重要,一个好的做法是使用专业的数学库。

    import math
    
    a = 1234567
    i = len(str(a))
    number = 0
    while a > 0:
        digit = a % 10
        number = digit * (10 ** i) + number
        a = a // 10
        i = i - 1;
    print(number)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 2020-08-17
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多