Nu

Numeri in Python

78 esercizi

Informazioni su Numeri

Python ha tre diversi tipi di numeri predefiniti: i numeri interi (int), i numeri in virgola mobile (float) e i numeri complessi (complex). Anche le frazioni (fractions.Fraction) e i numeri decimali (decimal.Decimal) sono disponibili importandoli dalla libreria standard.

Anche i numeri interi, compresi quelli esadecimali (hex()), ottali (oct()) e binari (bin()) senza cifre decimali, sono identificati come ints:

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

I numeri che contengono un punto decimale (con o senza parte frazionaria) sono identificati come floats:

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

Aritmetica

Python supporta pienamente l'aritmetica tra questi diversi tipi di numeri e, quando vengono usati con gli operatori aritmetici binari (+, -, *, /, // e %), converte i numeri di tipo più ristretto per adattarli alle loro controparti di tipo più ampio.

Tutti i numeri (tranne quelli complessi) supportano tutte le operazioni aritmetiche, valutate secondo la precedenza degli operatori. Il supporto per le funzioni matematiche (oltre a + e -) applicate ai numeri complessi si trova nel modulo cmath.

Addizione e sottrazione

Gli operatori di addizione e sottrazione si comportano come nella matematica normale. Se uno o più operandi sono di tipo float, anche gli int rimanenti verranno convertiti in float:

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

Moltiplicazione

Come per l'addizione e la sottrazione, anche la moltiplicazione converte i numeri di tipo più ristretto per adattarli alle controparti di tipo più ampio:

>>> 3 * 2
6

>>> 3 * 2.0
6.0

Divisione

La divisione restituisce sempre un float, anche se il risultato è un numero intero:

>>> 6/5
1.2

>>> 6/2
3.0

Divisione intera

Se serve un risultato di tipo int, puoi usare la divisione intera per troncare il risultato. La divisione intera si esegue con l'operatore //:

>>> 6//5
1

>>> 6//2
3

Modulo

L'operatore modulo (%) restituisce il resto della divisione tra i due operandi:

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2

Un altro modo per vedere 5 % 3:

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

Elevamento a potenza

L'elevamento a potenza si esegue con l'operatore **:

>>> 2 ** 3
8

>>> 4 ** 0.5
2

Conversioni

I numeri possono essere convertiti da int a float e da float a int usando le funzioni predefinite int() e float():

>>> int(3.45)
3

>>> float(3)
3.0

Arrotondamento

Python mette a disposizione una funzione predefinita round(<number>, <decimal_places>) per arrotondare un numero in virgola mobile a un dato numero di cifre decimali. Se non viene specificato il numero di cifre decimali, il numero viene arrotondato all'intero più vicino e viene restituito un int:

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

Priorità e parentesi

Python permette di usare le parentesi per raggruppare le espressioni. È utile quando vuoi sovrascrivere l'ordine predefinito delle operazioni.

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

Python segue la regola PEMDAS per la precedenza degli operatori. Questo significa che i calcoli all'interno delle () hanno la priorità più alta, seguiti da **, poi *, /, //, %, + e -:

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770

Precisione e rappresentazione

I numeri interi in Python hanno precisione arbitraria: il numero di cifre è limitato solo dalla memoria disponibile del sistema host.

I numeri in virgola mobile sono di solito implementati usando un double in C (15 cifre decimali di precisione), ma la loro rappresentazione varia a seconda del sistema host. I numeri complessi hanno una parte real e una parte imaginary, entrambe rappresentate da numeri in virgola mobile.

Per una discussione più dettagliata dei problemi e dei limiti dell'aritmetica in virgola mobile nei vari linguaggi di programmazione, dai un'occhiata a 0.30000000000000004.com e a Il tutorial di Python.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Numeri

La pratica è bloccata

Sblocca 3 altri esercizi per esercitarti su Numeri