Fortlaufende Aufzählung

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
grom
User
Beiträge: 7
Registriert: Freitag 1. November 2019, 09:04

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?
Sirius3
User
Beiträge: 17809
Registriert: Sonntag 21. Oktober 2012, 17:20

Was passiert denn in "passiert etwas hier"? Etwas mehr Kontext ist schon nötig, um die richtige Lösung zu geben.
Benutzeravatar
pintman
User
Beiträge: 39
Registriert: Freitag 2. Dezember 2005, 20:43
Kontaktdaten:

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. :ugeek:
Sirius3
User
Beiträge: 17809
Registriert: Sonntag 21. Oktober 2012, 17:20

@pintman: Vererbung braucht man in Python nicht, da man dort Duck-Typing benutzt.
Benutzeravatar
pintman
User
Beiträge: 39
Registriert: Freitag 2. Dezember 2005, 20:43
Kontaktdaten:

Sirius3 hat geschrieben: Montag 20. Juli 2020, 14:07 @pintman: Vererbung braucht man in Python nicht, da man dort Duck-Typing benutzt.
Stimmt. 👍
grom
User
Beiträge: 7
Registriert: Freitag 1. November 2019, 09:04

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. :ugeek:
Danke für die Antwort
Antworten