簡體   English   中英

在python 2.7中有time.sleep的問題

[英]Having an issue with time.sleep in python 2.7

我正在運行此非常簡單的功能進行測試:

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不能在廣泛的數字上運行,它沒有執行延遲...實際上,到目前為止,它僅具有在我的測試中使用了printnum(180)

對於這么簡單的代碼,這很奇怪。 我已經在2台計算機上進行了測試。 你有事嗎 有什么原因嗎? 建議使其工作? (除了轉向在我正在使用的硬件上很難使用的python 3之外)

在Python 2上, /傳入int操作數時默認為截斷整數除法,而不是“ true除法”(產生float結果)。 您可以采用以下兩種方式之一進行修復:

  1. from __future__ import division添加到文件頂部以使用Python 3分區規則( /始終表示真正的分區,如果真的表示地板分區,則始終使用//
  2. 3360更改為float文字,以便以float樣式執行數學運算,例如time.sleep(3. * abs(ang) / 360)time.sleep(3 * abs(ang) / 360.)

因為ang可能是一個足夠小的整數,所以3 * abs(ang) / 360是一個整數除以一個整數的表達式。

Python 2除法默認為整數除法,因此結果可能為0。

固定:

3.0 * abs(ang) / 360

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM