@peter99: Hui... sorry, aber der Code sieht *grausam* aus und Deine Bedingungen schreien auch nach einer *Datenstruktur*!
Man sollte Namen niemals nummerieren; denn wenn man das tut, will man eigentlich eine Collection verwenden, idR. dann eine Liste.
Bei Dir bietet sich das doch ganz einfach an:
Code: Alles auswählen
checks = [1, 0, 1, 0]
checks == [1, 0, 1, 0]
> True
checks == [1, 0, 1, 1]
> False
Sollten das eher Wahrheitswerte sein, so verwende doch besser die Literale ``True`` und ``False`` statt 0 und 1!
Je nach Anzahl der Bedingungen kann man auch auf die if...elif...else-Kaskaden verzichten und ein Dispatching über ein Dictionary o.ä. aufbauen. Sollte es nur diese drei Möglichkeiten geben, geht es auch so.
In Deinem Code scheinst Du zu viel zu vermischen! Ich sehe da von der Hierarchie her (if, for, for, if) - das ist zu viel in *einer* Funktion; mal ganz unabhängig davon, dass Berechnungen und GUI miteinander offenbar vermischt sind. Lagere mehr Code in separate Funktionen aus. Z.B. hast Du eine Funktion, die sich um den Ablauf (also die Auswertung der Bedingungen) kümmert, dann jeweils eine Berechnungsfunktion aufruft und das Ergebnis an eine Funktion weiterreicht, die von der GUI-Seite her die neuen Wert setzt.
Deine Namen an sich sind ziemlich nichtssagend... was ist denn "Q"? Ok, je nach Domäne und Problem kann man auch mal Buchstaben verwenden (Physik o.ä.), aber generell solltest Du aussagekräftige Namen verwenden. Bei ``table`` sehe ich auch wieder einen nummerierten Namen ``table1``... da weißt Du doch sicher bald nicht mehr, welcher Name was repräsentiert!?
Auch wenn Du das jetzt irgend wie zum Laufen gebracht hast, wirst Du spätestens in einigen Tagen / Wochen an dem Code verzweifeln, weil Du ihn nicht mehr durchschaust.