wx.CheckBox und If Abfragen

Plattformunabhängige GUIs mit wxWidgets.
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

wx.CheckBox und If Abfragen

Beitragvon ete » Freitag 8. Mai 2009, 09:52

Hallo!

Ich habe mehrere If-Abfragen und komm hier nicht weiter:

Code: Alles auswählen

...

self.check1 = wx.CheckBox(panel, -1, "")
self.check2 = wx.CheckBox(panel, -1, "")
...
string = ['TTCCTAATACCCGTCAGCTTG', 'ATTTGGGAAGTGATTCCATAG','ATGGGAACTCGGGAAGGAGAT','TGATAGTTATTGTTGTTGACT','AAGCTGATGCATTGAAGCACC']
for i in string:
    if self.check1 == True:
        if i.startswith("A") or i.startswith("T") == True:
            if self.check2 == True:
                if i.endswith("G") or i.endswith("C") == True:
                    print i
                    ...

Wie kann ich jetzt ein else einbauen, für den Fall das die Checkboxen FALSE sind? Nach if wird ja eine Einrückung erwartet. Ich möchte aber die nächsten if's nur mit den schon gefilterten strings weitermachen. Man könnte alles in Funktionen packen aber vielleicht gibts ja eine einfachere Lösung?

Liebe Grüsse
Stefanie
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 8. Mai 2009, 10:20

Meinst du so?

Code: Alles auswählen

for i in string:
    go_else = True
    if self.check1:
        if i.startswith("A") or i.startswith("T"):
            if self.check2:
                if i.endswith("G") or i.endswith("C"):
                    print i
                    go_else = False

    if go_else:
        #do something else here


oder vielleicht so?


Code: Alles auswählen

for i in string:
    go_else = self.check1 and self.check2
    if self.check1:
        if i.startswith("A") or i.startswith("T"):
            if self.check2:
                if i.endswith("G") or i.endswith("C"):
                    print i

    if go_else:
        #do something else here


Die ganzen "== True" kannst du dir sparen. Die mit "or" Verknüpften Bedingungen sind zwar nicht fehlerhaft, aber es wird es auf Gleichheit geprüft, dann das "or". Also so:

Code: Alles auswählen

if i.startswith("A") or (i.startswith("T") == True):



Heißen die Checkbocken wirklich check1, check2, ... oder liegt es nur am Beispiel? Dann solltest du vielleicht eine Liste daraus machen und mit all testen. Andernfalls solltest du den Boxen richtige Namen geben.

Außerdem passt die Frage wohl besser in "Allgemeines" und weniger in "wx".

Bis dann,
Sebastian
Das Leben ist wie ein Tennisball.
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Beitragvon ete » Freitag 8. Mai 2009, 11:10

Ich habs so gelöst:

Code: Alles auswählen

string = ['atcgcgctaggataggct', 'atgcgctcgaggatgagaga', 'actgaggatgaggagatc']

check1 = True
check2 = True
for i in string:
    if check1 and check2:
        if i.startswith("a") or i.startswith("t"):
                if i.endswith("g") or i.endswith("c"):
                    print i
    if check1 and not check2:
        if i.startswith("a") or i.startswith("t"):
            print i
    if check2 and not check1:
        if i.endswith("g") or i.endswith("c"):
            print i

Die Check Buttons haben nur der Einfachhalber diese Namen. Danke auch für den Tip ==True. Das wusste ich noch nicht.
Liebe Grüsse und Danke!
Stefanie
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 8. Mai 2009, 15:03

Die beiden letzten ifs sollte man noch durch elif ersetzen, da die Abfragen disjunkt sind. Ich weiß nicht, wie viele Verschachtelungen von "startswith/endswith" du hast, aber hier bieten sich vielleicht reguläre Ausdrücke an.

Was ich etwas unschön finde ist, dass in der letzten Abfrage die Positionen von "check1" und "check2" vertauscht sind.
Das Leben ist wie ein Tennisball.
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Beitragvon ete » Freitag 8. Mai 2009, 15:13

Danke für die Hinweise!

Es sind 5 Abfragen ganz unterschiedlicher Art (nicht nur startwith o.ä.), u.a. auch ob Werte aus TextCtrl grösser ode kleiner sind, etc.pp..

Liebe Grüsse
Stefanie

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder