Problem mit While-Schleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TheBlackApple
User
Beiträge: 4
Registriert: Freitag 14. Dezember 2018, 15:57

import time

class Ampel:
def __init__(self, rot, gelb, gruen):
self.rot = rot
self.gruen = gruen
self.gelb = gelb

def Rotphase(self):
print(self.rot)

def Gelbphase(self):
print(self.gelb)


def RotGelbphase(self):
print(self.rot + " ist an")
print(self.gelb + " ist an")
print(self.gruen + " ist aus")

def Gruenphase(self):
print(self.gruen)

a = Ampel("A", "B", "C")

while True:
xAlt = 0
xNeu = time.clock()

if xNeu > 5 and xNeu < 10:
a.Rotphase()

if xNeu > 10 and xNeu < 15:
a.Gelbphase()

xNeu = xAlt




Wieso wird die While-Schleife nicht wieder erneut gestartet?
Ich bedanke mich schon mal für jede Art der Hilfestellung.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

setzt' den Code bitte unbedingt in Code-Tags. Dazu musst du im vollständigen Editor auf das `</>` Symbol klicken und deine Code da einsetzen. Ohne korrekte Einrückung ist die Fehleranalyse nicht möglich.

Was aber schon mal klar ist: die Klasse macht so wenig Sinn. Du änderst du Werte von rot, gelb, grün nicht, d.h. die Klasse bildet deine Phasen nicht ab. Und um ein paar Attribute ausgeben zu lassen, die sich nicht ändern, braucht man auch keine Methoden.

Welchen Sinn hat das `x` als Präfix vor Alt und Neu? Macht eigentlich keinen Sinn.

Gruß, noisefloor
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@TheBlackApple: die Endlosschleife läuft endlos und heizt Deine Wohnung, mehr macht sie nicht. Hast Du Dir mal angeschaut, was in xNeu steht? Die Zuweisung xNeu=xAlt ist unnötig, da xNeu gleich wieder überschrieben wird. xAlt wird nicht verwendet, und wäre sowieso immer 0.
Du willst messen, wie viel Zeit vergangen ist, dann sollte xAlt die Zeit z.B. der letzten Grünphase enthalten und Du solltest immer die Differenz zur aktuellen Zeit berechnen,
Antworten