Не получается определить палиндром
Есть код, в котором реализована функция, выясняющая, является ли слово палиндромом
def polindrom(str):
f=0
k = len(str)
i = 0
for i in range(len(str)):
if(str[i] != str[k - 1]):
f = 1
--k
return f
word1 = input("Введите первое слово: ")
word2 = input("Введите второе слово: ")
word3 = input("Введите третье слово: ")
print(polindrom(word1))
if(polindrom(word1)):
print("Первое слово является палиндромом")
else:
print("Первое слово не является палиндромом")
if(polindrom(word2)):
print("Второе слово является палиндромом")
else:
print("Второе слово не является палиндромом")
if(polindrom(word3)):
print("Третье слово является палиндромом")
else:
print("Третье слово не является палиндромом")
Но, почему-то, на выводе всегда выводит "не является палиндромом" для каждого слова, кроме пробела. Помогите, пожалуйста, найти ошибку
Ответы (2 шт):
Автор решения: Сергей Солдатов
→ Ссылка
Если входные данные не большого размера то можно делать след. образом
def is_palindrom(x: list):
return x == x[::-1]
Автор решения: TRAKTOR
→ Ссылка
В Python, кроме индексов, существуют ещё и срезы.
item[START:STOP:STEP] - берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1. Соответственно, какие-нибудь (а возможно, и все) параметры могут быть опущены.
>>>
>>> a = [1, 3, 8, 7]
>>> a[:]
[1, 3, 8, 7]
>>> a[1:]
[3, 8, 7]
>>> a[:3]
[1, 3, 8]
>>> a[::2]
[1, 8]
Также все эти параметры могут быть и отрицательными:
>>> a = [1, 3, 8, 7]
>>> a[::-1]
[7, 8, 3, 1]
>>> a[:-2]
[1, 3]
>>> a[-2::-1]
[8, 3, 1]
>>> a[1:4:-1]
[]