Попытка проверить, является ли данная строка палиндромом по словам - PullRequest
0 голосов
/ 21 января 2020

Привет, я пытаюсь добиться этого результата. Я пытаюсь определить, является ли строка палиндромом, сравнивая первое и последнее слово, второе и второе последнее слово.

Король, ты рад, что король - это палиндром (или это результат, которого я пытаюсь достичь), так как 1-е слово похоже на последнее слово (которое является королем), второе слово похоже на второе последнее слово (которое есть), третье слово похоже на третье последнее слово (которое вы). следовательно, вывод должен быть верным. (это требование моего задания)

Вывод, который я пытаюсь достичь: [True, False] Вывод, который я получил: [False]

Ответы [ 3 ]

3 голосов
/ 21 января 2020

Вам нужно сделать split для сравнения по словам.

Кроме того, выньте ' ' из bad_character и исправьте некоторые отступы:

def palindrome_word(a_str):
    outputlist = []
    bad_character = ['?', ',']
    for element in a_str:
        for words in bad_character:
            element = element.replace(words, '')
        element = element.lower().split()
        outputlist.append(element == element[::-1])
    return outputlist

Или используя re:

import re

def palindrome_word_re(a_str):
    outputlist = []
    for element in a_str:
        element = element.lower()
        words = re.findall('\w+', element)
        outputlist.append(words == words[::-1])
    return outputlist

Оба выхода:

palindrome_word(my_string)
palindrome_word_re(my_string)

[True, False]
0 голосов
/ 21 января 2020

Другой подход -

def palindrome_word(a_str):
    import re
    outputlist = []
    for element in a_str:
        str_arr = re.findall('\w+', element.lower())
        is_palindrome = True
        for i in range(int(len(str_arr)/2)):
            if str_arr[i] != str_arr[-i-1]:
                is_palindrome = False
                break
        outputlist.append(is_palindrome)
    return outputlist

my_string=["King, are you glad you are king?", "Hello Bye"]
print(palindrome_word(my_string))

Вывод

[True, False]
0 голосов
/ 21 января 2020

Вот решение

def palindrome_word(a_str):
    outputlist = []
    bad_character = ['?', ',']
    for element in a_str:
        for words in bad_character:
            element = element.replace(words, '')
        element = element.lower()
        result = (element.split())[::-1] == element.split()
        outputlist.append(result)
    return outputlist

my_string=["King, are you glad you are king?", "Hello Bye"]
print(palindrome_word(my_string))

OUTOUT

[True, False]
...