Was ist der logische Wert von "string" in Python?

8

Ich habe diesen Code fälschlicherweise in Python geschrieben:

%Vor%

Es wird immer "Das ist ein netter Name" ausgedruckt, auch wenn die Eingabe weder "Kamran" noch "Samaneh" ist.

Stimmt es, dass es "Samaneh" für wahr hält? Warum?

Übrigens habe ich schon meinen Fehler bemerkt. Die korrekte Form ist:

%Vor%     
Kamran Bigdely 25.12.2010, 21:45
quelle

6 Antworten

9

Jede nicht leere Zeichenkette in Python (und den meisten anderen Sprachen) ist wahr wie alle Zahlen ungleich null und nicht leere Listen, Wörterbücher, Mengen und Tupel. 1

Eine schönere Art zu tun, was Sie wollen, ist:

%Vor%

Dies erstellt ein Tupel mit den gewünschten Namen und führt einen Mitgliedschaftstest durch.

1 Wie delnan in den Kommentaren ausführt, gilt dies für alle gut geschriebenen Sammlungen. Das heißt, wenn Sie eine benutzerdefinierte Erfassungsklasse implementieren, stellen Sie sicher, dass sie falsch ist, wenn sie leer ist.

    
aaronasterling 25.12.2010, 21:50
quelle
6

Neben der leeren Zeichenfolge '' werden Strings alle als True ausgewertet (siehe Seite für eine vollständige Liste von Werten aller Typen, die nach False ausgewertet werden.Dies folgt der Logik vieler anderer Programmiersprachen (außer einigen, die auch Strings wie '0' , 'false' usw. bis% auswerten). co_de%). Die genaue Entscheidung, was zu tun ist, ist etwas willkürlich, aber die getroffene Wahl kann so erklärt werden, dass die Umwandlung als einfache Methode zum Testen auf leere (Standard oder nicht aufgefüllte) Zeichenfolgen verwendet werden kann.

Sie können einen Cast eines beliebigen Typs immer mit der Funktion False auf bool erzwingen.

%Vor%     
marcog 25.12.2010 21:54
quelle
2

Ссылка

".... Alle anderen Werte werden als wahr betrachtet - also sind Objekte vieler Typen immer wahr."

    
Uku Loskit 25.12.2010 21:50
quelle
2

In Python wird eine leere Zeichenfolge als False , True andernfalls betrachtet.

Sie könnten den Operator in verwenden:

%Vor%     
systempuntoout 25.12.2010 21:52
quelle
0

Eine nicht leere Zeichenfolge ist True, yes. Ein leeres ist falsch. Das ist super praktisch.

    
Lennart Regebro 25.12.2010 21:51
quelle
-2

Offensichtlich muss es sein:

%Vor%

nicht

%Vor%

.

Was du geschrieben hast, ist wie:

%Vor%

Ein anderer guter Ausdruck ist:

%Vor%

Aber ich bevorzuge auch, wenn Name in ("Kamran" oder "Samaneh") wie bereits gezeigt

.

Übrigens, es kann geschrieben werden:

%Vor%     
eyquem 25.12.2010 22:46
quelle

Tags und Links