39
import time
def timer():
   now = time.localtime(time.time())
   return now[5]


run = raw_input("Start? > ")
while run == "start":
   minutes = 0
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      mins = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins

分が 20 分に達するとダイアログ ボックスが表示されるストップウォッチのようなものを作成したいのですが、ダイアログ ボックスは問題ではありません。しかし、私の分変数はこのコードでは増加しません。

4

14 に答える 14

68

スレッドからのTimer オブジェクトを参照してください。

どうですか

from threading import Timer

def timeout():
    print("Game over")

# duration is in seconds
t = Timer(20 * 60, timeout)
t.start()

# wait for time completion
t.join()

timeout関数に引数を渡したい場合は、タイマー コンストラクターでそれらを指定できます。

def timeout(foo, bar=None):
    print('The arguments were: foo: {}, bar: {}'.format(foo, bar))

t = Timer(20 * 60, timeout, args=['something'], kwargs={'bar': 'else'})

または、 を使用functools.partialしてバインドされた関数を作成するか、インスタンスにバインドされたメソッドを渡すことができます。

于 2013-08-23T15:12:40.277 に答える
31

を使用して、このプログラム全体を本当に単純化できますtime.sleep

import time
run = raw_input("Start? > ")
mins = 0
# Only run if the user types in "start"
if run == "start":
    # Loop until we reach 20 minutes running
    while mins != 20:
        print(">>>>>>>>>>>>>>>>>>>>> {}".format(mins))
        # Sleep for a minute
        time.sleep(60)
        # Increment the minute total
        mins += 1
    # Bring up the dialog box here
于 2013-08-23T15:13:33.777 に答える
2

次の置換を行う必要があることを除いて、コードは完璧です。

minutes += 1 #instead of mins = minutes + 1

また

minutes = minutes + 1 #instead of mins = minutes + 1

しかし、この問題に対する別の解決策は次のとおりです。

def wait(time_in_seconds):
    time.sleep(time_in_seconds) #here it would be 1200 seconds (20 mins)
于 2013-08-23T15:14:58.507 に答える
1
mins = minutes + 1

する必要があります

minutes = minutes + 1

また、

minutes = 0

while ループの外にある必要があります。

于 2013-08-23T15:09:34.937 に答える
1
import time 

...

def stopwatch(mins):
   # complete this whole code in some mins.
   time.sleep(60*mins)

...
于 2015-02-10T11:12:02.007 に答える
1

分が 20 分に達すると、ダイアログ ボックスが表示されるストップウォッチのようなものを作成したいと考えています

必要なのは、指定された時間寝るだけです。time.sleep() はスリープするのに数秒かかるため、20 * 60 は 20 分です。

import time
run = raw_input("Start? > ")
time.sleep(20 * 60)
your_code_to_bring_up_dialog_box()
于 2013-08-23T15:35:26.207 に答える
1
# this is kind of timer, stop after the input minute run out.    
import time
min=int(input('>>')) 
while min>0:
    print min
    time.sleep(60) # every minute 
    min-=1  # take one minute 
于 2014-10-25T22:04:55.203 に答える
0
import time
def timer(n):
    while n!=0:
        n=n-1
        time.sleep(n)#time.sleep(seconds) #here you can mention seconds according to your requirement.
        print "00 : ",n
timer(30) #here you can change n according to your requirement.
于 2016-11-09T07:16:52.930 に答える
0

おそらく Timer オブジェクトを探しているでしょう: http://docs.python.org/2/library/threading.html#timer-objects

于 2013-08-23T15:10:32.880 に答える
0

while ループを次のようにしてみてください。

minutes = 0

while run == "start":
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      minutes = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins
于 2013-08-23T15:12:15.020 に答える