And und or funktioniert nicht, was mache ich falsch?

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
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

Hallo zusammen,
Eine kleine blöde Frage:
Wenn ich einen if-'Zweig' mit and oder or machen will, wird bei mir, der Zweig mit and nie ausgeführt, der mit or aber immer, das sieht dann ungefähr so aus:

Code: Alles auswählen

if 2 < 3 and 10 > 5:
     print("Ja")
if 1 ==2 or 3==4:
      print("Ja, or") 
Hoffe es ist verständlich, was ich meine.
(Den Code habe ich hier getippt, deshalb sind die Einrückungen nicht perfekt)

Mfg
Christian
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Ich sehe keinen Fehler. Der Code tut genau, was man erwarten würde: Die erste Ausgabe erfolgt, die zweite, deren Bedingung nicht zutreffen kann, nicht. Bitte zeig den konkreten Fall, der Probleme macht.
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

Code: Alles auswählen

with open('C:/Users/chris/Desktop/PyChris/Adventofcode.txt') as f:
    counter=0
    for line in f.readlines():
        b_counter=0
        line=line.replace('\n', '')
        line=line.replace(':', '')
        line=line.replace('-', ' ')
        line=line.split(' ')
        von=line[0]
        bis=line[1]
        buchstabe=line[2]
        zeile=line[3]
        von=int(von)
        bis=int(bis)
        buchstabe=str(buchstabe)
        zeile=str(zeile)
        for _ in zeile:
            if 'r' in zeile:
                b_counter+=1
        if b_counter>=von and b_counter<=bis:
            counter+=1
            print("vaild")
            print(counter)
        else:
            pass
    print(line, von, bis, zeile, buchstabe)
Der code dürfte gerade bei der for-Schleife mit Fehlern überhäuft sein, da ich gerade voll am testen bin ;)
EDIT:
Ich glaube es liegt an dem restlichen Code, dass ich ein falsches Ergebnis bekomme...
Zuletzt geändert von rennmaus am Samstag 5. Dezember 2020, 11:34, insgesamt 2-mal geändert.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Welchen Wert hat von, bis und b_counter?
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

So sieht das in etwa in meiner Datei aus (insgesamt 1000 Zeilen, die ich nicht alle hier rein schicken werde):
3-7 r: mxvlzcjrsqst
1-3 c: ccpc
6-12 f: mqcccdhxfbrhfpf
14-15 l: llllllllllllldgll
von ist die erste Zahl,
bis die Zweite,
buchstabe der buchstabe vor dem komma,
zeile die restliche zeile ohne komma.
Der Sinn ist, dass der buchstabe mindestens 3 mal und maximal 7 mal in zeile vorkommen darf (an der ersten Zeile)
b_counter zählt die Anzahl der (im ersten Beispiel) r's
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum gibst du nicht einfach die Werte aus? Dann siehst du, dass das was du beschreibst und das was du programmiert hast nicht zusammenpasst. Es liegt nicht am if.
rennmaus
User
Beiträge: 217
Registriert: Dienstag 4. August 2020, 10:24

Hm...
Antworten