2017-01-15 16 views
1

С моим кодом я хочу получить последние две цифры целого числа. Но когда я делаю x положительным числом, он примет первые цифры x, если это отрицательное число, он удалит первые x цифр.Последние 2 цифры целого числа? Python 3

Код:

number_of_numbers = 1 
num = 9 
while number_of_numbers <= 100: 
    done = False 
    num = num*10 
    num = num+1 
    while done == False: 
    num_last = int(repr(num)[x]) 
    if num_last%14 == 0: 
     number_of_numbers = number_of_numbers + 1 
     done = True 
    else: 
     num = num + 1 
print(num) 
+1

Просто сделайте 'abs (num)% 100'. –

ответ

3

Simpler способ извлечь две последние цифры номера (менее эффективный) для преобразования числа в str и нарежьте две последние цифры номера. Например:

# sample function 
def get_last_digits(num, last_digits_count=2): 
    return int(str(num)[-last_digits_count:]) 
    #  ^convert the number back to `int` 

ИЛИ, вы можете достичь его с помощью использования по модулю % оператора (более эффективный), (чтобы узнать больше, проверить How does % work in Python?) как:

def get_last_digits(num, last_digits_count=2): 
    return abs(num) % (10**last_digits_count) 
    #  ^perform `%` on absolute value to cover `-`ive numbers 

Пример запуска:

>>> get_last_digits(95432) 
32 
>>> get_last_digits(2) 
2 
>>> get_last_digits(34644, last_digits_count=4) 
4644 
+1

Конверсионные операции стоят дорого. Почему вы хотите сделать это, если есть более простые способы? –

+0

@ Шива: Теперь я прямо упомянул, что преобразование менее эффективно. Converison * проще * для реализации (* по крайней мере по мне) * –

11

Почему вы не извлекаете абсолютное значение числового модуля 100? То есть, используйте

abs(num) % 100 

, чтобы извлечь последние две цифры?

С точки зрения производительности и ясности, этот метод трудно превзойти.

0

Чтобы получить последние 2 цифры num Я хотел бы использовать 1 линию простой хак:

str(num)[-2:] 

Это дало бы строку. Чтобы получить int, просто оберните с помощью int:

int(str(num)[-2:])