Наименьший палиндром, больший данного числа

Требуется написать программу на Python-3, принимающую на входе целое число и выводящую наименьшее целое число, являющееся десятичным палиндромом и превышающее полученное на входе число. Например, если на входе получено число 310610407, программа выдаст: 310616013.

Я вначале написал с ошибкой:

k=int(input())
while(str(k)!=str(k)[::-1]):
    k+=1
print(k)

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

Можно поправить положение следующим образом:

k=int(input())
if str(k)==str(k)[::-1]:
    k+=1
while(str(k)!=str(k)[::-1]):
    k+=1
print(k)

Но нет ли более элегантного способа, чтобы не добавлять «‎if»?

Кстати, а как быть с отрицательными числами? По идее, если на входе получено, например, -310610407, программа должна выдать не -310616013, а -310606013. Как вообще работать с минусом? Программа воспринимает его как элемент строки, то есть, с точки зрения программы, если прочесть, скажем, число -310610407 справа налево, получится 704016013-. Как исправить сложившуюся ситуацию?

Пожалуйста, помогите разобраться. Заранее благодарю за помощь.


Ответы (0 шт):