Bitte ein komplettes Beispiel für die TypeError-Exeption
@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.
Immerhin sind True und False seit Python 3 Keywords. Mit Python 2 lässt sich noch so was machen:noisefloor hat geschrieben:Mein Gedankengang war, dass bool ein eigener Datentyp ist
Code: Alles auswählen
True = 5
@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.
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]
[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]