Reputation:
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
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
Reputation: 377
to get the last 2 digits of an integer.
a = int(input())
print(a % 100)
Upvotes: 3
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
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
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