Python-numre, typekonvertering og matematik

I denne artikel lærer du om de forskellige numre, der bruges i Python, hvordan man konverterer fra en datatype til den anden, og de matematiske operationer, der understøttes i Python.

Antal datatype i Python

Python understøtter heltal, flydende tal og komplekse tal. De er defineret som int, floatog complexklasser i Python.

Heltal og flydende punkter adskilles ved tilstedeværelse eller fravær af et decimaltegn. For eksempel er 5 et helt tal, mens 5.0 er et flydende tal.

Komplekse tal skrives i form, x + yjhvor x er den virkelige del og y er den imaginære del.

Vi kan bruge type()funktionen til at vide, hvilken klasse en variabel eller en værdi tilhører, og isinstance()funktionen til at kontrollere, om den tilhører en bestemt klasse.

Lad os se på et eksempel:

 a = 5 print(type(a)) print(type(5.0)) c = 5 + 3j print(c + 3) print(isinstance(c, complex))

Når vi kører ovenstående program, får vi følgende output:

 (8 + 3j) Sandt

Mens heltal kan have en hvilken som helst længde, er et flydende tal kun nøjagtigt op til 15 decimaler (det 16. sted er unøjagtigt).

De tal, vi beskæftiger os med hver dag, er af decimalsystemet (base 10). Men computerprogrammerere (generelt integrerede programmerere) har brug for at arbejde med binære (base 2), hexadecimale (base 16) og oktale (base 8) nummersystemer.

I Python kan vi repræsentere disse tal ved passende at placere et præfiks foran dette nummer. Følgende tabel viser disse præfikser.

Nummer System Præfiks
Binær '0b' eller '0B'
Octal '0o' eller '0O'
Hexadecimal '0x' eller '0X'

Her er nogle eksempler

 # Output: 107 print(0b1101011) # Output: 253 (251 + 2) print(0xFB + 0b10) # Output: 13 print(0o15)

Når du kører programmet, vil output være:

 107 253 13

Type konvertering

Vi kan konvertere en type type til en anden. Dette er også kendt som tvang.

Operationer som tilføjelse, subtraktion tvinger heltal til at flyde implicit (automatisk), hvis en af ​​operanderne er float.

 >>> 1 + 2.0 3.0

Vi kan se ovenfor, at 1 (heltal) tvinges til 1.0 (float) til tilføjelse, og resultatet er også et flydende nummer.

Vi kan også bruge indbyggede funktioner som int(), float()og complex()at konvertere mellem typer eksplicit. Disse funktioner kan endda konvertere fra strenge.

 >>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j)

Når der konverteres fra float til heltal, afkortes tallet (decimaldele fjernes).

Python-decimal

Python indbygget klasse float udfører nogle beregninger, der kan forbløffe os. Vi ved alle, at summen af ​​1.1 og 2.2 er 3.3, men Python ser ud til at være uenig.

 >>> (1.1 + 2.2) == 3.3 False

Hvad sker der?

Det viser sig, at flydende numre implementeres i computerhardware som binære brøker, da computeren kun forstår binær (0 og 1). På grund af denne grund kan de fleste decimalfraktioner, vi kender, ikke gemmes nøjagtigt i vores computer.

Lad os tage et eksempel. Vi kan ikke repræsentere brøkdelen 1/3 som et decimaltal. Dette vil give 0,333333333 … hvilket er uendeligt langt, og vi kan kun tilnærme det.

Det viser sig, at decimalfraktionen 0,1 vil resultere i en uendeligt lang binær brøkdel på 0.000110011001100110011 … og vores computer gemmer kun et endeligt antal af den.

Dette vil kun være ca. 0,1, men aldrig være ens. Derfor er det begrænsningen af ​​vores computerhardware og ikke en fejl i Python.

 >>> 1.1 + 2.2 3.3000000000000003

For at løse dette problem kan vi bruge decimalmodulet, der følger med Python. Mens tal med flydende punkt har præcision op til 15 decimaler, har decimalmodulet præcision, der kan indstilles af brugeren.

Lad os se forskellen:

 import decimal print(0.1) print(decimal.Decimal(0.1))

Produktion

 0,1 0,1000000000000000055511151231257827021181583404541015625

Dette modul bruges, når vi vil udføre decimalberegninger, som vi lærte i skolen.

Det bevarer også betydning. Vi ved, at 25,50 kg er mere nøjagtige end 25,5 kg, da de har to betydende decimaler sammenlignet med en.

 from decimal import Decimal as D print(D('1.1') + D('2.2')) print(D('1.2') * D('2.50'))

Produktion

 3,3 3.000

Notice the trailing zeroes in the above example.

We might ask, why not implement Decimal every time, instead of float? The main reason is efficiency. Floating point operations are carried out must faster than Decimal operations.

When to use Decimal instead of float?

We generally use Decimal in the following cases.

  • When we are making financial applications that need exact decimal representation.
  • When we want to control the level of precision required.
  • When we want to implement the notion of significant decimal places.

Python Fractions

Python provides operations involving fractional numbers through its fractions module.

A fraction has a numerator and a denominator, both of which are integers. This module has support for rational number arithmetic.

We can create Fraction objects in various ways. Let's have a look at them.

 import fractions print(fractions.Fraction(1.5)) print(fractions.Fraction(5)) print(fractions.Fraction(1,3))

Output

 3/2 5 1/3

While creating Fraction from float, we might get some unusual results. This is due to the imperfect binary floating point number representation as discussed in the previous section.

Fortunately, Fraction allows us to instantiate with string as well. This is the preferred option when using decimal numbers.

 import fractions # As float # Output: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # As string # Output: 11/10 print(fractions.Fraction('1.1'))

Output

 2476979795053773/2251799813685248 11/10

This data type supports all basic operations. Here are a few examples.

 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)

Output

 2/3 6/5 False True

Python Mathematics

Python offers modules like math and random to carry out different mathematics like trigonometry, logarithms, probability and statistics, etc.

 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))

Output

 3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720

Here is the full list of functions and attributes available in the Python math module.

 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())

Når vi kører ovenstående program, får vi output som følger. (Værdierne kan være forskellige på grund af den tilfældige adfærd)

 18 e ('c', 'e', ​​'d', 'b', 'a') 0.5682821194654443

Her er den fulde liste over funktioner og attributter, der er tilgængelige i Python tilfældigt modul.

Interessante artikler...