使用Python,反转一个整数,并判断是否回文

时间:2012-10-24 23:42:45

标签: python string list main function

使用Python,反转一个整数并确定它是否是回文。这是我对反向和回文的定义。我有正确的逻辑吗?

def reverse(num):
    s=len(num)
    newnum=[None]*length
    for i in num:
        s=s-1
        newnum[s]=i
        return newnum

def palindrome(num):
    a=str(num)
    l=len(z)/2
    if a[:1]==a[-1:][::-1]:
        b=True
    else:
        b=False

我在编写def main时遇到了一些麻烦。

13 个答案:

答案 0 :(得分:46)

def palindrome(num):
    return str(num) == str(num)[::-1]

答案 1 :(得分:16)

整数不具有len()。

测试数字是否为回文就像测试数字是否等于反向一样简单(尽管如果你想要最高效率,你可以只比较字符串两端的字符,直到到达中间)。

要找到整数的反转,你可以用硬方式(使用mod%和整数除法//找到每个数字并构造反向数字):

def reverse(num):
  rev = 0
  while num > 0:
    rev = (10*rev) + num%10
    num //= 10
  return rev

或者简单的方法(将数字转换为字符串,使用切片表示法反转字符串并将其转回整数):

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

答案 2 :(得分:1)

这是一个不可读的单行递归实现,部分基于answer by pedrosorio

def reverse(i):
    return int(i!=0) and ((i%10)*(10**int(math.log(i,10))) + reverse(i//10))

def is_palindrome(i):
    return i == reverse(i)

适用于整数i ≥ 0

请注意reverse(123) == reverse(1230) == 321。这不是问题,因为任何以0结尾的非零整数都不能成为回文。

另请注意,完整的整数反转当然不一定是确定它是否是回文。如果确定该数字不是回文,则可以实施逆转以便提前中止。

答案 3 :(得分:1)

长但可读:

def palindrome(x):
    a=""
    x=str(x)
    for i in range(len(x),0,-1):
        a+=x[i-1]
        print a
    if a==x:
        return True
    else:
        return False

答案 4 :(得分:1)

def revers(num): 
  rev = 0    
  while(num > 0):    
      rem = num %10    
      rev = (rev *10) + rem    
      num = num //10    

  return num

答案 5 :(得分:0)

我使用了这个程序的列表,也使用了字符串。

print('Enter Something')
a = list(input())
for i in range ((len(a)),0,-1):
   print (a[i-1],end='')

答案 6 :(得分:0)

import math

a = raw_input("Enter number:")
n = -1

reverse = 0    
for i in a:
        n += 1
        digit = math.pow(10,n)
        reverse = int(i)*digit + reverse

print int(reverse)  

if int(reverse) == int(a):
        print "Palindrome"
else:
        print ":("

答案 7 :(得分:0)

此代码将int转换为String,然后检查字符串是否为pallindrome。它的优点是速度快,缺点是它将int转换为String,从而妥协于完美的问题解决方案。

它也处理negative int

class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        s = str(x)
        if x >=0 :
            if s == s[::-1]:
                return True
            else:
                return False
        else:
            return False

答案 8 :(得分:0)

t=int(input("enter nos of test cases= "))
while t>0:
    n=int(input("enter number="))
    rev=0
    while n>0:
        digit=n%10
        rev=rev*10+digit
        n=n//10
    print(rev)
    t-=1

答案 9 :(得分:0)

这是我的解决方法。

z=input('input number')
if int(z) == int(str(z)[::-1]):
    print('The number is palindrome')
else:
    print('The number is not palindrome')

答案 10 :(得分:0)

反转整数并确定它是否是回文:

  1. 将整数转换为字符串。
  2. 使用反向功能反转字符串并将其连接。
  3. 检查是否有倒转号码=原始号码。

查看代码:

number = 1221

reverse = ''.join(reversed(str(number)))

print(reverse)

if (int(reverse) == number):
    print("number is Palindrome")
else:
    print("number is not Palindrome")

答案 11 :(得分:-2)

我试着自己出来。

def number():

    n = int(input("Enter a number: "))
    return n

def reverse(n):


    total = ""
    while n > 0:
        a = n % 10

        n//= 10


        total+= str(a)

    return total


def palindrome (n):

    total = 0
    while n > 0:
        a = n % 10

        n//= 10


        total+= a

    if total == n:
        x = "This number has a palindrome"

    else:
        x = ""

    return x

n = number()
print (reverse(n))
print (palindrome(n))

答案 12 :(得分:-2)

original = raw_input("Enter a no = ")   #original = number entered by user
rev = original[::-1]     #rev = reverse of original by useing scope resolution 
print 'rev of original no =',rev
if original == rev:
    print "no's are equal"
else:
    print "no's are not equal"