Как найти две последние цифры числа python

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

Bathsheba's user avatar

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 Unterman's user avatar

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

Community's user avatar

answered Jan 15, 2017 at 18:40

Moinuddin Quadri's user avatar

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

nullishcoalesce's user avatar

You can try this:

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

answered Jan 7, 2021 at 22:38

Lokesh Sankar Ramesh's user avatar

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

Lostsoul's user avatar

Remainder when dividing by 10, as in

numericVariable % 10

This only works for positive numbers. -12%10 yields 8

Community's user avatar

answered Mar 10, 2011 at 2:36

Jim Garrison's user avatar

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

Cameron's user avatar

CameronCameron

95.4k25 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_oDD's user avatar

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 Pearce's user avatar

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

Aarush Mehrotra's user avatar

Convert to string first:

oldint = 10101
newint = int(str(oldint)[-1:]) 

answered Dec 15, 2019 at 3:05

Jay's user avatar

JayJay

1,2693 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

maher ben abdesslam's user avatar

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

Haile Melaku's user avatar

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

Papi Harpy's user avatar

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

JP Curada's user avatar

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. Фактически, он предоставляет два более старых решения, другое — строки шаблонов, но они не так полезны, как часто.

Давайте разберем, как найти последнюю цифру числа при помощи Python. Начинающим программистам довольно часто задают подобные задачки. Как обычно, есть больше одного способа решения. Мы рассмотрим использование строк и деление по модулю.

Как найти последнюю цифру числа при помощи строк

Чтобы получить последнюю цифру заданного числа, нужно сделать следующее:

  1. Преобразовать число в строку при помощи функции str()
  2. Получить последний символ строки по индексу -1
  3. При помощи функции 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. In fact, it provides two older solutions, the other being template strings, but these aren’t useful as often.

Понравилась статья? Поделить с друзьями:
  • Как найти нарушения в организации
  • Майнкрафт как найти биос
  • Как найти сайт с молитвами
  • Как найти работу силы трения скольжения формула
  • Стир машина самсунг ошибка 5е как исправить самостоятельно