Type Casting, Boolean

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.
Antworten
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Samstag 23. November 2002, 14:19

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]
RicmanX
User
Beiträge: 69
Registriert: Donnerstag 29. August 2002, 17:10
Wohnort: Erfurt
Kontaktdaten:

Samstag 23. November 2002, 16:55

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 ;)
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Samstag 23. November 2002, 17:57

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
ASCII158
User
Beiträge: 80
Registriert: Samstag 28. September 2002, 15:40
Wohnort: München

Samstag 23. November 2002, 18:07

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...
mfg,

10011110
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Samstag 23. November 2002, 18:11

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Samstag 23. November 2002, 19:03

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?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Samstag 23. November 2002, 19:03

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
Antworten