Per gestire interi positivi e negativi in modo corretto:
>>> x = -23457689
>>> print abs(x) % 1000
689
Come funzione in cui è possibile selezionare il numero di cifre iniziali per mantenere:
import math
def extract_digits(integer, digits=3, keep_sign=False):
sign = 1 if not keep_sign else int(math.copysign(1, integer))
return abs(integer) % (10**digits) * sign
Il vincolo per evitare la conversione in str
è troppo pedante. La conversione in str
sarebbe un buon metodo per eseguire questa operazione se il formato del numero dovesse cambiare o se il formato delle cifre finali da conservare cambierà.
>>> int(str(x)[-3:])
^^^^^ Easier to modify this than shoe-horning the mod function.
Grazie! Questo è esattamente ciò di cui avevo bisogno. –