Seite 1 von 1
Fortlaufende Aufzählung
Verfasst: Montag 20. Juli 2020, 13:31
von grom
Hallo zusammen,
vielleicht habe ich es übersehen oder nicht gefunden im Forum, aber wenn ihr ein Hinweis findet der sinnvoll wäre dann her damit.
Mein Anliegen, es gibt einen fortlaufenden Abgleich bei der die Werte verglichen werden
Beispiel
if Wert.get() == 1
passiert etwas hier
elif Wert.get() == 2
passiert etwas und hier auch
elif Wert.get() == 3
passiert etwas da auch
else:
passiert etwas anderes
Kann man es eleganter lösen nicht nur aufzählen sonder durch eine Schleife?
Re: Fortlaufende Aufzählung
Verfasst: Montag 20. Juli 2020, 13:51
von Sirius3
Was passiert denn in "passiert etwas hier"? Etwas mehr Kontext ist schon nötig, um die richtige Lösung zu geben.
Re: Fortlaufende Aufzählung
Verfasst: Montag 20. Juli 2020, 14:02
von pintman
Gewöhnlich gibt es viele Möglichkeiten ein Problem zu lösen. Das hängt immer stark vom Einsatzzweck ab.
Man könnte z.B. Methoden in einem Dictionary ablegen und die Funktionalitäten darin assoziieren.
Code: Alles auswählen
num_fun = {
1: lambda: print('one'),
2: lambda: print('two')
}
x = 1
f = num_fun[1]
f()
Eine andere Art würde über Vererbung in Unterklassen spezialisierte Funktionalitäten umsetzen.
Eine if-Cascade ist sicher nicht die eleganteste, manchmal aber eine durchaus legitime Umsetzung - und vor allem gut lesbar. In Code für Mikrokontrollern findet man das immer wieder.

Re: Fortlaufende Aufzählung
Verfasst: Montag 20. Juli 2020, 14:07
von Sirius3
@pintman: Vererbung braucht man in Python nicht, da man dort Duck-Typing benutzt.
Re: Fortlaufende Aufzählung
Verfasst: Montag 20. Juli 2020, 15:11
von pintman
Sirius3 hat geschrieben: Montag 20. Juli 2020, 14:07
@pintman: Vererbung braucht man in Python nicht, da man dort Duck-Typing benutzt.
Stimmt.

Re: Fortlaufende Aufzählung
Verfasst: Dienstag 21. Juli 2020, 09:00
von grom
pintman hat geschrieben: Montag 20. Juli 2020, 14:02
Gewöhnlich gibt es viele Möglichkeiten ein Problem zu lösen. Das hängt immer stark vom Einsatzzweck ab.
Man könnte z.B. Methoden in einem Dictionary ablegen und die Funktionalitäten darin assoziieren.
Code: Alles auswählen
num_fun = {
1: lambda: print('one'),
2: lambda: print('two')
}
x = 1
f = num_fun[1]
f()
Eine andere Art würde über Vererbung in Unterklassen spezialisierte Funktionalitäten umsetzen.
Eine if-Cascade ist sicher nicht die eleganteste, manchmal aber eine durchaus legitime Umsetzung - und vor allem gut lesbar. In Code für Mikrokontrollern findet man das immer wieder.
Danke für die Antwort