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.
Viel

string in string Frage

Beitragvon 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:

Beitragvon CM » 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

Beitragvon 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: string in string Frage

Beitragvon Leonidas » 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

Wer ist online?

Mitglieder in diesem Forum: Baidu [Spider]