首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >运行Python代码时输出错误

运行Python代码时输出错误
EN

Stack Overflow用户
提问于 2018-08-18 18:03:27
回答 3查看 115关注 0票数 0

我已经运行了以下代码片段:

#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。为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-18 18:16:54

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

您也可以在Py2中获得这种“新”行为,方法是导入

from __future__ import division

在你的代码之上。

票数 1
EN

Stack Overflow用户

发布于 2018-08-18 18:14:50

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

avg_spd = float(path) / time
票数 1
EN

Stack Overflow用户

发布于 2018-08-18 18:08:48

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

对于您的情况,当您进行除法运算时,将其中一个转换为浮点型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51907424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档