Меня попросили написать функцию generate_palindrome(), которая принимает заданное положительное целое число n и применяет к нему следующую процедуру:
(i) Проверьте, является ли число палиндромом. Если это так, верните его, в противном случае перейдите к следующему шагу.
(ii) Переверните число и вычислите сумму исходного числа с перевернутым числом.
(iii) Повторяйте с (i) (пока не будет найден палиндром).
Я написал эту функцию:
def generate_palindrome(n):
numbers = list(str(n))
for i in range(len(numbers)):
if numbers[i] == numbers[-i-1]:
return n
else:
while numbers[i] != numbers[-i-1]:
rev = list(reversed(numbers))
rev_num = int(''.join(rev))
n = n + rev_num
return n
Я не знаю, по какой причине, когда я пробую случайное число, которое еще не является палиндромом, код не отвечает, он все еще работает до неопределенного времени. Я попытался изменить его с помощью кода if
, но он не повторяет мою функцию, поэтому я думаю, что мой единственный шанс - с кодом while
, но, возможно, я ошибаюсь. Что вы думаете?