Website-Suche

Wie man Datentypen in Python 3 konvertiert


Einführung

In Python werden Datentypen verwendet, um einen bestimmten Datentyp zu klassifizieren, wobei festgelegt wird, welche Werte Sie dem Typ zuweisen können und welche Operationen Sie darauf ausführen können. Beim Programmieren gibt es Zeiten, in denen wir Werte zwischen Typen konvertieren müssen, um Werte anders zu manipulieren. Zum Beispiel müssen wir möglicherweise numerische Werte mit Zeichenfolgen verketten oder Dezimalstellen in Zahlen darstellen, die als Ganzzahlen initialisiert wurden.

Dieses Tutorial wird Sie durch die Umwandlung von Zahlen, Zeichenfolgen, Tupeln und Listen führen und Beispiele bereitstellen, um Ihnen zu helfen, sich mit verschiedenen Anwendungsfällen vertraut zu machen.

Voraussetzungen

Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.

Konvertierung von Zahlentypen

In Python gibt es zwei Zahlentypen: Ganzzahlen und Gleitkommazahlen oder Floats. Manchmal arbeitet man mit dem Code von jemand anderem und muss eine Ganzzahl in eine Float-Zahl oder umgekehrt konvertieren, oder man stellt fest, dass man eine Ganzzahl verwendet hat, wenn man eigentlich eine Float-Zahl benötigt. Python bietet eingebaute Methoden, die es dir ermöglichen, Ganzzahlen einfach in Floats und Floats in Ganzzahlen zu konvertieren.

Umwandlung von Ganzzahlen in Fließkommazahlen

Die Methode float() von Python konvertiert Ganzzahlen in Fließkommazahlen. Um diese Funktion zu verwenden, fügen Sie eine Ganzzahl in die Klammern ein:

Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.

float(57)

In diesem Fall wird 57 in 57.0 umgewandelt.

Sie können dies auch mit einer Variablen verwenden. Lassen Sie uns f den Wert 57 zuweisen und dann die neue Fließkommazahl ausgeben:

f = 57
print(float(f))
57.0

Durch die Verwendung der float()-Funktion können wir Ganzzahlen in Fließkommazahlen umwandeln.

Umwandlung von Fließkommazahlen in ganze Zahlen

Python hat auch eine eingebaute Funktion, um Floats in Integers zu konvertieren: int().

Die Funktion int() funktioniert ähnlich wie die Funktion float(): Sie können eine Gleitkommazahl innerhalb der Klammern hinzufügen, um sie in eine ganze Zahl zu konvertieren:

int(390.8)

In diesem Fall wird 390.8 in 390 umgewandelt.

Sie können dies auch mit Variablen verwenden. Lassen Sie uns b auf 125.0 und c auf 390.8 setzen und dann die neuen Gleitkommazahlen ausgeben:

b = 125.0
c = 390.8

print(int(b))
print(int(c))
125
390

Beim Konvertieren von Fließkommazahlen in Ganzzahlen mit der int()-Funktion schneidet Python die Dezimalstelle und die verbleibenden Zahlen einer Fließkommazahl ab, um eine Ganzzahl zu erstellen. Auch wenn wir vielleicht 390,8 auf 391 aufrunden möchten, wird Python dies nicht durch die int()-Funktion tun.

Durch Division umgewandelte Zahlen

In Python 3 werden relevante Quotienten bei der Division von Ganzzahlen in Fließkommazahlen umgewandelt, während dies in Python 2 nicht der Fall ist. Das heißt, wenn du 5 durch 2 teilst, erhältst du in Python 3 eine Fließkommazahl als Ergebnis (2,5):

a = 5 / 2
print(a)
2.5

In Python 2, da Sie es mit zwei Ganzzahlen zu tun hatten, würden Sie stattdessen eine Ganzzahl als Antwort erhalten: 5/2=2. Lesen Sie „Python 2 vs Python 3: Praktische Überlegungen“ für weitere Informationen über die Unterschiede zwischen Python 2 und Python 3.

Konvertierung mit Strings

Ein String ist eine Folge von einem oder mehreren Zeichen (Buchstaben, Zahlen, Symbole). Strings sind eine gängige Form von Daten in Computerprogrammen, und wir müssen Strings häufig in Zahlen oder Zahlen in Strings umwandeln, insbesondere wenn wir von Benutzern generierte Daten entgegennehmen.

Zahlen in Strings umwandeln

Wir können Zahlen durch die Verwendung der str() Methode in Strings umwandeln. Wir geben entweder eine Zahl oder eine Variable in die Klammern der Methode ein und dieser numerische Wert wird dann in einen String-Wert umgewandelt.

Lassen Sie uns zuerst anschauen, wie man Ganzzahlen umwandelt. Um die Ganzzahl 12 in einen Zeichenfolgenwert zu konvertieren, können Sie 12 an die Methode str() übergeben:

