2014-05-28 5 views
0

Я пытаюсь взять текстовый файл, преобразовать его в список и запросить у пользователя длину слова. Моя функция должна печатать все палиндромы в текстовом файле. Мой вывод - это просто пустой список. Любые указатели?Тестовый текстовый файл для palindromes

def main(): 
size = int(input('Enter word size:') 
printPal(size) 

def readFile(): 
L = open('scrabble_wordlist.txt', 'r') 
words = L.read() 
L.close() 
while ' ' in words: 
    words.remove(' ') 
wordlist = words.split() 
return(wordlist) 

def printPal(size): 
L = readFile() 
results = [] 
for word in L: 
    if isPal(word) and len(word) == size: 
     results.append(word) 
return(results) 

def isPal(word): 
return word == reversed(word) 

ответ

1

Вы можете сделать это:

size = int(input('Enter word size:')) # Use raw_input('..') on Python 2!!! 

pals=[] 
with open('/usr/share/dict/words', 'r') as f: 
    for word in f: 
     word=word.strip()       #remove CR and whitespace 
     if len(word)==size and word==word[::-1]: #str[::-1] reverses a string 
      pals.append(word)      # save the palidrome 

print(pals) 

Что можно свести к одной строке, если вы хотите:

print([word for word in (line.strip() for line in open(file_name, 'r')) 
       if len(word)==size and word==word[::-1]]) 
0

Превратить строку в списке символов не использует split() Вместо:

wordlist = list(words) 
0

Что заставляет вас думать, что ваш результат - пустой список? Вы игнорируете вывод printPal, не сохраняя его (или распечатывая его или что-то еще). Попробуйте изменить main к

def main(): 
    size = int(input('Enter word size:')) 
    results = printPal(size) 
    print results 

И убедитесь, что вы размещаете точный код в будущем. У вас не было закрывающей круглой скобки на одной из вышеперечисленных строк, и у вас нет звонка на main.

Смежные вопросы