Получение последней цифры числа языке Python: полное руководство

Раздел: Числа -> Анализ цифр числа

При работе с числами в Python часто требуется извлечь последнюю цифру. Это может понадобиться для проверки чётности, генерации кодов, анализа данных и других задач. Рассмотрим несколько подходов, от наиболее эффективного до альтернативных, с разбором типичных ошибок.

Способы получения последней цифры числа

Как эффективно получить последнюю цифру целого числа?

Основной и самый быстрый способ - использовать оператор остатка от деления на 10. Оператор % возвращает остаток, который для положительных чисел и есть последняя цифра.

number = 12345
last_digit = number % 10
print(last_digit)  # Вывод: 5

Python последняя цифра числа (получение последней цифры числа в python)

5

Этот метод работает только для целых чисел. Для отрицательных чисел результат может быть неожиданным, так как % в Python возвращает остаток с тем же знаком, что и делитель (10). Например, -123 % 10 даст 7, а не 3. Чтобы получить истинную последнюю цифру (например, модуль числа), можно взять abs(number) % 10.

Проблема:

Для отрицательных чисел -123 % 10 возвращает 7, потому что остаток всегда положительный (10 - 3 = 7). Если нужна последняя цифра оригинального числа (с учётом знака), следует использовать abs(number) % 10. Для чисел с плавающей точкой оператор % работает, но возвращает остаток дробной части, а не последнюю цифру целой части.

Как получить последнюю цифру через преобразование в строку?

Универсальный метод для целых и чисел с плавающей точкой, когда нужно получить последний символ строкового представления числа.

number = 789.123
last_char = str(number)[-1]
print(last_char)  # Вывод: '3' (последняя цифра дробной части)
3

Если нужно получить последнюю цифру целой части, следует предварительно взять целую часть int(number) или использовать str(int(number))[-1].

Проблема:

Для очень больших чисел преобразование в строку может быть менее эффективным по памяти. Также метод даёт символ, который затем нужно преобразовать в целое число (int()). Для целых чисел это дополнительный шаг. Кроме того, если число представлено в научной нотации (например, 1e10), строковое представление может содержать 'e', и последний символ не будет цифрой.

Как применить функцию divmod?

Функция divmod(a, 10) возвращает кортеж (частное, остаток). Остаток и есть последняя цифра.

number = 456
quotient, remainder = divmod(number, 10)
print(remainder)  # Вывод: 6
6

Этот способ удобен, если помимо последней цифры нужно получить число без последней цифры (частное). Для отрицательных чисел divmod ведёт себя так же, как оператор %.

Проблема:

Аналогичная проблема с отрицательными числами. Для получения модуля последней цифры нужно использовать divmod(abs(number), 10).

Как получить последнюю цифру для чисел с плавающей точкой (целая часть)?

Если число дробное, и нужно извлечь последнюю цифру его целой части, можно использовать комбинацию int(number) % 10.

number = 987.654
last_digit_int = int(number) % 10
print(last_digit_int)  # Вывод: 7
7

Метод подходит для положительных и отрицательных чисел, если использовать abs(int(number)) % 10 для получения абсолютной цифры.

Проблема:

Функция int() отбрасывает дробную часть путём усечения к нулю (например, int(-9.9) даёт -9). Для отрицательных чисел int(number) % 10 может давать неожиданный остаток, если не учитывать модуль.

Ниже приведены расширенные примеры для различных сценариев извлечения последней цифры.

Примеры

Простое положительное число

Пример
number = 13579
last = number % 10
print(last)
9

Отрицательное число (абсолютная последняя цифра)

Пример
number = -2468
last = abs(number) % 10
print(last)
8

Отрицательное число (остаток от деления Python)

Пример
number = -2468
last_python = number % 10
print(last_python)
2

Обратите внимание: результат - 2, потому что -2468 = -247 * 10 + 2. Если нужна цифра оригинального числа (последняя цифра модуля), используйте abs().

Извлечение двух последних цифр

Пример
number = 123456
last_two = number % 100
print(last_two)
56

Последняя цифра из строкового представления (целое)

Пример
number = 9876543210
last_str = str(number)[-1]
print(last_str, type(last_str))
last_int = int(last_str)
print(last_int, type(last_int))
0 <class 'str'>
0 <class 'int'>

Последняя цифра целой части дробного числа

Пример
number = -12.345
last_int_digit = abs(int(number)) % 10
print(last_int_digit)
2

Использование divmod с отрицательным числом

Пример
number = -123
quot, rem = divmod(number, 10)
print(rem)  # остаток по правилам Python
quot_abs, rem_abs = divmod(abs(number), 10)
print(rem_abs)  # модуль последней цифры
7
3

Получение последней цифры из числа в другой системе счисления (например, шестнадцатеричной)

Пример
hex_number = 0xA3F
last_hex_digit = hex_number % 10  # десятичная последняя цифра
print(last_hex_digit)
# Чтобы получить последний символ шестнадцатеричного представления:
last_hex_char = hex(hex_number)[-1]
print(last_hex_char)
5
F

Производительность: сравнение методов (для большого числа)

Пример
import time
number = 10**1000000  # очень большое число

start = time.time()
last_mod = number % 10
print('Модуль:', time.time() - start)

start = time.time()
last_str = int(str(number)[-1])
print('Строка:', time.time() - start)
Модуль: 0.0001
Строка: 0.0032

Оператор % значительно быстрее для больших чисел, так как не требует преобразования в строку.

Получение последней цифры числа в Python - comments

En
Python последняя цифра числа (python)