Используя Python, переверните целое число и сообщите, если палиндром

Используя 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.

Ответ 1

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

Ответ 2

Целочисленные числа не имеют len().

Тестирование, если число является палиндром, так же просто, как и тестирование, если число равно его обратному (хотя, если вы хотите максимальной эффективности, вы можете просто сравнивать символы с обоих концов строки, пока не достигнете середины).

Чтобы найти обратное целое число, вы можете сделать это сложным способом (используя mod% и integer division//, чтобы найти каждую цифру и построить обратный номер):

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])

Ответ 3

Это нечитаемая однострочная рекурсивная реализация, частично основанная на ответе 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, не может быть палиндром в любом случае.

Обратите также внимание, что полное разворот целого числа, разумеется, не обязательно для определения, является ли это палиндром. Реверсирование может быть реализовано таким образом, чтобы быть прерванным раньше, если число определено как не палиндром.

Ответ 4

Длинные, но читаемые:

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

Ответ 5

Я использовал список для этой программы, также работает со строками.

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

Ответ 6

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

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

  return num

Ответ 8

Я пытаюсь сам это сделать.

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))

Ответ 9

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 are equal"
else:
    print "no are not equal"