Ogólny sposób robi to, co robić inne języki z switch
oświadczenie jest stworzenie słownika zawierającego funkcję dla każdego z przypadków:
conds = {
0: lambda: condition_1,
1: lambda: condition_1 or condition_2,
2: lambda: condition_1 or condition_2 or condition_3
}
wówczas:
while conds[a]():
# do stuff
Korzystając lambdy (lub nazwane funkcje, jeśli twoje warunki są szczególnie złożone) odpowiedni stan może być oceniany za każdym razem w pętli, zamiast raz, gdy zdefiniowany jest słownik.
W tym prostym przypadku, gdy twoje a
ma sekwencyjne liczby całkowite zaczynające się od 0, możesz użyć listy i zapisać trochę pisania. Aby jeszcze bardziej uprościć, można określić każdego ze swoich warunków w odniesieniu do poprzedniego, ponieważ jesteś po prostu dodając warunek za każdym razem:
conds = [
lambda: condition_1,
lambda: conds[0]() or condition_2,
lambda: conds[1]() or condition_3
]
Albo, jak sugeruje Julien w komentarzu:
conds = [
lambda: condition_1,
lambda: condition_2,
lambda: condition_3
]
while any(cond() for cond in conds[:a+1]):
# do stuff
Co próbujesz osiągnąć? Czy mógłbyś podać nam bardziej konkretny przykład? – Bahrom