Seite 1 von 1

string in string Frage

Verfasst: Montag 2. Mai 2005, 19:17
von Viel
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!

Verfasst: Montag 2. Mai 2005, 19:45
von CM
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

Verfasst: Montag 2. Mai 2005, 20:03
von Viel
Jo jetzt ist mir klar!
Mir ist auch gerade aufgefallen das == True/False in if statments überflüssig ist.

Danke Viel

Re: string in string Frage

Verfasst: Montag 2. Mai 2005, 20:25
von Leonidas
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.