19

使用 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

4

13 回答 13

56
def palindrome(num):
    return str(num) == str(num)[::-1]
于 2012-10-24T23:51:07.630 回答
20

整数没有 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])
于 2012-10-24T23:55:07.977 回答
1

这是一种不可读的单行递归实现,部分基于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 结尾的非零整数无论如何都不能是回文。

还要注意,整数的完全反转当然可能不是确定它是否是回文所必需的。如果确定该数字不是回文,则可以实施反转以便提前中止。

于 2016-07-13T20:55:17.430 回答
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
于 2017-06-30T07:07:48.527 回答
1
def revers(num):
    rev = 0
    while num > 0:
        rem = num % 10
        rev = (rev * 10) + rem
        num = num // 10
    return rev  
于 2018-01-12T06:26:43.953 回答
0

我为这个程序使用了一个列表,也适用于字符串。

print('Enter Something')
a = list(input())
for i in range ((len(a)),0,-1):
   print (a[i-1],end='')
于 2016-01-18T00:27:46.110 回答
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 ":("
于 2016-02-13T19:45:25.793 回答
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
于 2018-04-16T20:55:23.120 回答
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
于 2019-03-05T20:47:14.090 回答
0

这是我的解决方案。

z=input('input number')
if int(z) == int(str(z)[::-1]):
    print('The number is palindrome')
else:
    print('The number is not palindrome')
于 2019-11-16T20:25:46.990 回答
0

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

  1. 将整数转换为字符串。
  2. 使用 reverse 函数反转字符串并加入它。
  3. 使用 if else 条件检查反转号码是否 = 原始号码。

见代码:

number = 1221

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

print(reverse)

if (int(reverse) == number):
    print("number is Palindrome")
else:
    print("number is not Palindrome")
于 2020-08-05T08:31:11.520 回答
-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))
于 2015-01-02T00:45:29.903 回答
-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"
于 2016-04-14T07:39:20.823 回答