Наименьший палиндром, больший данного числа
Требуется написать программу на 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-. Как исправить сложившуюся ситуацию?
Пожалуйста, помогите разобраться. Заранее благодарю за помощь.