Member 14842958 Ответов: 2

Как я могу изменить этот код, чтобы он мог проверять палиндром как для целого числа, так и для строки?


Я написал код, который выдает выходные данные для строкового ввода, но не для целочисленного ввода.

Что я уже пробовал:

def check_palindrome(string):
    length = len(string)
    first = 0 #first character
    last = length -1 #last character
    status = 1
    while(first<last):
           if(string[first]==string[last]): #checking if the increment and decrement
                                            #of the first and last characters results in equal character
               first=first+1 #incrementing first character by 1
               last=last-1 # decrementing last character by 1
           else:
               status = 0
               break
    return int(status) #true or false
string = input("Enter the string: ")

status= check_palindrome(string)
if(status):
    print("It is a palindrome ")
else:
    print("Not a palindrome")

2 Ответов

Рейтинг:
20

phil.o

Просто преобразуйте целое число в его строковое представление, прежде чем передавать его в вашу функцию. Палиндромы всегда связаны со строками.

result = check_palindrome(str(intValue))


Member 14842958

Он не работает, когда я тестирую с 123454321 и 78493.

phil.o

Затем отладьте свой код, чтобы увидеть, где находится проблема.
Отладчик python

Я не понимаю почему ты не возвращаешься True или False от вашей функции. Python имеет логический тип, так почему бы не использовать его?

status = True  # instead of status = 1
status = False # instead of status = 0
return status  # instead of return (int)status

Member 14842958

потому что это жесткое кодирование. Не так ли?

phil.o

Нет, потому что нет очевидной причины не использовать логический тип, когда он действительно существует :)

Рейтинг:
2

OriginalGriff

Два пути:
1) напишите отдельный метод, который принимает целочисленный параметр и проверяет целые числа палиндрома, преобразуя его в строку и передавая строку существующему методу. Быстро и грязно, чертовски неэффективно, но эй! Это работает.
2) Напишите отдельный метод, который принимает целочисленный параметр и делает то же самое, что и ваш существующий метод, но извлекает каждую цифру с помощью BitwiseOperators - Python Wiki[^] - И сдвиг должен это сделать.