Ответ 1
def palindrome(num):
return str(num) == str(num)[::-1]
Используя 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
.
def palindrome(num):
return str(num) == str(num)[::-1]
Целочисленные числа не имеют 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])
Это нечитаемая однострочная рекурсивная реализация, частично основанная на ответе 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, не может быть палиндром в любом случае.
Обратите также внимание, что полное разворот целого числа, разумеется, не обязательно для определения, является ли это палиндром. Реверсирование может быть реализовано таким образом, чтобы быть прерванным раньше, если число определено как не палиндром.
Длинные, но читаемые:
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
Я использовал список для этой программы, также работает со строками.
print('Enter Something')
a = list(input())
for i in range ((len(a)),0,-1):
print (a[i-1],end='')
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 ":("
def revers(num):
rev = 0
while(num > 0):
rem = num %10
rev = (rev *10) + rem
num = num //10
return num
Я пытаюсь сам это сделать.
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))
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"