Будет печатать только пустой список - PullRequest
0 голосов
/ 29 февраля 2020

Я перебираю файл .txt и пытаюсь найти в нем фразы палиндроми c, но когда я запускаю его, он печатает только пустой список.

file = open("dictionary.txt", "r")# Load digital dictionary as a list of words

def find_palingram():
    palingram_list = [] # Start an empty list to hold palingrams
    for word in file: # For word in list
        word = word.split()
        end = len(word) # Get length of word
        rev_word = word[::-1]
        if(end > 1):#If Length > 1
            for i in range(end): # Loop through the letters in the word
                """If reversed word fragment at front of word is in word list and letters after form a
                palindromic sequence"""
                if(word[i:] == rev_word[:end-i] and rev_word[end-i:] in file):
                    palingram_list.append(word, rev_word[end-i:])#Append word and reversed word to palingram list
                """If reversed word fragment at end of word is in word list and letters
                before form a palindromic sequence"""
                if(word[:i] == rev_word[end-i:] and rev_word[:end-i] in file):
                    palingram_list.append(rev_word[:end-i], word) # Append reversed word and word to palingram list
    return palingram_list
    file.close()
# Sort palingram list alphabetically
palingram = find_palingram()
palingram_sorted = sorted(palingram)
print(palingram_sorted)
print(file.read())

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Проверить, является ли слово палиндромом, действительно просто:

word[::-1] == word

или, если ваше определение палиндрома включено, скажем, Eve:

word_lower = word.lower()
word_lower[::-1] == word_lower 

Итак, вы Программа может быть уменьшена до:

def find_palindroms(text):
    palindrom_list = []
    for line in text:
        for word in line.rstrip().split():
            word_lower = word.lower() # might be unnecessary
            if word_lower[::-1] == word_lower:
                palindrom_list.append(word)
    return palindrom_list 

with open("dictionary.txt", "r") as file:
    print(find_palindroms(file))
0 голосов
/ 29 февраля 2020

Вы должны передать файл между функцией. Также file.close () закроет файл и никогда не будет выполняться, так как он находится в функции.

...