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%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.
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.
".... Alle anderen Werte werden als wahr betrachtet - also sind Objekte vieler Typen immer wahr."
In Python wird eine leere Zeichenfolge als False
, True
andernfalls betrachtet.
Sie könnten den Operator in
verwenden:
Eine nicht leere Zeichenfolge ist True, yes. Ein leeres ist falsch. Das ist super praktisch.