Konvertierung zwischen Zahlentypen
In diesem Schritt lernen wir, wie man in Python mit den integrierten Konstruktorfunktionen int()
, float()
und complex()
zwischen verschiedenen Zahlentypen konvertiert.
Die Funktion int()
kann Zahlen und Zeichenketten in eine Ganzzahl konvertieren. Bei der Konvertierung eines Floats in eine Ganzzahl erfolgt eine Abschneidung (Entfernung des Dezimalteils), keine Rundung. Bei der Konvertierung einer Zeichenkette muss die Zeichenkette eine Ganzzahl darstellen. Sie können auch Zeichenketten konvertieren, die Zahlen in anderen Basen (wie Binär oder Hexadezimal) darstellen, indem Sie das Argument base
angeben.
Die Funktion float()
kann Ganzzahlen, Floats und Zeichenketten in einen Float konvertieren. Die Zeichenkette kann eine Ganzzahl oder einen Float darstellen.
Die Funktion complex()
kann eine Zahl in eine komplexe Zahl mit dem Imaginärteil 0 konvertieren, oder sie kann eine komplexe Zahl aus einem als Argument bereitgestellten Real- und Imaginärteil erstellen.
Fügen wir Code zu ~/project/number_types.py
hinzu, um die Typkonvertierung zu demonstrieren. Öffnen Sie die Datei im Editor der WebIDE und fügen Sie den folgenden Code am Ende hinzu:
## Demonstrate type conversion
print("\n--- Type Conversion ---")
## int() conversions
print("int() conversions:")
print(f"int(): {int()}")
print(f"int(1): {int(1)}")
print(f"int(1.3): {int(1.3)}")
print(f"int(1.9): {int(1.9)}")
print(f"int(0b101): {int(0b101)}") ## Binary to integer
print(f"int(0x32): {int(0x32)}") ## Hexadecimal to integer
print(f"int('10'): {int('10')}")
print(f"int('0b101', base=0): {int('0b101', base=0)}")
print(f"int('0x32', base=0): {int('0x32', base=0)}")
print(f"int('0b101', base=2): {int('0b101', base=2)}")
print(f"int('0x32', base=16): {int('0x32', base=16)}")
## int() with float string (will cause error)
## try:
## int('1.5')
## except ValueError as e:
## print(f"int('1.5') error: {e}")
## float() conversions
print("\nfloat() conversions:")
print(f"float(1): {float(1)}")
print(f"float(1.5): {float(1.5)}")
print(f"float('1'): {float('1')}")
print(f"float('1.5'): {float('1.5')}")
## Converting a float string to integer via float()
float_string = '3.1415926'
float_value = float(float_string)
int_value = int(float_value)
print(f"int(float('{float_string}')): {int_value}")
print(f"int(float('3.1415926')): {int(float('3.1415926'))}")
## complex() conversions
print("\ncomplex() conversions:")
print(f"complex(5): {complex(5)}")
print(f"complex(5, 3): {complex(5, 3)}")
Speichern Sie die Datei. Führen Sie nun das Skript im Terminal aus:
python ~/project/number_types.py
Sie sollten zusätzlich zu den Ausgaben aus den vorherigen Schritten eine Ausgabe ähnlich der folgenden sehen:
--- Type Conversion ---
int() conversions:
int(): 0
int(1): 1
int(1.3): 1
int(1.9): 1
int(0b101): 5
int(0x32): 50
int('10'): 10
int('0b101', base=0): 5
int('0x32', base=0): 50
int('0b101', base=2): 5
int('0x32', base=16): 50
float() conversions:
float(1): 1.0
float(1.5): 1.5
float('1'): 1.0
float('1.5'): 1.5
int(float('3.1415926')): 3
int(float('3.1415926')): 3
complex() conversions:
complex(5): (5+0j)
complex(5, 3): (5+3j)
Beobachten Sie die Ergebnisse der int()
-Konvertierungen, insbesondere wie Floats abgeschnitten werden. Beachten Sie auch, dass Sie eine Zeichenkette, die einen Float darstellt, nicht direkt mit int()
in eine Ganzzahl konvertieren können. Sie müssen sie zuerst mit float()
in einen Float und dann mit int()
in eine Ganzzahl konvertieren.