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
Je veux créer une sorte de chronomètre qui, lorsque les minutes atteignent 20 minutes, ouvre une boîte de dialogue. Mais ma variable minutes n'augmente pas dans ce code.
Vous pouvez vraiment simplifier tout ce programme en utilisant 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 ">>>>>>>>>>>>>>>>>>>>>", mins
# Sleep for a minute
time.sleep(60)
# Increment the minute total
mins += 1
# Bring up the dialog box here
Voir Objets Minuterie depuis le filetage.
Que diriez-vous
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()
Si vous voulez passer des arguments à la fonction timeout
, vous pouvez les donner dans le constructeur de timer:
def timeout(foo, bar=None):
print('The arguments were: foo: {}, bar: {}'.format(foo, bar))
t = Timer(20 * 60, timeout, args=['something'], kwargs={'bar': 'else'})
Vous pouvez également utiliser functools.partial
pour créer une fonction liée ou transmettre une méthode liée à une instance.
J'utiliserais un timedelta
object.
from datetime import datetime, timedelta
...
period = timedelta(minutes=1)
next_time = datetime.now() + period
minutes = 0
while run == 'start':
if next_time <= datetime.now():
minutes += 1
next_time += period
Votre code est parfait, sauf que vous devez effectuer le remplacement suivant:
minutes += 1 #instead of mins = minutes + 1
ou
minutes = minutes + 1 #instead of mins = minutes + 1
mais voici une autre solution à ce problème:
def wait(time_in_seconds):
time.sleep(time_in_seconds) #here it would be 1200 seconds (20 mins)
Je veux créer une sorte de chronomètre qui, lorsque les minutes atteignent 20 minutes, ouvre une boîte de dialogue .
Tout ce dont vous avez besoin est de dormir à l'heure spécifiée. time.sleep () met des secondes à dormir, donc 20 * 60 équivaut à 20 minutes.
import time
run = raw_input("Start? > ")
time.sleep(20 * 60)
your_code_to_bring_up_dialog_box()
# 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
mins = minutes + 1
devrait être
minutes = minutes + 1
Également,
minutes = 0
doit être en dehors de la boucle while.
import time
...
def stopwatch(mins):
# complete this whole code in some mins.
time.sleep(60*mins)
...
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
En fait, je cherchais moi-même une minuterie et votre code semble fonctionner. La raison probable pour laquelle vos minutes ne sont pas comptabilisées est que lorsque vous dites que
minutes = 0
et alors
minutes = minutes + 1
c'est comme dire
minutes = 0 + 1
Je parie que chaque fois que vous imprimez des minutes, il affiche "1" à cause de ce que je viens d'expliquer, "0 + 1" donnera toujours "1".
Ce que vous devez faire en premier est de placer votre
minutes = 0
déclaration en dehors de votre boucle while. Après cela, vous pouvez supprimer le
minutes = minutes + 1
ligne parce que vous n'avez pas vraiment besoin d'une autre variable dans ce cas, il suffit de le remplacer par
minutes = minutes + 1
Ainsi, les minutes commenceront avec une valeur de "0", recevront la nouvelle valeur de "0 + 1", recevront la nouvelle valeur de "1 + 1", recevront la nouvelle valeur de "2 + 1", etc.
Je me rends compte que beaucoup de personnes y ont déjà répondu, mais je pensais que cela aiderait davantage, en apprenant sage, si vous pouviez voir où vous avez fait une erreur et essayer de la réparer. Merci également pour la minuterie.
import time
mintt=input("How many seconds you want to time?:")
timer=int(mintt)
while (timer != 0 ):
timer=timer-1
time.sleep(1)
print(timer)
Ce travail est très bon pour le temps secondes.
Vous êtes probablement à la recherche d'un objet Timer: http://docs.python.org/2/library/threading.html#timer-objects
Essayez d'avoir votre boucle while comme ceci:
minutes = 0
while run == "start":
current_sec = timer()
#print current_sec
if current_sec == 59:
minutes = minutes + 1
print ">>>>>>>>>>>>>>>>>>>>>", mins
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.