Seite 1 von 1

Wahrheitswerte in Python

Verfasst: Dienstag 6. Februar 2007, 20:27
von PmanX
Habe ich oder Python Probleme mit Wahrheitswerten ? ;)

Code: Alles auswählen

x1 = [x for x in raw_input('Eingabe: ') if not x]
>>> x1
[]

Hier funktioniert ein nachgestellte if und Space ist True.

Code: Alles auswählen

x1 = 'Wert' if not x1
Hier nicht.

Re: Wahrheitswerte in Python

Verfasst: Dienstag 6. Februar 2007, 20:34
von sunmountain
PmanX hat geschrieben:

Code: Alles auswählen

x1 = 'Wert' if not x1
Ich glaube nicht dass das ein gültiger Konstrukt ist.
Meinst Du sowas

Code: Alles auswählen

x1 = 'Wert' if not x1 else None
?

Re: Wahrheitswerte in Python

Verfasst: Dienstag 6. Februar 2007, 20:40
von Leonidas
PmanX hat geschrieben:Habe ich oder Python Probleme mit Wahrheitswerten ? ;)

Code: Alles auswählen

x1 = [x for x in raw_input('Eingabe: ') if not x]
>>> x1
[]
Ich denk eher du hast ein Verständnisproblem. Die LC iteriert über den Rückgabewert von ``raw_input()``, und da dort nichts eingegeben wird, kommt keine einzige Iteration zu stande, daher wird kein einziges Objekt in die Liste eingefügt.

Re: Wahrheitswerte in Python

Verfasst: Dienstag 6. Februar 2007, 21:29
von PmanX
Ich denk eher du hast ein Verständnisproblem. Die LC iteriert über den Rückgabewert von ``raw_input()``, und da dort nichts eingegeben wird, kommt keine einzige Iteration zu stande, daher wird kein einziges Objekt in die Liste eingefügt.
Sorry , habe die Eingabezeile unterschlagen.

Code: Alles auswählen

>>> x1 = [x for x in raw_input('Eingabe: ') if not x]
Eingabe: ewfekv,dcc23244fsdfcsa,   dvcdvd
>>> x1
[]
Allerdings unterlag ich einem Irrtum. Ein Leerzeichen ist kein Leerstring. Damit passt dieses Beispiel nicht.

sunmountain: Eben. Das ist mein Problem. Bei List Comprehensions ist es gültig, so aber nicht.

Re: Wahrheitswerte in Python

Verfasst: Dienstag 6. Februar 2007, 21:57
von birkenfeld
PmanX hat geschrieben: sunmountain: Eben. Das ist mein Problem. Bei List Comprehensions ist es gültig, so aber nicht.
Das ist kein Problem. Die if-Teilausdrücke sind Bestandteile der Syntax für List Comprehensions und kein generelles Syntaxelement.

Die "x if y else z"-Ausdrücke sind dagegen ab Python 2.5 überall möglich, haben aber eine andere Semantik als die if-Ausdrücke in LCs.