str(12)

Wenn Sie str(12) im interaktiven Python-Shell mit dem python-Befehl in einem Terminalfenster ausführen, erhalten Sie die folgende Ausgabe:

'12'

Die Anführungszeichen um die Zahl 12 bedeuten, dass die Zahl kein ganzzahliger Wert mehr ist, sondern jetzt ein String-Wert.

Mit Variablen können wir beginnen zu erkennen, wie praktisch es sein kann, Ganzzahlen in Zeichenfolgen zu konvertieren. Angenommen, wir möchten den täglichen Programmierfortschritt eines Benutzers verfolgen und erfassen, wie viele Codezeilen er gleichzeitig schreibt. Wir möchten dieses Feedback dem Benutzer anzeigen und werden gleichzeitig Zeichenfolgen- und Ganzzahlwerte ausdrucken:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")

Wenn wir diesen Code ausführen, erhalten wir den folgenden Fehler:

TypeError: can only concatenate str (not "int") to str

Wir können in Python keine Zeichenfolgen und Ganzzahlen verketten, daher müssen wir die Variable lines in einen Zeichenwert umwandeln:

user = "Sammy"
lines = 50

print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")

Jetzt, wenn wir den Code ausführen, erhalten wir die folgende Ausgabe, die unseren Benutzer zu seinem Fortschritt gratuliert:

Congratulations, Sammy! You just wrote 50 lines of code.

Wenn wir eine Fließkommazahl in eine Zeichenkette umwandeln möchten, anstatt eine Ganzzahl in eine Zeichenkette, folgen wir denselben Schritten und dem gleichen Format. Wenn wir eine Fließkommazahl in die str()-Methode übergeben, wird ein Zeichenwert der Fließkommazahl zurückgegeben. Wir können entweder den Fließkommawert selbst oder eine Variable verwenden:

print(str(421.034))

f = 5524.53
print(str(f))
421.034
5524.53

Wir können testen, um sicherzustellen, dass es richtig ist, indem wir es mit einem String verketten:

f = 5524.53
print("Sammy has " + str(f) + " points.")
Sammy has 5524.53 points.

Wir können sicher sein, dass unsere Fließkommazahl korrekt in einen String umgewandelt wurde, da die Verkettung ohne Fehler durchgeführt wurde.

Strings in Zahlen umwandeln

Strings können durch die Verwendung der Methoden int() und float() in Zahlen umgewandelt werden.

Wenn Ihre Zeichenfolge keine Dezimalstellen hat, möchten Sie sie wahrscheinlich mit der int() Methode in eine Ganzzahl umwandeln.

Nehmen wir das Beispiel des Benutzers Sammy, der die Anzahl der täglich geschriebenen Codezeilen verfolgt. Möglicherweise möchten wir mit diesen Werten mathematische Manipulationen durchführen, um dem Benutzer interessantere Rückmeldungen zu geben, aber diese Werte sind derzeit in Strings gespeichert:

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

print(lines_more)
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Da die beiden numerischen Werte in Strings gespeichert waren, erhielten wir einen Fehler. Der Operanden - für die Subtraktion ist kein gültiger Operanden für zwei String-Werte.

Lassen Sie uns den Code ändern, um die int()-Methode einzuschließen, die die Zeichenfolgen in Ganzzahlen umwandelt und uns ermöglicht, mit Werten zu rechnen, die ursprünglich Zeichenfolgen waren.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
58

Die Variable lines_more ist automatisch eine Ganzzahl und hat in diesem Beispiel den numerischen Wert von 58.

Wir können die Zahlen im obigen Beispiel auch in Float-Werte umwandeln, indem wir die float() Methode anstelle der int() Methode verwenden. Anstatt die Ausgabe von 58 zu erhalten, erhalten wir die Ausgabe von 58.0, einem Float.

Der Benutzer Sammy sammelt Punkte in Dezimalwerten.

total_points = "5524.53"
new_points = "45.30"

new_total_points = total_points + new_points

print(new_total_points)
5524.5345.30

In diesem Fall ist die Verwendung des + Operators mit zwei Strings eine gültige Operation, aber es verkettet zwei Strings anstatt zwei numerische Werte zusammenzuzählen. Daher sieht unsere Ausgabe ungewöhnlich aus, da sie einfach die beiden Werte nebeneinander stellt.

Wir müssen diese Zeichenfolgen vor der Durchführung von Berechnungen mit der float()-Methode in Fließkommazahlen umwandeln:

total_points = "5524.53"
new_points = "45.30"

new_total_points = float(total_points) + float(new_points)

print(new_total_points)
5569.83

