Чтобы правильно обрабатывать как положительные, так и отрицательные числа:
>>> x = -23457689
>>> print abs(x) % 1000
689
В функции, где вы можете выбрать количество первых цифр, чтобы:
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
ограничение, чтобы избежать преобразования в str
является слишком педантичный. Преобразование в str
было бы хорошим способом сделать это, если формат номера может измениться или формат сохраняемых цифр, которые необходимо сохранить, изменится.
>>> int(str(x)[-3:])
^^^^^ Easier to modify this than shoe-horning the mod function.
Спасибо! Это именно то, что мне нужно. –