Что делает 9-ая строка, где "elif s[:i] + s[i + 1:] == (s[:i] + s[i + 1:])[::-1]:"? Подробно пожалуйста
s = input()
i = 0
j = len(s) - 1
while i < j and s[i] == s[j]:
i += 1 # Поиск двух различных символов i и j, равноудалённых от концов строки
j -= 1
if i >= j:
print("строка – уже палиндром") # дело в шляпе
elif s[:i] + s[i + 1:] == (s[:i] + s[i + 1:])[::-1]:
print(i + 1) # можно удалить символ i
elif s[:j] + s[j + 1:] == (s[:j] + s[j + 1:])[::-1]:
print("это j")
print(j + 1) # можно удалить символ j
else:
print(0) # а из него уже ничего не получиться(
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Смотрите, в этой строке s[:i] + s[i + 1:] == (s[:i] + s[i + 1:])[::-1] есть один повторяющийся код s[:i] + s[i + 1:] и срез [::-1].
s[:i] + s[i + 1:] это два среза строки с игнорированием символа, имеющего индекс i (s[:i] вернет строку, не включая индекс i, а с s[i + 1:] и так понятно), для наглядности:
s = '12345'
i = 2
print(s[:i] + s[i + 1:])
# 1245
А вот срез [::-1] используется только для возврата строки в обратном порядке:
s = '12345'
print(s[::-1])
# 54321