Ich habe Probleme mit dem Code unten, der den Benutzer fragt, eine 'Weckzeit' eingeben, die das Python-Skript dann verwenden wird, um zu berechnen, wie lange bis die Uhr erreicht Null. Von dem, was ich unten habe, denke ich, dass ich die tdelta
Berechnung innerhalb der While-Schleife platzieren muss, so dass es ständig nach der aktuellen Zeit sucht.Python3: Kontinuierliche Aktualisierung von Datetime-Wert von innerhalb WHEN Schleife
Im Moment scheint tdelta
nach der aktuellen Zeit in Sekunden zu suchen und dann denselben Wert zu verwenden, um die while-Schleife zu durchlaufen. Daher nie endend, weil es die gleiche Zeit immer wieder verwendet. Sollte ich innerhalb der While-Schleife eine Funktion verwenden, um kontinuierlich nach dem neuen Wert zu suchen, und dann wahr oder falsch auswerten?
from datetime import datetime
import time
now = datetime.now()
hms = "%s:%s:%s" % (now.hour, now.minute, now.second)
ans = input('Enter hour:minute:seconds')
s1 = hms
s2 = ans # for example
FMT = '%H:%M:%S'
tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
if tdelta.days < 0:
tdelta = timedelta(days=0,
seconds=tdelta.seconds, microseconds=tdelta.microseconds)
while tdelta.seconds != 0:
# Use this to see what is happening inside the loop. Here it continuously prints the same time in seconds so is a continuous loop. I need to somehow update the tdelta time.
if tdelta.seconds != 0:
print(tdelta.seconds)
time.sleep(1)
else:
print('time up...do something')
Ich habe Dutzende von Varianten des obigen Codes versucht, aber ohne Glück. Ich schätze alle Tipps. Vielen Dank.
Sie müssen in der Schleife aktualisieren, tdelta - = Timedelta (Sekunden = 1) nach dem Importieren von Timedelta auch –
Vielleicht möchten Sie einen Scheduler verwenden? https://docs.python.org/3/library/sched.html –