Python-Zahlen, Typumwandlung und Mathematik
Python-Zahlen, Typumwandlung und Mathematik
In diesem Artikel erfahren Sie mehr über die verschiedenen Zahlen, die in Python verwendet werden, wie Sie von einem Datentyp in den anderen konvertieren und welche mathematischen Operationen in Python unterstützt werden.
Zahlendatentyp in Python
Python unterstützt Ganzzahlen, Fließkommazahlen und komplexe Zahlen. Sie sind als int
definiert , float
, und complex
Klassen in Python.
Ganzzahlen und Fließkommazahlen werden durch das Vorhandensein oder Fehlen eines Dezimalpunkts getrennt. Beispielsweise ist 5 eine Ganzzahl, während 5,0 eine Gleitkommazahl ist.
Komplexe Zahlen werden in der Form x + yj
geschrieben , wobei x der Realteil ist und y ist der Imaginärteil.
Wir können den type()
verwenden Funktion, um zu wissen, zu welcher Klasse eine Variable oder ein Wert gehört und isinstance()
Funktion, um zu prüfen, ob es zu einer bestimmten Klasse gehört.
Sehen wir uns ein Beispiel an:
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
<class 'int'> <class 'float'> (8+3j) True
Während ganze Zahlen beliebig lang sein können, ist eine Fließkommazahl nur bis auf 15 Dezimalstellen genau (die 16. Stelle ist ungenau).
Die Zahlen, mit denen wir täglich zu tun haben, sind dezimal (Basis 10) Zahlensystem. Aber Computerprogrammierer (im Allgemeinen eingebettete Programmierer) müssen mit binären (Basis 2), hexadezimalen (Basis 16) und oktalen (Basis 8) Zahlensystemen arbeiten.
In Python können wir diese Zahlen darstellen, indem wir dieser Zahl ein entsprechendes Präfix voranstellen. Die folgende Tabelle listet diese Präfixe auf.
Zahlensystem | Präfix |
---|---|
Binär | '0b' oder '0B' |
Oktal | '0o' oder '0O' |
Hexadezimal | '0x' oder '0X' |
Hier sind einige Beispiele
# Output: 107
print(0b1101011)
# Output: 253 (251 + 2)
print(0xFB + 0b10)
# Output: 13
print(0o15)
Wenn Sie das Programm ausführen, lautet die Ausgabe:
107 253 13
Typumwandlung
Wir können einen Zahlentyp in einen anderen umwandeln. Dies wird auch als Zwang bezeichnet.
Operationen wie Addition, Subtraktion zwingen Ganzzahl implizit (automatisch), wenn einer der Operanden Float ist.
>>> 1 + 2.0
3.0
Wir können oben sehen, dass 1 (Integer) zur Addition in 1,0 (Float) umgewandelt wird und das Ergebnis ebenfalls eine Fließkommazahl ist.
Wir können auch eingebaute Funktionen wie int()
verwenden , float()
und complex()
um explizit zwischen Typen zu konvertieren. Diese Funktionen können sogar Strings konvertieren.
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
Bei der Umwandlung von Float in Integer wird die Zahl abgeschnitten (Dezimalstellen werden entfernt).
Python-Dezimalzahl
Die in Python eingebaute Float-Klasse führt einige Berechnungen durch, die uns in Erstaunen versetzen könnten. Wir alle wissen, dass die Summe von 1,1 und 2,2 3,3 ergibt, aber Python scheint anderer Meinung zu sein.
>>> (1.1 + 2.2) == 3.3
False
Was ist los?
Es stellt sich heraus, dass Gleitkommazahlen in Computerhardware als binäre Brüche implementiert sind, da der Computer nur binär (0 und 1) versteht. Aus diesem Grund können die meisten uns bekannten Dezimalbrüche nicht genau in unserem Computer gespeichert werden.
Nehmen wir ein Beispiel. Wir können den Bruch 1/3 nicht als Dezimalzahl darstellen. Das ergibt 0,33333333... was unendlich lang ist und wir können es nur annähern.
Es stellt sich heraus, dass der Dezimalbruch 0,1 einen unendlich langen Binärbruch von 0,000110011001100110011 ergibt... und unser Computer speichert nur eine endliche Zahl davon.
Dies wird nur ungefähr 0,1 sein, aber niemals gleich sein. Daher ist es die Einschränkung unserer Computerhardware und kein Fehler in Python.
>>> 1.1 + 2.2
3.3000000000000003
Um dieses Problem zu lösen, können wir das in Python enthaltene Dezimalmodul verwenden. Während Fließkommazahlen eine Genauigkeit von bis zu 15 Dezimalstellen haben, hat das Dezimalmodul eine vom Benutzer einstellbare Genauigkeit.
Sehen wir uns den Unterschied an:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
Ausgabe
0.1 0.1000000000000000055511151231257827021181583404541015625
Dieses Modul wird verwendet, wenn wir Dezimalrechnungen durchführen wollen, wie wir es in der Schule gelernt haben.
Es bewahrt auch die Bedeutung. Wir wissen, dass 25,50 kg genauer ist als 25,5 kg, da es zwei signifikante Dezimalstellen im Vergleich zu einer hat.
from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))
Ausgabe
3.3 3.000
Beachten Sie die abschließenden Nullen im obigen Beispiel.
Wir könnten fragen, warum nicht Decimal
implementieren jedes Mal, anstatt zu schweben? Der Hauptgrund ist die Effizienz. Gleitkommaoperationen müssen schneller als Decimal
ausgeführt werden Operationen.
Wann Dezimal anstelle von Float verwenden?
Wir verwenden in der Regel Dezimal in den folgenden Fällen.
- Wenn wir Finanzanwendungen erstellen, die eine exakte Dezimaldarstellung erfordern.
- Wenn wir das erforderliche Maß an Präzision kontrollieren möchten.
- Wenn wir den Begriff signifikanter Dezimalstellen implementieren möchten.
Python-Brüche
Python bietet Operationen mit Bruchzahlen durch seinen fractions
Modul.
Ein Bruch hat einen Zähler und einen Nenner, die beide ganze Zahlen sind. Dieses Modul unterstützt rationale Zahlenarithmetik.
Wir können Fraction-Objekte auf verschiedene Weise erstellen. Werfen wir einen Blick darauf.
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
Ausgabe
3/2 5 1/3
Beim Erstellen von Fraction
ab float
, erhalten wir möglicherweise einige ungewöhnliche Ergebnisse. Dies liegt an der unvollkommenen Darstellung von binären Fließkommazahlen, wie im vorherigen Abschnitt besprochen.
Zum Glück Fraction
ermöglicht es uns, auch mit String zu instanziieren. Dies ist die bevorzugte Option, wenn Sie Dezimalzahlen verwenden.
import fractions
# As float
# Output: 2476979795053773/2251799813685248
print(fractions.Fraction(1.1))
# As string
# Output: 11/10
print(fractions.Fraction('1.1'))
Ausgabe
2476979795053773/2251799813685248 11/10
Dieser Datentyp unterstützt alle grundlegenden Operationen. Hier sind ein paar Beispiele.
from fractions import Fraction as F
print(F(1, 3) + F(1, 3))
print(1 / F(5, 6))
print(F(-3, 10) > 0)
print(F(-3, 10) < 0)
Ausgabe
2/3 6/5 False True
Python-Mathematik
Python bietet Module wie math
und random
um verschiedene Mathematik wie Trigonometrie, Logarithmen, Wahrscheinlichkeit und Statistik usw. auszuführen.
import math
print(math.pi)
print(math.cos(math.pi))
print(math.exp(10))
print(math.log10(1000))
print(math.sinh(1))
print(math.factorial(6))
Ausgabe
3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720
Hier ist die vollständige Liste der Funktionen und Attribute, die im Python-Mathematikmodul verfügbar sind.
import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
# Get random choice
print(random.choice(x))
# Shuffle x
random.shuffle(x)
# Print the shuffled x
print(x)
# Print random element
print(random.random())
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe. (Werte können aufgrund des zufälligen Verhaltens unterschiedlich sein)
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
Hier ist die vollständige Liste der Funktionen und Attribute, die im Python-Zufallsmodul verfügbar sind.
Python
- C#-Typkonvertierung
- Python-Schlüsselwörter und -Identifikatoren
- Python-Anweisung, Einrückung und Kommentare
- Python-Variablen, -Konstanten und -Literale
- Python-Typkonvertierung und Typumwandlung
- Python-Eingabe, -Ausgabe und -Import
- Python Globale, lokale und nicht lokale Variablen
- Python-Verzeichnis- und Dateiverwaltung
- Python-Fehler und eingebaute Ausnahmen
- Wie bekomme ich das aktuelle Datum und die Uhrzeit in Python?