运行Python代码时输出错误

运行Python代码时输出错误,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我已运行以下代码段: #Physics Equations #Default_Variables default_path = 10000 default_time = 18000 default_ini_vel = 1 default_acceleration = 1 #Variables path = default_path time = default_time ini_vel = default_ini_vel acceleration = default_acceleration

我已运行以下代码段:

#Physics Equations

#Default_Variables
default_path = 10000
default_time = 18000
default_ini_vel = 1
default_acceleration = 1

#Variables
path = default_path
time = default_time
ini_vel = default_ini_vel
acceleration = default_acceleration

#Compute
avg_spd = path / time
velocity = (ini_vel + (acceleration * time))

#Prints
print("Average Speed = " + str(avg_spd))
print("Velocity = " + str(velocity))
我希望代码返回一个包含许多小数位的平均速度的浮点型值。
平均速度的输出等于0。为什么?

Python 3将给出一个浮点数作为两个整数除法的答案,Python 2将给出一个整数


在您的例子中,当您进行除法时,将其中一个转换为浮点。

Python 3将给出一个浮点作为两个整数除法的答案,Python 2将给出一个int


在您的情况下,在进行除法时,将其中一个除法转换为浮动。

在Python3和Python2中使用/除法的效果不同。假设您现在使用的是2,其中/运算符进行整数除法,即向下舍入到最接近的整数。在这种情况下,零。可以通过在分割值之前将值转换为浮点数来避免这种情况:

avg_spd = float(path) / time

在Python3和Python2中,带/的除法的工作方式不同。假设您现在使用的是2,其中/运算符进行整数除法,即向下舍入到最接近的整数。在这种情况下,零。可以通过在分割值之前将值转换为浮点数来避免这种情况:

avg_spd = float(path) / time

正如其他人已经观察到的,最有可能的罪魁祸首是
avg_spd=path/time
。在Py2中,这是整数除法,结果向下舍入到最接近的整数。在Py3中,这种行为已经改变,并返回可能更直观的浮点结果

您也可以在Py2中通过导入

from __future__ import division

正如其他人已经观察到的,最有可能的罪魁祸首是路径/时间。在Py2中,这是整数除法,结果向下舍入到最接近的整数。在Py3中,这种行为已经改变,并返回可能更直观的浮点结果

您也可以在Py2中通过导入

from __future__ import division

在Python2中,两个整数的除法总是得到一个向上舍入的整数。 因此,在您的情况下,答案将是10000/18000的四舍五入结果,即0

Python3中,您将得到一个float,这是您真正想要的答案。 但是如果您想在Python2中得到相同的答案,那么只需将您的路径转换为float,您就会在float中得到所需的答案:

avg_speed = (float)path/time

Python2中,两个整数的除法将始终产生一个向上舍入的整数。 因此,在您的情况下,答案将是10000/18000的四舍五入结果,即0

Python3中,您将得到一个float,这是您真正想要的答案。 但是如果您想在Python2中得到相同的答案,那么只需将您的路径转换为float,您就会在float中得到所需的答案:

avg_speed = (float)path/time

我以前成功运行过这个程序。但是问题在我下次运行它时就开始出现了。在Python3和Python2中,带/的除法的工作方式不同。假设您现在使用的是2,其中/运算符进行整数除法,即向下舍入到最接近的整数。在这种情况下,零。您可以通过在分割之前将值转换为浮点数来避免这种情况。谢谢,我忘了带着Python2和Python3。使用了错误的程序。我以前成功运行过该程序。但是问题在我下次运行它时就开始出现了。在Python3和Python2中,带/的除法的工作方式不同。假设您现在使用的是2,其中/运算符进行整数除法,即向下舍入到最接近的整数。在这种情况下,零。您可以通过在分割之前将值转换为浮点数来避免这种情况。谢谢,我忘了带着Python2和Python3。用错了。