Wahrheitswerte in Python

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.
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Wahrheitswerte in Python

Beitragvon PmanX » Dienstag 6. Februar 2007, 20:27

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.
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

Re: Wahrheitswerte in Python

Beitragvon sunmountain » Dienstag 6. Februar 2007, 20:34

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

?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Wahrheitswerte in Python

Beitragvon Leonidas » Dienstag 6. Februar 2007, 20:40

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Re: Wahrheitswerte in Python

Beitragvon PmanX » Dienstag 6. Februar 2007, 21:29

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.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Re: Wahrheitswerte in Python

Beitragvon birkenfeld » Dienstag 6. Februar 2007, 21:57

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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]