Zahlen, Typkonvertierung und Mathematik in Python meistern
Zahlen, Typkonvertierung und Mathematik in Python meistern
Entdecken Sie, wie Python numerische Daten handhabt, die Feinheiten der Typkonvertierung und die leistungsstarken mathematischen Hilfsmittel für die tägliche Programmierung.
Zahlendatentypen in Python
Python unterteilt Zahlen in drei KernTypen: int für ganze Zahlen, float für Gleitkommazahlen mit Dezimalstellen und complex für Zahlen mit Real- und Imaginärteil. Ein Dezimalpunkt unterscheidet int von float (z. B. ist 5 eine Ganzzahl, 5.0 ein Float). Komplexe Zahlen folgen der Notation x + yj, wobei x der Realteil und y der Imaginärteil ist.
Verwenden Sie type(), um die Klasse eines Werts zu prüfen, und isinstance(), um die Zugehörigkeit zu einem bestimmten Typ zu verifizieren. Beispiel:
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
Ausgabe:
<class 'int'> <class 'float'> (8+3j) True
Ganze Zahlen in Python haben beliebige Genauigkeit; Floats behalten etwa 15 Dezimalstellen Genauigkeit. Für Entwickler, die mit binären, hexadezimalen oder oktalen Darstellungen arbeiten, bietet Python praktische Präfixe:
| Zahlensystem | Präfix |
|---|---|
| Binär | 0b oder 0B |
| Oktal | 0o oder 0O |
| Hexadezimal | 0x oder 0X |
Beispiele:
# Ausgabe: 107
print(0b1101011)
# Ausgabe: 253 (251 + 2)
print(0xFB + 0b10)
# Ausgabe: 13
print(0o15)
Ergebnis:
107 253 13
Typkonvertierung (Coercion)
Python fördert Ganzzahlen automatisch zu Floats bei arithmetischen Operationen, wenn ein Float-Operand beteiligt ist. Zum Beispiel:
>>> 1 + 2.0
3.0
Explizite Konvertierungen sind ebenso einfach mit int(), float() und complex(), die auch Strings parsen können:
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
Bei der Konvertierung eines Floats in einen Int schneidet Python den Dezimalteil ab, statt zu runden.
Python Decimal
Gleitkommaarithmetik kann aufgrund binärer Darstellungsgrenzen überraschende Ergebnisse liefern. Zum Beispiel:
>>> (1.1 + 2.2) == 3.3
False
Da Zahlen wie 0.1 nicht exakt binär darstellbar sind, entstehen kleine Rundungsfehler. Das decimal-Modul behebt dies durch beliebig präzise Dezimalarithmetik:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
Ausgabe:
0.1 0.1000000000000000055511151231257827021181583404541015625
Die Verwendung von Decimal bewahrt signifikante Stellen und exakte Dezimaldarstellungen – essenziell für Finanzberechnungen:
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
Da Dezimaloperationen langsamer sind als binäre Floats, reservieren Sie Decimal für Szenarien, die exakte Präzision erfordern, wie Geldwerte, konfigurierbare Genauigkeit oder Kontrolle signifikanter Stellen.
Wann Decimal statt Float verwenden?
- Finanzielle oder monetäre Anwendungen, die exakte Dezimaldarstellung erfordern.
- Szenarien, in denen Präzision explizit kontrolliert werden muss.
- Anwendungen, die das Konzept signifikanter Dezimalstellen benötigen.
Python Fractions
Das fractions-Modul bietet Unterstützung für rationale Zahlen und ermöglicht exakte Arithmetik mit Zähler und Nenner als Ganzzahlen:
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
Ausgabe:
3/2 5 1/3
Das Erstellen eines Fraction aus einem Float kann aufgrund binärer Rundung unintuitive Ergebnisse liefern; bevorzugen Sie String-Eingaben für Dezimalzahlen:
import fractions
# Aus Float
print(fractions.Fraction(1.1))
# Aus String
print(fractions.Fraction('1.1'))
Ausgabe:
2476979795053773/2251799813685248 11/10
Fractions unterstützen alle arithmetischen Operatoren:
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
Pythons math-Modul liefert Funktionen für Trigonometrie, Logarithmen, Fakultäten und mehr:
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
Für Zufälligkeit und Sampling bietet das random-Modul:
import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
print(random.choice(x))
random.shuffle(x)
print(x)
print(random.random())
Beispielausgabe (Werte variieren):
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
Beide Module bieten umfassende Dokumentation zu allen verfügbaren Funktionen und Attributen.
Python
- C#-Typkonvertierung meistern: Implizit, Explizit, Parse und Convert-Methoden
- Python-Schlüsselwörter & Bezeichner: Reservierte Wörter & Benennungskonventionen meistern
- Python-Anweisungen, Einrückung & Kommentare: Klare Anleitung
- Python-Variablen, Konstanten & Literale – Umfassender Leitfaden
- Python-Typkonvertierung & Casting meistern: Umfassender Leitfaden
- Python I/O & Modul-Importe meistern: Praxisleitfaden
- Python Global, Local & Nonlocal Variablen verstehen
- Verzeichnis- und Dateioperationen in Python meistern
- Python-Fehler & eingebaute Exceptions meistern
- Aktuelles Datum und Uhrzeit in Python abrufen: Praktischer Leitfaden