Wie löse ich dieses Problem (Python)?


26.09.2022, 17:41

wenn ich Sekunde += 1 schreibe wird folgendes angezeigt

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Sekunde += 1

Woher ich das weiß:Hobby – Programmiere seit einigen Jahren intensiv

Goldstern107 
Beitragsersteller
 26.09.2022, 17:36

Dann ist das Rot markiert

0
XGamerGuide  26.09.2022, 17:43
@Goldstern107

Ah, liegt daran das "Sekunde" lokal ist.

"global Sekunde" muss am Anfang in "def Time():"

0
Goldstern107 
Beitragsersteller
 26.09.2022, 17:45
@XGamerGuide

Wie meinst du das jetzt? Ich hab das nicht so ganz verstanden

0
XGamerGuide  26.09.2022, 17:48
@Goldstern107

Desweiteren würde ich dir empfehlen deine Variable ("Time") nicht so wie deine Funktion zu nennen.

Hier ein funktionierendes Beispiel:

import time



Sekunde = 0
Minute = 0
Stunde = 0



def main():
    global Sekunde
    global Minute
    global Stunde
    while True:  # Wiederholle alles eingerückte unendlich
        my_time = str(Stunde) + ":" + str(Minute) + ":" + str(Sekunde)
        Sekunde += 1
        print(my_time)
        time.sleep(1)



main()

Liebe Grüße :)

1
XGamerGuide  26.09.2022, 17:53
@XGamerGuide

Hier übrigens das ganze in richtig ordentlich

import time



seconds = 0



while True:
    print(f"{seconds // 3600}:{seconds % 3600 // 60}:{seconds % 60}")
    seconds += 1
    time.sleep(1)
0
XGamerGuide  26.09.2022, 17:56
@Hanibal545

Ja, würd ich auch. Deswegen hab ich nochmal ein ordentliches Beispiel gegeben

1
Hanibal545  26.09.2022, 18:04
@XGamerGuide

Ein kleiner Tipp für dich. Du könntest noch die Zahl formatieren, um es besser anzuzeigen.

print(f"{seconds // 3600:02d}:{seconds % 3600 // 60:02d}:{seconds % 60:02d}")
0
XGamerGuide  26.09.2022, 19:02
@Hanibal545

Ja, das ist aber nicht das Ergebniss was das Programm von Goldstern107 erzielen soll.

1
Hanibal545  26.09.2022, 19:33
@XGamerGuide

Ic glaube schon, dass @Goldstern107 es eigentlich machen wollte, da er Stunde = 00 gesetzt hat. Außerdem war es ja nur eine Information und ein Verbesserungsvorschlag....

0

Vielleicht ist das Problem, dass du den gleichen Namen für die Variable und der Funktion gebommen hast. Zudem bringt Sekunden + q nichts, da du die Varuable nicht nochmals abgespeichert hast(also Sekunde += 1 oder Sekunde = Sekunde + 1).

Zudem würde ich nicht globale sondern lokale Variablen verwenden. Da könnte auch der Fehler liegen. Also am besten die Variable in der Funktion definieren.

Ich hoffe ich konnte dir weiterhelfen.

LG

Woher ich das weiß:eigene Erfahrung

Wieso willst Du Main() in Main() zurückgeben, das ergibt keinen Sinn, Funktion und Variable sollten nicht den gleichen Bezeichner haben, es sollte sekunde +=1 sein.

und das global vor sekunde habe ich natürlich auch übersehen, wobei sich auch da die Frage stellt - warum?