Python-tall, typekonvertering og matematikk

I denne artikkelen lærer du om de forskjellige tallene som brukes i Python, hvordan du konverterer fra en datatype til en annen, og de matematiske operasjonene som støttes i Python.

Antall datatype i Python

Python støtter heltall, flytende tall og komplekse tall. De er definert som int, floatog complexklasser i Python.

Heltall og flytende punkter er atskilt med tilstedeværelsen eller fraværet av et desimaltegn. For eksempel er 5 et helt tall, mens 5,0 er et flytende nummer.

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

Vi kan bruke type()funksjonen til å vite hvilken klasse en variabel eller en verdi tilhører, og isinstance()funksjon for å sjekke om den tilhører en bestemt klasse.

La oss 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 kjører programmet ovenfor, får vi følgende utdata:

 (8 + 3j) Sann

Mens heltall kan ha en hvilken som helst lengde, er et flytende tall bare nøyaktig opptil 15 desimaler (16. plassering er unøyaktig).

Tallene vi håndterer hver dag er av desimalsystemet (base 10). Men dataprogrammerere (generelt innebygde programmerere) trenger å jobbe med binære (base 2), heksadesimale (base 16) og oktale (base 8) tallsystemer.

I Python kan vi representere disse tallene ved å plassere et prefiks foran nummeret. Tabellen nedenfor viser disse prefiksene.

Nummer System Prefiks
Binær '0b' eller '0B'
Octal '0o' eller '0O'
Heksadesimal '0x' eller '0X'

Her er noen eksempler

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

Når du kjører programmet, vil utdataene være:

 107 253 13

Skriv konvertering

Vi kan konvertere en type tall til en annen. Dette er også kjent som tvang.

Operasjoner som tillegg, subtraksjon tvinger heltall til å flyte implisitt (automatisk), hvis en av operandene er flytende.

 >>> 1 + 2.0 3.0

Vi kan se over at 1 (heltall) blir tvunget til 1.0 (float) for tillegg, og resultatet er også et flytende nummer.

Vi kan også bruke innebygde funksjoner som int(), float()og complex()å konvertere mellom typer eksplisitt. Disse funksjonene kan til og med konvertere fra strenger.

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

Når du konverterer fra flottør til heltall, blir tallet avkortet (desimaldeler fjernes).

Python desimal

Python innebygd klasse float utfører noen beregninger som kan forbløffe oss. Vi vet alle at summen av 1.1 og 2.2 er 3.3, men Python ser ut til å være uenig.

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

Hva skjer?

Det viser seg at flytende tall blir implementert i maskinvare som binære brøker, ettersom datamaskinen bare forstår binær (0 og 1). Av denne grunn kan de fleste desimalfraksjonene vi kjenner, ikke lagres nøyaktig på datamaskinen vår.

La oss ta et eksempel. Vi kan ikke representere brøkdelen 1/3 som et desimaltall. Dette vil gi 0.33333333 … som er uendelig lang, og vi kan bare tilnærme det.

It turns out that the decimal fraction 0.1 will result in an infinitely long binary fraction of 0.000110011001100110011… and our computer only stores a finite number of it.

This will only approximate 0.1 but never be equal. Hence, it is the limitation of our computer hardware and not an error in Python.

 >>> 1.1 + 2.2 3.3000000000000003

To overcome this issue, we can use the decimal module that comes with Python. While floating-point numbers have precision up to 15 decimal places, the decimal module has user-settable precision.

Let's see the difference:

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

Output

 0.1 0.1000000000000000055511151231257827021181583404541015625

This module is used when we want to carry out decimal calculations as we learned in school.

It also preserves significance. We know 25.50 kg is more accurate than 25.5 kg as it has two significant decimal places compared to one.

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

Output

 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 kjører programmet ovenfor, får vi utdataene som følger. (Verdiene kan være forskjellige på grunn av den tilfeldige oppførselen)

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

Her er den komplette listen over funksjoner og attributter som er tilgjengelige i den tilfeldige Python-modulen.

Interessante artikler...