python 2.7中的time.sleep有问题
我正在运行这个非常简单的函数进行测试:python 2.7中的time.sleep有问题,python,python-2.7,time,sleep,Python,Python 2.7,Time,Sleep,我正在运行这个非常简单的函数进行测试: import time def printnum(ang): if ang > 0: print(ang) time.sleep(3 * abs(ang) / 360) print("done") if ang < 0: print(ang) time.sleep(3 * abs(ang) / 360) print("done")
import time
def printnum(ang):
if ang > 0:
print(ang)
time.sleep(3 * abs(ang) / 360)
print("done")
if ang < 0:
print(ang)
time.sleep(3 * abs(ang) / 360)
print("done")
导入时间
def printnum(ang):
如果ang>0:
打印(ang)
睡眠时间(3*abs(ang)/360)
打印(“完成”)
如果ang<0:
打印(ang)
睡眠时间(3*abs(ang)/360)
打印(“完成”)
当我在Python3上运行它时,它工作得很好
然而,在Python2上,我遇到了一个问题,printnum
不能处理大范围的数字,它不能执行延迟。。。事实上,到目前为止,它只在我的测试中使用了printnum(180)
对于一个如此简单的代码来说,这很奇怪。我在两台电脑上测试过。这种事发生在你身上吗?有什么原因吗?让它工作的建议?(除了转移到Python3(这对我正在使用的硬件来说很难)在Python2上,
/
在传递int
操作数时默认截断整数除法,而不是“真除法”(产生float
结果)。您可以通过以下两种方式之一进行修复:
从uuuuu future\uuuuu导入分割
添加到文件顶部,以使用Python 3分割规则(/
表示始终使用真正的分割,如果您真正指的是楼层分割,则使用/
)3
或360
更改为float
文字,以便以float
方式执行数学运算,例如time.sleep(3.*abs(ang)/360)
或time.sleep(3*abs(ang)/360)。
在Python2上,
/
在传递int
操作数时默认截断整数除法,而不是“真除法”(产生float
结果)。您可以通过以下两种方式之一进行修复:
从uuuuu future\uuuuu导入分割
添加到文件顶部,以使用Python 3分割规则(/
表示始终使用真正的分割,如果您真正指的是楼层分割,则使用/
)3
或360
更改为float
文字,以便以float
方式执行数学运算,例如time.sleep(3.*abs(ang)/360)
或time.sleep(3*abs(ang)/360)。
由于
ang
可能是一个足够小的整数,因此3*abs(ang)/360
是一个整数除以另一个整数的表达式
Python 2除法默认为整数除法,因此结果可能是0
修正:
由于
ang
可能是一个足够小的整数,因此3*abs(ang)/360
是一个整数除以另一个整数的表达式
Python 2除法默认为整数除法,因此结果可能是0
修正:
整数除法使
3*abs(ang)/360
0。试试3.0*abs(ang)/360
python2/
在两个int
对象之间进行整数除法。为了获得真正的除法行为,from\uuuuu future\uuuu导入除法
integer除法将3*abs(ang)/360
0。试试3.0*abs(ang)/360
python2/
在两个int
对象之间进行整数除法。要获得真正的分区行为,from\uuuuuu future\uuuu导入分区
3.0 * abs(ang) / 360