Bitte ein komplettes Beispiel für die TypeError-Exeption

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.
BlackJack

@noisefloor: Hat wohl historische Gründe. Am Anfang hatte Python keinen `bool`-Typ und viele haben sich deshalb `TRUE`/`True`/`true` und `FALSE`/`False`/`false` als Konstanten für 1 und 0 definiert, und das waren auch die Werte die von den Funktionen in der Standardbibliothek verwendet wurden. Und damit wurde wohl auch manchmal getrickst und in Ausdrücken gerechnet um sich ``if``\s zu sparen, wie man das von BASIC oder Forth kennt.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

noisefloor hat geschrieben:Mein Gedankengang war, dass bool ein eigener Datentyp ist
Immerhin sind True und False seit Python 3 Keywords. Mit Python 2 lässt sich noch so was machen:

Code: Alles auswählen

True = 5
Schön versteckt angewendet lassen sich damit missliebige Kollegen in den Wahnsinn treiben ... :wink:
BlackJack

@kbr: Das ist doch harmlos. ``True, False = False, True`` :twisted:
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@ BlackJack: Das ist zwar auch schön gemein, aber vermutlich schneller zu merken und leichter zu finden ... :wink:
BlackJack

@Strawk: Ich habe so eine `nested_sum()`-Funktion mit Typprüfung wie das von Lehrern/Dozenten dummerweise gern gesehen wird, übrigens gerade mal in PHP geschrieben. Wenn Du also PHP kannst, sollte das in Python kein grosses Problem sein, denn das sieht *sehr* ähnlich aus. Die Funktionen um den Typ zu prüfen heissen etwas anders, und in PHP heisst es ``throw`` statt ``raise``, aber davon und von den leichten syntaktischen Unterschieden abgesehen, kann man das nahezu 1:1 portieren.
BlackJack

In PHP würde so eine Funktion ungefähr so aussehen:
[codebox=php file=Unbenannt.php]function nested_sum(&$items)
{
if (is_array($items)) {
return array_reduce(
$items,
function ($total, $item) { return $total + nested_sum($item); },
0
);
} elseif (is_integer($items)) {
return $items;
} else {
throw new Exception('Unexpected type: ' . gettype($items));
}
}[/code]
Antworten