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

YXH*_*YXH 15 python string program-entry-point function list

使用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
Run Code Online (Sandbox Code Playgroud)

我写的有些麻烦def main.

Pet*_*ull 49

def palindrome(num):
    return str(num) == str(num)[::-1]
Run Code Online (Sandbox Code Playgroud)

  • @KeonKim我不认为负数可以被视为回文 (7认同)
  • 如果是负数怎么办? (4认同)

ped*_*rio 16

整数不具有len().

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

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

def reverse(num):
  rev = 0
  while num > 0:
    rev = (10*rev) + num%10
    num //= 10
  return rev
Run Code Online (Sandbox Code Playgroud)

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

def reverse(num):
  return int(str(num)[::-1])
Run Code Online (Sandbox Code Playgroud)

  • @pedrosorio,我想我的目标是反向(1230)==反向(123),因为两者都返回321.但这是每个方法都会出现的问题.所以我指出的缺点并不是很相关. (3认同)
  • 您的第一种方法值得+1,但指出如果数字以0结尾的数字是不可取的,这可能会很有用。例如1230为321。但是对于像Euler这样的项目寻找素数回文,这种方法很好用。 (2认同)