Raspberry Pi Wecker

  • Hallo zusammen,


    ich bin gerade dabei ein Skript für einen Wecker zu schreiben und finde meinen Fehler einfach nicht.
    Stehe noch ganz am Anfang und mir geht es erstmal nur darum überhaupt einen funktionierenden Wecker zu haben.
    Vielleicht kann mir ja einer von euch helfen, ich bin noch ganz neu in der Materie und freu mich über jegliche Hilfe Stellungen :)




    Gruß Huhn!


    Mein Skript:


    [font="helvetica, arial, sans-serif"]#!/usr/bin/python3
    from time import *
    klingelt= 0;
    alarmSet= 0;
    alarm = 0, 0, 0;


    #aktuelle Systemzeit ausgeben bei jeden Programmstart
    print (strftime ("%a,%d %b %Y %H:%M:%S", gmtime()))


    def setAlarm(h, m, s): #Wecker stellen
    alarm = int(h), int(m), int(s);
    alarmSet=1;
    print ("der Alarm wurde gestellt auf ", alarm, "Alarmset= ", alarmSet);
    def timeCheck(): #Aktuelle Zeit checken
    cH=strftime("%H", gmtime());
    cM=strftime("%M", gmtime());
    cS=strftime("%S", gmtime());
    T=int(cH)+1,int(cM), int(cS);
    return T;
    def pruefen(cT):#pruefen ob Alarmzeit erreicht wurde
    if (cT == alarm):
    klingelt = 1;
    print("Alarm");
    alarmSet=0;
       
    while True:


    while alarmSet==0:
    h = input ("stunde ")
    m = input ("minute ")
    s = input ("sekunde ")
    setAlarm(h,m,s);
       
    while alarmSet==1:
    print(timeCheck());
    pruefen(timeCheck());
    [/font]

  • Da dein Projekt noch nicht abgeschlossen ist hast du deinen Thread im falschen Forumsbereich erstellt! Bitte künftig darauf achten! :@


    Wenn du ein Problem hast dann poste bitte die dazu gehörige Fehlermeldung.


    Benutze bitte CODE-Blöcke für deinen Code sodass man diesen besser lesen kann.


    ; haben in Python keine Funktion, sind also überflüssig. Gewöhn dir zudem lieber jetzt als später einen vernünftigen Programmierstyle an. Einheitlich entweder oder, alarmSet= 0 aber in Funktionen nutzt du alarmSet=1 ... Das sieht doof aus.
    Funktionsaufrufe macht man ohne Leerzeichen. Falsch: print ("bla"). Besser: print("bla")
    Eine Leerzeile zwischen den Funktionen steigert ebenfalls die Lesbarkeit und fördert auch das "gute Aussehen".
    Einheitliche Einrückungen solltest du dir auch angewöhnen. Nicht mal 4, mal 2 und mal 8 oder mal 3 Leerzeichen sondern pro Einrückung: 4 Leerzeichen.


    Du versuchst innerhalb einer Funktion eine Variable zu ändern die ausserhalb der Funktion geprüft werden soll: alarmSet. Diese setzt du am Anfang des Scripts auf 0 und innerhalb der Funktion setAlarm dann auf 1. Diese Änderung besteht aber nur innerhalb der Funktion da die Variable innerhalb der Funktion "local" ist. Um eine "global"e Variable innerhalb einer Funktion verändern zu können musst du diese dort "global" setzen:
    [code=php]
    alarmSet = 0


    def setAlarm():
    global alarmSet
    alarmSet = 1


    print(alarmSet)
    setAlarm()
    print(alarmSet)
    [/php]


    Deine while's ergeben so wie sie jetzt sind nicht allzu viel Sinn, also insbesondere die "while True" verstehe ich an der Stelle nicht wozu die dienen soll.