With my code, I want to get the last two digits of an integer. But when I make x a positive number, it will take the first x digits, if it is a negative number, it will remove the first x digits.
Code:
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)
asked Jan 15, 2017 at 18:37
0
Why don’t you extract the absolute value of the number modulus 100? That is, use
abs(num) % 100
to extract the last two digits?
In terms of performance and clarity, this method is hard to beat.
answered Jan 15, 2017 at 18:42
BathshebaBathsheba
231k33 gold badges360 silver badges480 bronze badges
0
To get the last 2 digits of num
I would use a 1 line simple hack:
str(num)[-2:]
This would give a string.
To get an int, just wrap with int:
int(str(num)[-2:])
answered Jan 15, 2017 at 19:13
Israel UntermanIsrael Unterman
13k4 gold badges27 silver badges35 bronze badges
Simpler way to extract last two digits of the number (less efficient) is to convert the number to str
and slice the last two digits of the number. For example:
# sample function
def get_last_digits(num, last_digits_count=2):
return int(str(num)[-last_digits_count:])
# ^ convert the number back to `int`
OR, you may achieve it via using modulo %
operator (more efficient), (to know more, check How does % work in Python?) as:
def get_last_digits(num, last_digits_count=2):
return abs(num) % (10**last_digits_count)
# ^ perform `%` on absolute value to cover `-`ive numbers
Sample run:
>>> get_last_digits(95432)
32
>>> get_last_digits(2)
2
>>> get_last_digits(34644, last_digits_count=4)
4644
answered Jan 15, 2017 at 18:40
Moinuddin QuadriMoinuddin Quadri
46.3k12 gold badges95 silver badges125 bronze badges
2
to get the last 2 digits of an integer.
a = int(input())
print(a % 100)
answered Oct 11, 2019 at 7:36
You can try this:
float(str(num)[-2:])
answered Jan 7, 2021 at 22:38
Is there a way to get the last digit of a number. I am trying to find variables that end with “1” like 1,11,21,31,41,etc..
If I use a text variable I can simply put
print number[:-1]
but it works for variables with text(like “hello) but not with numbers. With numbers I get this error:
TypeError: 'int' object is not subscriptable
I am trying to see if there’s a better way to deal with numbers this way. I know a solution is to convert to a string and then do the above command but I’m trying to see if there’s another way I have missed.
Thanks so much in advance…
asked Mar 10, 2011 at 2:36
Remainder when dividing by 10, as in
numericVariable % 10
This only works for positive numbers. -12%10 yields 8
answered Mar 10, 2011 at 2:36
Jim GarrisonJim Garrison
85.3k20 gold badges153 silver badges190 bronze badges
0
Use the modulus operator with 10:
num = 11
if num % 10 == 1:
print 'Whee!'
This gives the remainder when dividing by 10, which will always be the last digit (when the number is positive).
answered Mar 10, 2011 at 2:37
CameronCameron
95.4k24 gold badges194 silver badges222 bronze badges
2
So you want to access the digits in a integer like elements in a list; easiest way I can think of is:
n = 56789
lastdigit = int(repr(n)[-1])
# > 9
Convert n into a string, accessing last element then use int constructor to convert back into integer.
For a Floating point number:
n = 179.123
fstr = repr(n)
signif_digits, fract_digits = fstr.split('.')
# > ['179', '123']
signif_lastdigit = int(signif_digits[-1])
# > 9
answered Oct 17, 2011 at 5:07
Zv_oDDZv_oDD
1,8181 gold badge18 silver badges26 bronze badges
1
I can’t add a comment yet, but I wanted to iterate and expand on what Jim Garrison said
Remainder when dividing by 10, as in
numericVariable % 10
This only works for positive numbers. -12%10 yields 8
While modulus (%) is working as intended, throw on an absolute value to use the modulus in this situation.
abs(numericVariable) % 10
answered Feb 21, 2017 at 21:19
Micah PearceMicah Pearce
1,7833 gold badges27 silver badges60 bronze badges
Lostsoul, this should work:
number = int(10)
#The variable number can also be a float or double, and I think it should still work.
lastDigit = int(repr(number)[-1])
#This gives the last digit of the variable "number."
if lastDigit == 1 :
print("The number ends in 1!")
Instead of the print statement at the end, you can add code to do what you need to with numbers ending in 1.
Hope it helped!
answered Feb 3, 2019 at 3:37
Convert to string first:
oldint = 10101
newint = int(str(oldint)[-1:])
answered Dec 15, 2019 at 3:05
JayJay
1,2593 gold badges11 silver badges22 bronze badges
The simplest and most efficient way is to use the reminder :
last_digit = orginal_number % 10
answered Aug 14, 2020 at 17:37
1
This is a simple yet effective way to do it
if number < 0:
remainder = number % -10
else:
remainder = number % 10
answered Jun 28, 2022 at 10:29
1
By using iteration and the in built function of ‘digit’ the number is treated as binary and so it goes from backwards to forwards. Here is an example of a bit of code for you.
for digit in binary:
denary= denary*2 + int(digit)
answered Nov 5, 2017 at 15:02
Try this efficient one-liner code to call the last digit of any integer.
The logic is first to convert the given value to a string and then convert it into the list to call the last digit by calling the -1 index. After that, convert it into an integer to wrap it up.
val is a variable that represents any integer.
int(list(str(val))[-1])
Example:
val = 23442
int(list(str(val))[-1])`
Output: 2
answered Dec 22, 2022 at 10:43
1
Давайте разберем, как найти последнюю цифру числа при помощи Python. Начинающим программистам довольно часто задают подобные задачки. Как обычно, есть больше одного способа решения. Мы рассмотрим использование строк и деление по модулю.
Как найти последнюю цифру числа при помощи строк
Чтобы получить последнюю цифру заданного числа, нужно сделать следующее:
- Преобразовать число в строку при помощи функции
str()
- Получить последний символ строки по индексу -1
- При помощи функции int() преобразовать полученный символ в целое число
В коде это выглядит так:
number = 24685 last_digit = int(str(number)[-1]) print(last_digit) # Вывод: # 5
Мы использовали функцию str()
для преобразования целого числа в строку, чтобы можно было получить доступ к символам строки по индексу. Индексы Python отсчитываются от нуля, поэтому первый символ в строке имеет индекс 0, а последний len(my_str) - 1
. Также можно использовать отрицательные индексы – тогда отсчет идет с обратной стороны (справа). Последний символ строки имеет индекс -1.
Следующим шагом является получение доступа к символу с индексом -1. Таким образом мы получаем последний символ строки. Получив этот символ, мы должны преобразовать его в целое число при помощи функции int()
.
Тот же подход можно использовать и для получения последних N цифр заданного числа.
number = 24685 # Получить последние 2 цифры числа last_two = int(str(number)[-2:]) print(last_two) # 85 # Получить последние 3 цифры числа last_three = int(str(number)[-3:]) print(last_three) # 685
Использование оператора деления по модулю
Чтобы получить последнюю цифру числа, можно применить оператор деления по модулю. Этот оператор возвращает остаток от деления. Если мы разделим число на 10, в остатке получим последнюю цифру числа.
number = 24685 last_digit = number % 10 print(last_digit) # 5
Если число может оказаться отрицательным, то для получения правильного результата нужно использовать функцию abs()
.
number = -24685 last_digit = abs(number) % 10 print(last_digit) # 5
Функция abs()
возвращает абсолютное значение числа. Иными словами, если число положительное, то ничего не изменится, а если число отрицательное, то будет возвращено это же число без знака минус.
print(abs(-27)) # 27 print(abs(27)) # 27
Оператор деления по модулю возвращает остаток от деления первого числа на второе.
print(10 % 2) # 0 print(10 % 4) # 2
Если значение в правой части равно нулю, оператор вызывает исключение ZeroDivisionError
. В примере мы использовали целые числа, но значения слева и справа также могут быть числами с плавающей запятой.
В нашем случае оператор по деления модулю %
делит число на 10 и возвращает остаток от этого деления. Например, остаток от деления 12345 на 10 равен 5.
number = 12345 print(12345 - 1234 * 10) # 5
Ниже приведено еще несколько примеров:
number = 12345 print(82342 % 10) # 2 print(248 % 10) # 8 print(150 % 10) # 0
Какой подход вы выберете, зависит от личных предпочтений. Мы бы рекомендовали использовать оператор деления по модулю %
, так как он довольно прост для чтения и интуитивно понятен.
Перевод статьи Borislav Hadzhiev “Get the last digit of a number in Python”.
Если вы просто распечатываете число, оно выводится в формате по умолчанию. Для числа 2
это, очевидно, будет 2
не 02
,
Если вы хотите указать пользовательский формат, вам нужно использовать некоторую форму форматирования строки. У Python есть несколько способов сделать это.
Формат строки
Тот же синтаксис строки формата используется format
функция, str.format
метод, Formatter
подклассы и (с небольшими отличиями, которые здесь не актуальны) литералы f-строки.
Вы можете указать width
из 2
плюс align
из =
(имеется в виду числовое выравнивание – заполнение ставится после любого +
или же -
) и fill
из 0
, Но есть также специальный ярлык, где размещение 0
прямо перед width
означает выровненный по нулю заполнитель. Так:
>>> f"{x % 100:02}"
'02'
>>> format(x % 100, '02')
'02'
>>> '{:02}'.format(x % 100)
'02'
printf
форматирование строки
Python имеет более старый, но все же иногда полезный способ форматирования 1, который более точно соответствует C и аналогичным языкам, вызывая printf
стиль или %
-formatting.
Вы указываете width
из 2
и flag
из 0
, который указывает числовое заполнение нулями вместе с type
из d
чтобы указать, что вы хотите отформатировать число как десятичное число со знаком:
>>> "%02d" % (x % 100,)
'02'
В то время как %
-форматирование не такое гибкое и мощное, как строки форматирования, иногда его проще понять (особенно если вы привыкли к C или другому языку), часто быстрее и работает с bytes
так же как str
,
Ручные строковые операции
Наконец, вы всегда можете преобразовать число в строку, а затем использовать строковые методы. Например, вы можете использовать zfill
метод обнуления строки:
>>> str(x % 100).zfill(2)
'02'
… или вы можете использовать rjust
метод, чтобы оправдать это '0'
в качестве символа заполнения:
>>> str(x % 100).rjust(2, '0')
'02'
На самом деле, вместо вычисления остатка, вы можете просто преобразовать все это в строку, обрезать ее, а затем заполнить нулями:
>>> str(x)[-2:].zfill(2)
… хотя это, вероятно, не то, что вы хотите x
это, скажем, -123
(ты получишь 23
вместо 77
).
1. Фактически, он предоставляет два более старых решения, другое – строки шаблонов, но они не так полезны, как часто.
Если вы просто распечатаете число, он распечатает его в формате по умолчанию. Для номера 2 это, очевидно, будет 2, а не 02.
Если вы хотите указать собственный формат, вам нужно использовать некоторую форму форматирования строк. У Python есть несколько способов сделать это.
Строки формата
Тот же Синтаксис строки формата используется функцией format, методом str.format, подклассами Formatter и (с небольшими отличиями, которые здесь не важны) f-строковые литералы.
Вы можете указать width из 2, плюс align из = (что означает числовое выравнивание – заполнение помещается после любого + или -) и fill из 0. Но есть также специальный ярлык, при котором размещение 0 непосредственно перед width означает заполнение нулями с выравниванием по цифрам. Так:
>>> f"{x % 100:02}"
'02'
>>> format(x % 100, '02')
'02'
>>> '{:02}'.format(x % 100)
'02'
Форматирование строк в стиле printf
У Python есть более старый, но все же иногда полезный способ форматирования 1, который более точно соответствует таковому в C и подобных языках, вызывая printf-стиль или %-formatting.
Вы указываете width из 2 и flag из 0, который указывает числовое заполнение нулями, вместе с type из d, чтобы указать, что вы хотите отформатировать число как целое десятичное со знаком:
>>> "%02d" % (x % 100,)
'02'
Хотя форматирование % не так гибко и мощно, как строки форматирования, иногда его проще понять (особенно если вы привыкли к C или другому языку), часто оно быстрее и работает как с bytes, так и с str.
Ручные операции со строками
Наконец, вы всегда можете преобразовать число в строку, а затем использовать для нее строковые методы. Например, вы можете использовать метод zfill для заполнения строки нулями:
>>> str(x % 100).zfill(2)
'02'
… Или вы можете использовать метод rjust, чтобы выровнять его по правому краю, используя ‘0’ в качестве символа заполнения:
>>> str(x % 100).rjust(2, '0')
'02'
Фактически, вместо вычисления остатка вы можете просто преобразовать все это в строку, обрезать ее, а затем заполнить нулями:
>>> str(x)[-2:].zfill(2)
… Хотя это, вероятно, будет не то, что вам нужно, это x, скажем, -123 (вы получите 23 вместо 77).
1. In fact, it provides two older solutions, the other being template strings, but these aren’t useful as often.