Python / int() / Werte in Ganzzahlen umwandeln
Pythons int() wandelt einen String in Ganzzahlschreibweise oder eine unterstützte Zahl in ein Integer-Objekt um. Gleitkommazahlen werden in Richtung null abgeschnitten: int(-2.7) ergibt -2, nicht das gerundete oder abgerundete Ergebnis. Ein String mit Dezimalpunkt wie "12.0" lässt sich nicht direkt umwandeln.
Grundlagen und Rückgabewerte
int(value) liefert einen int; ohne Argument liefert es null. Strings werden standardmäßig dezimal gelesen und erlauben äußere Leerzeichen, ein Vorzeichen und korrekt gesetzte Unterstriche zwischen Ziffern. True und False werden zu 1 und 0. Unterstützte Formen beschreibt die offizielle int()-Referenz.
Sie benötigen Python 3. Speichern Sie jedes vollständige Beispiel als int_example.py in UTF-8 und führen Sie python int_example.py beziehungsweise python3 aus. Ersetzen Sie den Dateiinhalt, um jedes Beispiel unabhängig zu testen.
print(int())
print(int(" +123 "))
print(int("1_024"))
print(int(True), int(False))
text = "12"
number = int(text)
print(number + 3, type(number).__name__)
print(text, type(text).__name__)
Erwartete Ausgabe:
0
123
1024
1 0
15 int
12 str
Das Zuweisen des Ergebnisses an eine andere Variable verändert den ursprünglichen String nicht. Nach der Umwandlung von "12" können Sie die Zahl 3 addieren und erhalten 15. Sollen Anzahlen keine booleschen Werte akzeptieren, müssen Sie diese gesondert zurückweisen.
Abschneiden unterscheidet sich von Runden und Abrunden
Beim Abschneiden in Richtung null entfällt der Bruchteil unabhängig vom Vorzeichen. math.floor() liefert dagegen die größte ganze Zahl, die nicht größer als der Ausgangswert ist. Bei negativen Zahlen unterscheiden sich die Ergebnisse. Die Spalten zeigen Wert, int(), math.floor() und round().
import math
for value in (2.7, -2.7):
print(value, int(value), math.floor(value), round(value))
2.7 2 2 3
-2.7 -2 -3 -3
Für -2.7 ergeben sich -2 mit int() und -3 mit floor(). Wählen Sie bei einer Rundungsanforderung die passende Rundungsfunktion. Ein vorhandener Float kann bereits Darstellungsfehler enthalten; die Ganzzahlumwandlung stellt einen zuvor verlorenen beabsichtigten Dezimalwert nicht wieder her.
Binäre und hexadezimale Strings mit base lesen
int(text, base) legt das Zahlensystem der Eingabe fest. Zulässig sind 2–36 oder 0; null erkennt Präfixe wie 0b, 0o und 0x. Mit expliziter Basis muss das erste Argument ein String oder ein unterstütztes Byteformat sein, kein numerisches Objekt.
print(int("1010", 2))
print(int("ff", 16))
print(int("0xff", 0))
print(int("0b1010", 0))
print(int("010"))
print(int("010", 8))
try:
print(int("010", 0))
except ValueError:
print("ValueError")
10
255
255
10
10
8
ValueError
"010" bedeutet standardmäßig zehn und zur Basis acht den Wert acht. Basis null lehnt diese Form mit führender Null ohne Präfix ab. Das Ergebnis speichert keine hexadezimale Darstellung; steuern Sie die Ausgabe bei Bedarf gesondert mit hex() oder format().
Fehler und Präzision großer Ganzzahlen
Eine ungültige Schreibweise kann ValueError, ein ungeeigneter Typ TypeError auslösen. Unendlich erzeugt OverflowError, NaN („keine Zahl“) hingegen ValueError. Das Beispiel fängt nur die erwarteten Ausnahmen ab, um weitere Eingaben prüfen zu können.
for value in ("12.0", "1e3", "1,000", "", None, float("nan"), float("inf")):
try:
print(repr(value), int(value))
except (ValueError, TypeError, OverflowError) as error:
print(repr(value), type(error).__name__)
'12.0' ValueError
'1e3' ValueError
'1,000' ValueError
'' ValueError
None TypeError
nan ValueError
inf OverflowError
Mit int(float(text)) ändern Sie die Eingaberegeln: Dezimal- oder Exponentialschreibweisen werden gelesen und anschließend abgeschnitten. Große Ganzzahlstrings können schon beim Float-Schritt durch Grenzen der Gleitkommadarstellung Informationen verlieren.
text = "9007199254740993"
print(int(text))
print(int(float(text)))
9007199254740993
9007199254740992
Lesen Sie Ganzzahlstrings für ein genaues Ergebnis direkt mit int(text). Python-Ganzzahlen sind nicht auf feste 32 oder 64 Bit beschränkt; Speicher und andere Ressourcen bleiben dennoch endlich. Seit Python 3.11 können Längenlimits für Ganzzahlstrings sehr lange Umwandlungen bestimmter Basen begrenzen. Beschränken Sie externe Eingaben auf sinnvolle Längen und Werte, statt die Grenzen einfach abzuschalten.
Einen String als nichtnegative Anzahl prüfen
Erfolgreiche Umwandlung bedeutet noch keinen gültigen Anwendungswert. Diese Funktion akzeptiert Strings, wandelt sie um und lehnt negative Ergebnisse ab. Null ist erlaubt; Vorzeichen, Leerzeichen und Unterstriche bleiben entsprechend den Regeln von int() zulässig.
def parse_count(text):
if not isinstance(text, str):
raise TypeError("text must be a string")
value = int(text)
if value < 0:
raise ValueError("count must be non-negative")
return value
for text in (" 3 ", "-1", "2.5", ""):
try:
print(repr(text), parse_count(text))
except ValueError:
print(repr(text), "invalid count")
' 3 ' 3
'-1' invalid count
'2.5' invalid count
'' invalid count
Ungültige Anzahlen lösen ValueError aus. Eine Eingabeoberfläche kann mit Ausnahmebehandlung zur erneuten Eingabe auffordern. Ergänzen Sie bei Bedarf eine Mengenobergrenze oder eine Prüfung ausschließlich auf ASCII-Ziffern. Werden alle Fehler durch null ersetzt, lassen sie sich nicht mehr von einer echten Null unterscheiden.




