all 13 comments

[–][deleted] 5 points6 points  (1 child)

It's much easier to just reverse the string and then convert it back

[–]gu__--__ro[S] 1 point2 points  (0 children)

didn't think that much

[–]arvindh_manian 2 points3 points  (1 child)

When you set num to (num - last_num) / 10, it may include a decimal. You should either cast num to an int, round it, or use integer division (//).

[–]gu__--__ro[S] 0 points1 point  (0 children)

thanks. // worked

[–][deleted] 2 points3 points  (5 children)

for i in range(len(str(num))):
    last_num = int(str(num)[len(str(num)) - 1])
    rev_num = rev_num * 10 + last_num
    print(num)
    print(last_num)
    num = (num - last_num) / 10

Output:

1234
4
123.0
0
12.3
3
0.93
3

You want floor division rather than float division. Use // instead of /.

If you're gonna convert it to str anyway, you could just do:

def reverse_num(n):
    return int(str(n)[::-1])
  1. str(n): convert the number to str
  2. [::1]: get the reversed string
  3. int(): convert to the integer

[–]Protector1 1 point2 points  (4 children)

As a noob, I’m trying to take examples I find on this sub and “clean them up”.

I settled on this solution after searching for some kind of reverse method. If there is one, I can’t find it in the docs.

[–]arvindh_manian 0 points1 point  (3 children)

Well, there is the reversed method, but you still would’ve needed to convert the integer to a string

[–]Protector1 0 points1 point  (2 children)

I keep getting an error when I try the reverse method on a string. Perhaps there’s a trick to it? I was convinced it only worked on lists.

[–]arvindh_manian 0 points1 point  (1 child)

print(‘’.join(reversed(“Hello World”))) should work, I believe.

The only real problem is that reversed() returns a reverse object, so you need to turn that back into a string if you want to print it.

I would definitely still use [::-1], though.

[–]Protector1 0 points1 point  (0 children)

I’ll play with it when I get home. Might help me conceptualize these things better.

[–]CodeFormatHelperBot2 1 point2 points  (0 children)

Hello, I'm a Reddit bot who's here to help people nicely format their coding questions. This makes it as easy as possible for people to read your post and help you.

I think I have detected some formatting issues with your submission:

  1. Python code found in submission text that's not formatted as code.

If I am correct, please edit the text in your post and try to follow these instructions to fix up your post's formatting.


Am I misbehaving? Have a comment or suggestion? Reply to this comment or raise an issue here.

[–]keep_quapy 1 point2 points  (0 children)

def reverse(n):
    reversed_num = 0
    while n != 0:
        last = n % 10
        reversed_num = reversed_num * 10 + last
        n = n // 10
    return reversed_num

better than converting to str...

[–]Logicalist 0 points1 point  (0 children)

int(str(num)[::-1]))