I am learning python and I meet some troubles.
I want to write the script to reverse a negative integer " -1234 to 4321- " and non-integer " 1.234 to 432.1". please help me. P.S. cannot use "str[]" function
I just only can write the script to reverse positive integer 1234 to 4321
def reverse_int[n]:
x = 0
while n > 0:
x *= 10
x += n % 10
n /= 10
return x
print reverse_int[1234]
smac89
35.1k14 gold badges115 silver badges162 bronze badges
asked Apr 28, 2015 at 17:24
6
def reve[x]:
x=str[x]
if x[0]=='-':
a=x[::-1]
return f"{x[0]}{a[:-1]}"
else:
return x[::-1]
print[reve["abc"]]
print[reve[123]]
print[reve[-123]]
#output cba 321 -321
answered Jul 5, 2021 at 14:21
1
how
about using your code, but just concatenate a -
when n
is negative?
rev_int.py:
def reverse_int[m]:
x = 0
n = m
if m < 0 :
n *= -1
while n > 0 :
x *= 10
x += n % 10
n /= 10
if m < 0:
#concatenate a - sign at the end
return `x` + "-"
return x
print reverse_int[1234]
print reverse_int[-1234]
This produces:
$ python rev_int.py
4321
4321-
answered Apr 28, 2015 at 17:55
CuriousCurious
2,6281 gold badge29 silver badges40 bronze badges
6
Using SLICING EASILY DONE IT
def uuu[num]:
if num >= 0:
return int[str[num][::-1]]
else:
return int['-{val}'.format[val = str[num][1:][::-1]]]
answered Mar 23, 2021 at 6:35
Below code runs fine on Python-3 and handles positive and negative integer case. Below code takes STDIN and prints the output on STDOUT.
Note: below code handles only the integer case and doesn't handles the non-integer case.
def reverseNumber[number]:
x = 0
#Taking absolute of number for reversion logic
n = abs[number]
rev = 0
#Below logic is to reverse the integer
while[n > 0]:
a = n % 10
rev = rev * 10 + a
n = n // 10
#Below case handles negative integer case
if[number < 0]:
return [str[rev] + "-"]
return [rev]
#Takes STDIN input from the user
number=int[input[]]
#Calls the reverseNumber function and prints the output to STDOUT
print[reverseNumber[number]]
answered Aug 24, 2021 at 17:43
Ankit RajAnkit Raj
8491 gold badge7 silver badges17 bronze badges
Using str convert method.
num = 123
print[str[num][::-1]]
answered May 11 at 9:46
1
Use this as a guide and make it work for floating point values as well:
import math
def reverse_int[n]:
if abs[n] < 10:
v = chr[abs[n] + ord['0']]
if n < 0: v += '-'
return v
else:
x = abs[n] % 10
if n < 0: return chr[x + ord['0']] + reverse_int[math.ceil[n / 10]]
else: return chr[x + ord['0']] + reverse_int[math.floor[n / 10]]
print reverse_int[1234]
answered Apr 28, 2015 at 17:43
smac89smac89
35.1k14 gold badges115 silver badges162 bronze badges
2
Why not just do the following?:
def reverse[num]:
revNum = ''
for i in `num`:
revNum = i + revNum
return revNum
print reverse[1.12345]
print reverse[-12345]
These would print 54321.1 and 54321-.
Lol, I don't understand the down-vote.. I guess this is too simple and doesn't require over complicating the process to get to the same result? Does this not solve the problem at hand no matter the number used?
answered Apr 28, 2015 at 18:30
AaronAaron
11 bronze badge
2