Introduzione

L'operazione modulo è un'operazione aritmetica che trova il resto della divisione di un numero per un altro. Il resto è chiamato modulo dell'operazione.

Ad esempio, 5 diviso 3 è uguale a 1, con un resto di 2 e 8 diviso 4 è uguale a 2, con un resto di 0.

Operatore Modulo Python

In Python, l'operatore modulo è rappresentato dal segno di percentuale (%). La sintassi è la seguente:

num1 % num2

Ecco un esempio:

5 % 4
1

Se il divisore (il secondo argomento) è uguale a zero, ritornerà un ZeroDivisionError:

5 % 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero

L'operatore modulo accetta anche numeri mobili come argomenti:

6.8 % 3.4
0.0

Durante la formattazione delle stringhe, il carattere % rappresenta l'operatore di interpolazione.

Esempi

Uno dei casi d'uso più comuni dell'operatore modulo è verificare se un numero è pari o dispari. Se un numero diviso per 2 non ha resto, allora è un numero pari. Altrimenti, se lascia un resto di 1, il numero è dispari:

num = 11

if (num % 2) == 0:
   print(num, "is even")
else:
   print(num, "is odd")

Se esegui il codice sopra, 11 % 2 lascia un resto di 1 e il codice all'interno dell'istruzione else  viene eseguito:

(11, 'is odd')

Ecco un altro esempio, che mostra come verificare se un numero è un numero primo, usando l'operatore modulo. Un numero primo è un numero intero positivo che può essere diviso, senza resto, solo per se stesso e per 1:

def isPrimeNumber(num):
  if num < 1:
    return False
  for i in range(2, num):
    if (num % i) == 0:
      return False
  else:
    return True

Innanzitutto, stiamo verificando se il numero num è un numero positivo. Stiamo quindi verificando se il numero è divisibile per un altro numero nell'range da 2 a num senza un promemoria. Se nessuna delle condizioni è soddisfatta, il numero è primo.

L'operatore modulo può anche essere utilizzato per convertire unità di misura. L'esempio seguente mostra come convertire i secondi in minuti:

def secondsToMinutes(sec):
  seconds = sec // 60
  minutes = sec % 60
  return "%d minutes and %d seconds" % (minutes, seconds)

secondsToMinutes(657)
'57 minutes and 10 seconds'

La doppia barra (//), l'operatore di divisione del piano arrotonda il risultato al numero intero più vicino.

Conclusione

In questo articolo, ti abbiamo mostrato come usare l'operatore modulo di Python.