user5428930
user5428930

Reputation:

Last 2 digits of an integer? Python 3

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)

Upvotes: 18

Views: 89862

Answers (6)

pauljohn32
pauljohn32

Reputation: 2265

I'd use a regular expression, because I can :)

import re

x = re.sub(r"^\d{2}(\d{2})$", r"\1", str(num))
assert len(str(x)) == 2

If the input is not 4 digits, it sends back the original thing. Maybe the assert could be different. The other reason I like this is that if num is already reduced to 2 char, it just leaves it.

Upvotes: 0

Lokesh Sankar Ramesh
Lokesh Sankar Ramesh

Reputation: 21

You can try this:

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

Upvotes: 1

nullishcoalesce
nullishcoalesce

Reputation: 377

to get the last 2 digits of an integer.

a = int(input())
print(a % 100)

Upvotes: 3

Israel Unterman
Israel Unterman

Reputation: 13520

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:])

Upvotes: 17

Moinuddin Quadri
Moinuddin Quadri

Reputation: 48120

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

Upvotes: 6

Bathsheba
Bathsheba

Reputation: 234885

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.

Upvotes: 49

Related Questions