0

私はこれでビギナーです。そして、私はa、b、cの初心者について話しています。私はクラスを受講しており、私は完全に立ち往生しているプロジェクトに取り組んでいます。私はこのコードを書きましたが、正確ではないことを除いて問題なく動作しているようです。このコード全体を書き直す必要があると思いますが、そうする前に皆さんを試してみようと思いました。それが仲間から与えられた唯一の選択肢です:(

=== 削除 ====

これにより、タイマーは機能しますが、正しく機能しません。私の問題は、ご覧のとおり、他の変数が 0 になると同時に 1 ずつ増分が開始されることです。これにより、9 と 0 が同時に発生するため、クロックがオフになります。+ 1 が xy または z が完全なミリ秒で 0 になった後に確実に発生するようにするには、このコード内で何ができますか? 私はいくつかのことを試しました。私がアクセスできるものは限られています(時間内に(time.time()へのアクセスのみ)、数学などのモジュールにアクセスできます)ので、あなたの答えが本当に初歩的なものになることを願っています。

これが理にかなっていることを願っています。

4

2 に答える 2

0
import time
import datetime

class timer():
    def start(self):
        while 1:
            x = datetime.datetime.utcnow()
            print(x.strftime('%M.%S.%f'))
            time.sleep(0.1)

worker = timer()
worker.start()

それは仕事をします。Python の精度は非常に限られていることに注意してください。より完全なタイマーを取得したい場合は、最後の既知のミリ秒 (1/1000 秒) を保存し、while 1ループを作成して正確な時間量を待機する必要があります。その後、解放して 内の無限ループを続行しますstart()

線に沿った何か:

これにより、現在の時刻が出力されます

import time
import datetime

def getTime():
    return int(round(time.time() * 1000))

class timer():
    def start(self):
        lastRun = getTime()
        while 1:
            while getTime() - lastRun < 100:
                pass
            lastRun = getTime()
            x = datetime.datetime.utcnow()
            print(x.strftime('%M.%S.%f'))

worker = timer()
worker.start()

これは、Python で得られる精度とほぼ同じです。
そして説明部分に:

x = datetime.datetime.utcnow()x現在の時刻を明らかにと呼ばれる変数に格納します。strftimePythonでは、変数は関数を持つ「オブジェクト」であり、この特定の変数はその内部で呼び出される関数です。
strftimeいくつかのパラメーターを取り、現在の時刻を読み取れるようにする文字列に変換します。この場合%M、分を作成し、その後にドット、次に%S秒、最後にドットとそれに続く%fミリ秒を作成します。
そしてもちろん、それは現在の時間に基づいています。何かが実行されている時間をカウントする必要がある場合は、 の代わりに関数のtime.time() - self.time1 つに追加できます。これにより、何かが実行されている時間をカウントします。datetime.datetimeutcnow()

そしてこれがストップウォッチ

import time
import datetime

def getTime():
    return int(round(time.time() * 1000))

class timer():
    def __init__(self):
        self.time = datetime.datetime.today()

    def start(self):
        lastRun = getTime()
        while 1:
            while getTime() - lastRun < 100:
                pass
            lastRun = getTime()
            x = datetime.datetime.today() - self.time
            print(x)

worker = timer()
worker.start()

コードはほぼ同じです。唯一の違いは、self.time「起動時間」を格納する の使用です。 で減算nowstartup timeます。したがって、操作は次のようになります。

  • 店の立ち上げ
  • ループごとに、「今」を取得します
  • now-startup=実行時間
  • 結果を印刷すると、自動的に「0:00:01.800000」としてフォーマットされます
于 2013-05-07T17:17:39.263 に答える