Hallo,
eigentlich wollte ich ein wenig mit argv rumprobieren. Dazu kam mir die Idee einen Wecker zu programmieren, bei dem die Weckzeit als Arkument beim Aufruf mitgegeben wird. Das hat auch schneller geklappt als ich erwartete.
Aber leider komme ich mit der anschliessenden Weckfunktion nicht weiter. Egal was ich auch bisher versucht habe ist das Ergebnis, dass er entweder nicht weckt (Printzeile "Kikeriki") oder aber EOF, Syntax oder unexpected unident Fehler ausgibt.
Erreichen möchte ich, dass in der Schleife die Jetzt-Zeit (uhrzeit) mit der gesetzten Weckzeit (weckzeit) verglichen wird und solange diese nicht übereinstimmt soll er 1 Sekunde warten vor dem erneuten überprüfen. Stimmen beide Werte dann irgendwann überein soll die "Kikeriki" Zeile ausgegeben werden.
Eigentlich ging ich davon aus, dass das der einfachere Teil wäre, bekomme es aber einfach nicht hin.
Ich weiß. es gibt bestimmt bessere Arten einen Wecker zu programmieren, aber ich würde gern erst mal das hier zum laufen bekommen.
Hier der Code, es geht nur um den unteren Teil ab # Zeit prüfen und wecken. Aufgerufen wird mit ./wecken 20 15 für 20:15 Uhr Weckzeit.
#!/usr/bin/env python3
from datetime import time,datetime
from time import sleep
from sys import argv
while True: # Argument für Stunde prüfen und setzen
try:
stunde = int(argv[1])
except (ValueError, IndexError):
print ("Erster Wert falsch.\nEine Zahl zwischen 0 und 23 eingeben,\noder 99 für Wecker aus.")
exit()
if stunde == 99:
print ("Wecker ist ausgeschaltet")
exit()
else:
if stunde < 0 or stunde > 23:
print ("Erster Wert falsch, \neine Zahl zwischen 0 und 23 eingeben.")
else:
break
while True: # Argument für Minute prüfen und setzen
try:
minute = int(argv[2])
except ValueError:
print ("Zweiter Wert falsch, \neine Zahl zwischen 0 und 59 eingeben.")
exit()
else:
if minute < 0 or minute > 59:
print ("Zweiter Wert falsch, \neine Zahl zwischen 0 und 59 eingeben")
exit()
else:
break
weckzeit = time(hour=stunde, minute=minute).strftime("%H:%M:%S")
#print ("Jetzt ist es",uhrzeit,"Uhr.")
print ("Wecken um", weckzeit,"Uhr.")
# Zeit prüfen und wecken
while True:
try:
uhrzeit = datetime.now().strftime("%H:%M:%S")
if uhrzeit != weckzeit:
sleep(1)
else:
print ("Kikeriki")
break
Alles anzeigen