在python 2.7中遇到time.sleep问题

时间:2018-02-07 19:50:29

标签: 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")

当我在python 3上运行它时工作正常 但是,在python 2上,我遇到一个问题,其中printnum不适用于多种数字,它不会执行延迟...事实上,到目前为止它只适用于{{1}在我的测试中。

这对于如此简单的代码来说很奇怪。我在2台电脑上测试过。它会发生在你身上吗?有什么理由吗?建议让它工作? (除了转移到我正在使用的硬件上很难的python 3)

2 个答案:

答案 0 :(得分:1)

在Python 2上,/默认在传递int个操作数时截断整数除法,而不是&#34;真正的除法&#34; (产生float个结果)。您可以通过以下两种方式之一进行修复:

  1. from __future__ import division添加到文件顶部以使用Python 3分区规则(/表示始终为真正的分区,如果您真的是指分区,则使用//
  2. 3360更改为float文字,以便执行数学float - 样式,例如time.sleep(3. * abs(ang) / 360)time.sleep(3 * abs(ang) / 360.)

答案 1 :(得分:1)

因为ang可能是一个足够小的整数,所以3 * abs(ang) / 360是一个表达式,其中一个整数除以另一个整数。

Python 2除法默认为整数除法,因此结果可能为0。

修正:

3.0 * abs(ang) / 360