Seite 1 von 1

Type Casting, Boolean

Verfasst: Samstag 23. November 2002, 14:19
von hans
Wenn ich das richtig sehe, gibt es ja sen Datentyp Boolean nicht in Python und C. (Ich weiß auch in Delphi ist das nur ein zurechtgestutzter Integer). Die Verwendung von True und False erhöht m. E. die Lesbarkeit. Welches ist die Kürzeste Form um Werte nachfolgender Tabelle als Boolean zurückzugeben?

Code: Alles auswählen

True       False            Kommentar
[1,-1]     0
'True'     'False'
'true'      'false'
'Falsch'   'Wahr'           *grrr* sieht aus wie deutsches spreadsheet
'On'        'Off'
'positiv'  'negativ'
Am liebsten wäre mir die Umwandlung a la boole(WERT). Oder gibts da schon etwas was ich nicht gefunden habe?

Hans[/code]

Verfasst: Samstag 23. November 2002, 16:55
von RicmanX
Ich versteh zwar nicht wirklich, was du willst :) aber ich bevorzuge immer 0 und 1, allein weil das auch zu den "Ursachen" der Informatik gehört ;)

Verfasst: Samstag 23. November 2002, 17:57
von hans
Na ja, RicmanX, das ist eben der Unterschied, der eine studiert Informatik und der andere lernt mal eben im Vorbeigehen und gewöhnt sich dabei untypische Dinge an wie True und False oder GoTo.

Lesbarer ist für mich eben True / False, weil ichs mir in Delphi so angewöhnt habe. Leider gibt's in Python keinen Datentyp boolean obwohl 0 und 1 ja das gleiche sind.

Gabs da nicht auch Sonderlinge, die für True und False 0 und -1 nehmen?

Hans

Verfasst: Samstag 23. November 2002, 18:07
von ASCII158
Also was ich mal irgendwo gelesen hab:

Ganz am Anfang eines Scripts

Code: Alles auswählen

True=1
False= not True
weiss nich ob dir das was hilft oder nicht...

Verfasst: Samstag 23. November 2002, 18:11
von hans
Sicher ist:
False=0
True = not False
False ist immer 0, True hat einen unbestimmten Wert ungleich 0.

Diese Konstanten sind in Python allerdings schon vorhanden.

Hans

Verfasst: Samstag 23. November 2002, 19:03
von Milan
ich weiß zwar nicht genau was du möchtest, aber ich versuch trotzdem mal zu helfen. Ich hab es so verstanden, das du Funktion haben willst, die in Strings zurückgibt (weil es ja gerade keinen Typ für boolische Werte gibt). dafür tut es ja ne einfache funktion:

Code: Alles auswählen

boole=lambda x: x and "true" or "false"
oder meinstest du was anderes?

Verfasst: Samstag 23. November 2002, 19:03
von Dookie
Hi Hans,

zu früheren Zeiten, als Computer noch einen 8Bitbus hatten und war die Definition von Boolean:

Code: Alles auswählen

TRUE  11111111
FALSE 00000000
so brauchte ein Booleantyp nur ein Byte und war sehr effizient zu bearbeiten. Auch Boolsche-Algebra ließ sich so leicht umsetzen Da sich bei diesen Werten die einfache Boolsche und die binäre Logik entsprechen.

Mit dem Aufkommen höherer Programmiersprachen und komplexerer Konstrukte, merkte man, wie unpraktisch die Umwandlung von logischen Ausdrücken in einen Booleanwert ist, anstatt gleich zu vereinbaren alles was nicht (0, 0.0, None, "", (), [], {}) ist, ist TRUE sonst FALSE. Daneben wurden die Register in den Prozessoren auch auf 16 und später auf 32 bzw 64 Bit erweitert, und Speicher wurde immer billiger. Was zur Folge hatte, daß es keine Notwendigkeit mehr für einen 8-Bit Booleantype gab.

Zur besseren Lesbarkein von Code gibts ja immer noch die Möglichkeit zu Kommentieren.

Die Konstenten True und False würde ich nicht verwenden, da sie erst seit Python2.2 definiert sind und so wird das Programm unter Python2.1 und früheren Versionen nicht funktionieren.


Gruß

Dookie