2015-02-17 16 views
6

vorrei cambiare un intero tale da 23.457.689-689, 12.457.245-245 eccGet ultime tre cifre del numero intero

non richiedo i numeri per essere arrotondati e non vogliamo dover convertire in stringa .

Qualche idea su come questo può essere fatto in Python 2.7?

risposta

20

utilizzare l'operazione %:

>>> x = 23457689 
>>> x % 1000 
689 

% è l'operazione mod (cioè modulo).

+0

Grazie! Questo è esattamente ciò di cui avevo bisogno. –

9

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. 
+0

Grazie, ma mi è stato semplicemente richiesto di estrarre le ultime cifre e il grafico, i valori non cambierebbero mai. Potrei usare anche questo –

+2

"i valori non cambierebbero mai ..." ha detto ogni programmatore di sempre. – ely

+0

Credo di avere ancora molto da imparare. –