How to reverse integer in Python 3

How to reverse an integer in Python 3.

In Python 3 int type is the same as long so there is no need to check for int overflow.

In other cases you will have to check for integer max value and min value to avoid a stack overflow.

The steps are bellow with each testing step shown for reversing 125 into 521.

Using modulus operator to find the remainder after dividing by 10

remainder = n % 10

if n = 125

steps:

1: 125 % 10 = 5 
2: 12 % 10 = 2 
3: 1 % 10 = 1

Next we multiply rev by 10 to move to the next digit. For first digit it’s 5

rev = rev * 10 + remainder

steps:

1: (0*10)+5 = 5 
2: (5*10)+2 = 52 
3: (52*10)+1 = 521

next is we round down the result of n / 10 and move to the next digit.

n = math.floor(n / 10)

steps:

1: 125/10 = floor(12.5) = 12 
2: 12/10 = floor(1.2) = 1 
3: 1/10 = floor(0.1) = 0 END

Whole Python script to try.

import math
# Python3 program to reverse a number here int is the same as long - no int limit
n = 98743222222
rev = 0
while(n > 0):
 remainder = n % 10 # n mod 10 for remainder
 rev = rev * 10 + remainder # add it to reversed
 n = math.floor(n / 10) # divide n by 10 to move to the next step, must round down here
 print(rev) #see each step if you like
print(n)
print(rev)

Or try this version that works with negative numbers also.

import math
# Python3 program to reverse a number here int is the same as long - no int limit
# This version works with negative numbers too:
n = 98743
rev = 0
isnegative = False
if (n < 0): 
 isnegative = True
 n = abs(n)

while(n > 0):
 remainder = n % 10 # n mod 10 for remainder
 rev = rev * 10 + remainder # add it to reversed
 n = math.floor(n / 10) # divide n by 10 to move to the next step, must round down here
 print(rev) #see each step if you like
if isnegative:
 rev = rev * -1
print(rev)


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.