Jetzt, da wir die beiden Zahlen in Fließkommazahlen umgewandelt haben, erhalten wir das erwartete Ergebnis, das 45.30 zu 5524.53 addiert.

Wenn wir versuchen, einen Zeichenfolgenwert mit Dezimalstellen in eine Ganzzahl zu konvertieren, erhalten wir einen Fehler:

f = "54.23"
print(int(f))
ValueError: invalid literal for int() with base 10: '54.23'

Wenn wir einen Dezimalwert in einem String an die int()-Methode übergeben, erhalten wir einen Fehler, da er nicht in eine Ganzzahl umgewandelt werden kann.

Das Konvertieren von Zeichenfolgen in Zahlen ermöglicht es uns, den Datentyp, mit dem wir arbeiten, schnell zu ändern, sodass wir Operationen an numerischen Werten durchführen können, die ursprünglich als Zeichenfolgen behandelt wurden.

Umwandlung in Tupel und Listen

Sie können die Methoden list() und tuple() verwenden, um die ihnen übergebenen Werte in den jeweiligen Datentyp Liste und Tupel zu konvertieren. In Python:

  • Eine Liste ist eine veränderbare geordnete Folge von Elementen, die in eckigen Klammern [ ] enthalten ist.
  • Ein Tuple ist eine unveränderliche, geordnete Sequenz von Elementen, die in Klammern ( ) enthalten ist.

In Tuples umwandeln

Lassen Sie uns mit der Umwandlung einer Liste in ein Tupel beginnen. Die Umwandlung einer Liste in ein Tupel, da es sich um einen unveränderlichen Datentyp handelt, kann zu erheblichen Optimierungen der Programme führen, die wir erstellen. Wenn wir die Methode tuple() verwenden, gibt sie die Tupel-Version des übergebenen Wertes zurück.

print(tuple(['pull request', 'open source', 'repository', 'branch']))
('pull request', 'open source', 'repository', 'branch')

Wir sehen, dass ein Tupel in der Ausgabe ausgegeben wird, da die Elemente jetzt in Klammern und nicht in eckigen Klammern enthalten sind.

Lass uns tuple() mit einer Variablen verwenden, die eine Liste darstellt:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
('shark', 'cuttlefish', 'squid', 'mantis shrimp')

Wieder sehen wir, dass der Listenwert in einen Tupelwert geändert wird, was durch die Klammern angezeigt wird. Wir können jeden iterierbaren Typ in ein Tupel umwandeln, einschließlich Strings:

print(tuple('Sammy'))
('S', 'a', 'm', 'm', 'y')

Da wir durch Zeichenfolgen iterieren können, können wir sie mit der tuple() Methode in Tupel umwandeln. Bei Datentypen, die nicht iterierbar sind, wie Ganzzahlen und Gleitkommazahlen, erhalten wir jedoch einen Typfehler:

print(tuple(5000))
TypeError: 'int' object is not iterable

Es ist zwar möglich, die Ganzzahl in eine Zeichenkette umzuwandeln und dann in ein Tupel zu konvertieren, wie in tuple(str(5000)), aber es ist besser, sich für lesbaren Code anstelle von komplizierten Umwandlungen zu entscheiden.

Umwandlung in Listen

Das Konvertieren von Werten, insbesondere von Tupeln, in Listen kann nützlich sein, wenn Sie eine veränderbare Version dieses Wertes benötigen.

Wir verwenden die list()-Methode, um das folgende Tupel in eine Liste umzuwandeln. Da die Syntax zum Erstellen einer Liste Klammern verwendet, stellen Sie sicher, die Klammern der list()-Methode und in diesem Fall auch der print()-Methode einzuschließen:

print(list(('blue coral', 'staghorn coral', 'pillar coral')))
['blue coral', 'staghorn coral', 'pillar coral']

Die eckigen Klammern signalisieren, dass eine Liste aus dem ursprünglichen Tupelwert zurückgegeben wurde, der durch die list()-Methode übergeben wurde.

Um den Code besser lesbar zu machen, können wir eines der Klammernpärchen entfernen, indem wir eine Variable verwenden:

coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)

Wenn wir list(coral) ausdrucken, würden wir die gleiche Ausgabe wie oben erhalten.

Genau wie Tuples können Strings in Listen umgewandelt werden:

print(list('shark'))
['s', 'h', 'a', 'r', 'k']

Hier wurde der String 'shark' in eine Liste umgewandelt, die eine veränderbare Version des ursprünglichen Wertes bietet.

Schlussfolgerung

Dieses Python-Tutorial hat gezeigt, wie man mehrere der wichtigen nativen Datentypen in andere Datentypen konvertiert, hauptsächlich durch eingebaute Methoden. Die Möglichkeit, Datentypen in Python zu konvertieren, bietet Ihnen zusätzliche Flexibilität beim Schreiben Ihrer Programme.