string in string Frage

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
Viel

Montag 2. Mai 2005, 19:17

Hi!

Ich benutze Python 2.4.1 auf Windows2000.

Code: Alles auswählen

str = 'viel.mp3'
    print '.mp3' in str # ist True

    if '.mp3' in str == True:
        print 'das müsste ausgegeben werden'

    test = '.mp3' in str
    if test == True:
        print 'das wird ausgegeben!(wie ich dachte)'
Warum funktioniert das erste if statement nicht?
Laut Doku müsste das seit 2.3 funktionieren.

PS: Super das man sich nicht registrieren muss um zu posten!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 2. Mai 2005, 19:45

Hi,

vorweg: Versuche möglichst keine Schlüsselwörter als Variabelnamen zu verwenden. Wie Dir von Syntaxhighlighting angezeigt wird ist "str" bereits vergeben.

Zu Deiner Frage:
Gib mal folgendes ein:

Code: Alles auswählen

>>> s = 'viel.mp3'
>>> '.mp3' in s == True
False
>>> #aber:
>>> ('.mp3' in s) == True
True
>>> #oder, schlicht und einfach:
>>> if '.mp3' in s: #gerade gesehen, dass 'True'
...          print 'jupp!'
jupp!
Na, alles klar? Du mußt Python schon sagen, was wie evaluiert werden soll. Also entweder Klammern setzten, damit EIN Ausdruck links von == mit dem rechts verglichen werden kann oder Python wird "'.mp3' in s" mit True vergleichen und das stimmt so halt nicht ...

Gruß,
Christian
Viel

Montag 2. Mai 2005, 20:03

Jo jetzt ist mir klar!
Mir ist auch gerade aufgefallen das == True/False in if statments überflüssig ist.

Danke Viel
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 2. Mai 2005, 20:25

Viel hat geschrieben:if '.mp3' in str == True:
print 'das müsste ausgegeben werden'
[/python]
So kompliziert muss es auch gar nicht sein, denn if prüft immer, ob die Bedingung wahr ist.

Code: Alles auswählen

s = 'viel.mp3'
# erstmal dein Code, korrigiert
if ('.mp3' in s) == True:
    print 'Ist drin'

# und jetzt nochmal, einfacher
if '.mp3' in s:
    print 'Ist drin'
Und sonst halt das Posting von CM lesen, die Erklärung ist sehr gut.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten