Python getallen, typeconversie en wiskunde beheersen
Python getallen, typeconversie en wiskunde beheersen
Ontdek hoe Python numerieke data verwerkt, de nuances van typeconversie en de krachtige wiskundige hulpmiddelen voor dagelijks programmeren.
Getal-datatypes in Python
Python categoriseert getallen in drie kerntypes: int voor gehele getallen, float voor reële getallen met breukdelen, en complex voor getallen met reële en imaginaire componenten. De aanwezigheid van een decimaal teken onderscheidt int van float (bijv. 5 is een integer, 5.0 is een float). Complexe getallen volgen de x + yj-notatie, waar x het reële deel is en y het imaginaire deel.
Gebruik type() om de klasse van een waarde te inspecteren en isinstance() om lidmaatschap van een bepaald type te verifiëren. Bijvoorbeeld:
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
Uitvoer:
<class 'int'> <class 'float'> (8+3j) True
Integers in Python willekeurige precisie; floats behouden ongeveer 15 decimale cijfers nauwkeurigheid. Voor ontwikkelaars die werken met binaire, hexadecimale of octale representaties, biedt Python handige voorvoegsels:
| Getalsysteem | Voorvoegsel |
|---|---|
| Binair | 0b of 0B |
| Octaal | 0o of 0O |
| Hexadecimaal | 0x of 0X |
Voorbeelden:
# Uitvoer: 107
print(0b1101011)
# Uitvoer: 253 (251 + 2)
print(0xFB + 0b10)
# Uitvoer: 13
print(0o15)
Resultaat:
107 253 13
Typeconversie (coercie)
Python promoot automatisch integers naar floats tijdens rekenkundige bewerkingen wanneer een float-operand betrokken is. Bijvoorbeeld:
>>> 1 + 2.0
3.0
Expliciete conversies zijn eveneens eenvoudig met int(), float() en complex(), die ook strings kunnen parsen:
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
Bij het converteren van een float naar een int, knipt Python het decimale deel af in plaats van af te ronden.
Python Decimal
Drijvende-komma rekenkunde kan verrassende resultaten opleveren door limieten in binaire representatie. Bijvoorbeeld:
>>> (1.1 + 2.2) == 3.3
False
Omdat getallen als 0.1 niet exact in binair vertegenwoordigd kunnen worden, leveren bewerkingen kleine afrondingsfouten op. De decimal-module lost dit op door willekeurige-precisie decimale rekenkunde te bieden:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
Uitvoer:
0.1 0.1000000000000000055511151231257827021181583404541015625
Het gebruik van Decimal behoudt significante cijfers en exacte decimale representaties, essentieel voor financiële berekeningen:
from decimal import Decimal as D
print(D('1.1') + D('2.2'))
print(D('1.2') * D('2.50'))
Uitvoer:
3.3 3.000
Omdat decimale bewerkingen langzamer zijn dan binaire floats, reserveer Decimal voor scenario's die exacte precisie vereisen, zoals monetaire waarden, configureerbare precisie of significante-cijfer controle.
Wanneer Decimal gebruiken in plaats van Float?
- Financiële of monetaire toepassingen die exacte decimale representatie vereisen.
- Scenario's waar precisie expliciet gecontroleerd moet worden.
- Toepassingen die het concept van significante decimale plaatsen vereisen.
Python Breuken (Fractions)
De fractions-module biedt rationele getalondersteuning, waarmee exacte rekenkunde met teller en noemer als integers mogelijk is:
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
Uitvoer:
3/2 5 1/3
Het maken van een Fraction vanuit een float kan onintuïtieve resultaten opleveren door binaire afronding, dus verkies string-invoer voor decimale getallen:
import fractions
# Vanuit float
print(fractions.Fraction(1.1))
# Vanuit string
print(fractions.Fraction('1.1'))
Uitvoer:
2476979795053773/2251799813685248 11/10
Breuken ondersteunen alle rekenkundige 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)
Uitvoer:
2/3 6/5 False True
Python Wiskunde
De math-module van Python levert functies voor trigonometrie, logaritmen, faculteiten en meer:
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))
Uitvoer:
3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720
Voor willekeur en sampling biedt de random module:
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())
Voorbeelduitvoer (waarden variëren):
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
Beide modules bieden uitgebreide documentatie met alle beschikbare functies en attributen.
Python
- C# type conversie: implicit, explicit, Parse en Convert methodes
- Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
- Python Statements, Indentatie en Comments: Een duidelijke gids
- Python Variabelen, Constanten en Literals – Een uitgebreide gids
- Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
- Python I/O en Module Imports onder de knie krijgen: Een praktische gids
- Python Global, Local en Nonlocal Variabelen begrijpen
- Python-directory en bestandsbewerkingen beheersen
- Python-fouten & ingebouwde exceptions beheersen
- Huidige datum en tijd ophalen in Python: een praktische gids
- type() en isinstance() in Python begrijpen: praktische voorbeelden