如何在python中反转int?

时间:2014-07-25 10:11:28

标签: python reverse

我正在创建一个python脚本,打印出'99瓶啤酒'的整首歌曲,但是相反。我唯一无法逆转的是数字,整数,而不是字符串。

这是我的完整脚本,

def reverse(str):
   return str[::-1]

def plural(word, b):
    if b != 1:
        return word + 's'
    else:
        return word

def line(b, ending):
    print b or reverse('No more'), plural(reverse('bottle'), b), reverse(ending)

for i in range(99, 0, -1):
    line(i, "of beer on the wall")
    line(i, "of beer"
    print reverse("Take one down, pass it around")
    line(i-1, "of beer on the wall \n")

我理解我的反向函数将字符串作为参数,但是我不知道如何接受整数,或者如何在脚本中反转整数。

15 个答案:

答案 0 :(得分:8)

不将数字转换为字符串:

def reverse_number(n):
    r = 0
    while n > 0:
        r *= 10
        r += n % 10
        n /= 10
    return r

print(reverse_number(123))

答案 1 :(得分:5)

这样的东西?

>>> x = 123
>>> str(x)
'123'
>>> str(x)[::-1]
'321'

答案 2 :(得分:5)

你正以一种奇怪的方式接近这一点。你已经有了一个倒车功能,那么为什么不让line只是按正常的方式建立 线?

def line(bottles, ending):
    return "{0} {1} {2}".format(bottles, 
                                plural("bottle", bottles), 
                                ending)

运行方式如下:

>>> line(49, "of beer on the wall")
'49 bottles of beer on the wall'

然后将结果传递给reverse

>>> reverse(line(49, "of beer on the wall"))
'llaw eht no reeb fo selttob 94'

这样可以更容易地分别测试代码的每个部分,并查看将它们放在一起时发生的事情。

答案 3 :(得分:1)

最好的方法是

x=12345
a=str(x)[::-1]\\ In this process i have create string of inverse of integer (a="54321")
a=int(a) \\ Here i have converted string a in integer 

或 一行代码是

a=int(str(x)[::-1]))

答案 4 :(得分:1)

def reverse_number(n):
r = 0
while n > 0:
    r = (r*10) + (n % 10)
    print(r)
    r *=10
    n //= 10
return r

print(reverse_number(123))

答案 5 :(得分:0)

您可以使用str(i)将整数转换为字符串,然后使用反向函数。

以下行应该可以满足您的需求:

    def line(b, ending):
        print reverse(str(b)) or reverse('No more'), plural(reverse('bottle'),reverse(str(b))), reverse(ending)

答案 6 :(得分:0)

原始号码位于

a = 123

我们将int转换为字符串,然后将其反转,然后再次转换为int并将反转的数字存储在b中

b = int("".join(reversed(str(a))))

打印a和b的值 print(a,b)

答案 7 :(得分:0)

def reverse_number(n):
r = 0
while n > 0:
    r *= 10
    r += n % 10
    n /= 10
return r

print(reverse_number(123))

如果数字以零结尾,则此代码将不起作用,例如100和1000返回1

答案 8 :(得分:0)

def reverse(num):
  rev = 0
  while(num != 0):
      reminder = num % 10
      rev = (rev * 10 ) + reminder
      num = num // 10 
  print ("Reverse number is  : " , rev )
 
num=input("enter number : ")
reverse(int(num))

#/总是浮点数

#//除法运算得到的整数被调整到数字行的左侧

答案 9 :(得分:0)

我认为以下代码可以很好地反转您的正整数。 您可以将其用作代码中的函数。

  n = input()  # input is always taken as a string
  rev = int(str(n)[::-1]) 

如果您将n作为整数,则需要如图所示将其指定为str。这是反转正整数的最快方法

答案 10 :(得分:0)

您可以轻松地编写此类:

class reverse_number:
            def __init__(self,rvs_num):
                self.rvs_num = rvs_num
                rvs_ed = int(str(rvs_num)[::-1])
                print(rvs_ed)

您可以通过以下方式使用它:

reverse_number(your number)

答案 11 :(得分:0)

import math

def Function(inputt):

    a = 1
    input2 = inputt

    while(input2 > 9):

        input2 = input2/10
        a = a + 1

    print("There are ", a, " numbers ")
    N = 10  
    m = 1
    print(" THe reverse numbers are: ")

    for i in range(a):
        l = (inputt%N)/m
        print(math.floor(l), end = '')
        N = N*10
        m = m*10
    print(" \n")
    return 0
enter = int(input("Enter the number: "))
print(Function(enter))

答案 12 :(得分:0)

def reverse(x):
        re = 0
        negative = x < 0
        MAX_BIG = 2 ** 31 -1
        MIN_BIG = -2 ** 31 
        x = abs(x)

        while x != 0:
            a = int(x % 10)
            re = re * 10 + a
            x = int(x // 10)

        reverse = -1 * re if negative else re
        return 0 if reverse < MIN_BIG or reverse > MAX_BIG else reverse

这是用于 32 位整数 ( -2^31 ; 2^31-1 )

答案 13 :(得分:0)

处理负数的更强大的解决方案:

def reverse_integer(num):
    sign = [1,-1][num < 0]
    output = sign * int(str(abs(num))[::-1])

答案 14 :(得分:-1)

我用不同的方式写了作品

def isPalindrome(x: int) -> bool:

    if x<0:
        return False
    elif x<10:
        return True
    else:
        rev=0
        rem = x%10
        quot = x//10
        rev = rev*10+rem
        while (quot>=10):
           rem = quot%10
           quot = quot//10
           rev = rev*10+rem
        rev = rev*10+quot
        if rev==x:
            return True
        else:
            return False

res=isPalindrome(1221)