2015-02-27 4 views
-2

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

listtest = "listtest.txt" 

def opentestfile(listtest): 
    testlist = open(listtest,'r') 
    line = [line.strip() for line in open(listtest)] 
    print(line) 
    testlist.close 
    return testlist 

opentestfile(listtest) 

userinput2 = input("What word would you like to check? ") 
if userinput2 in opentestfile(listtest): 
    print("word is in file") 
else: 
    print("word is not in file") 
+0

Что специфика вашей "проблемы"? Это исключение? Или неожиданное поведение? –

ответ

1

Вместо этого вы должны вернуть line. Это список, который вы должны использовать.

def ...: 
    return line 

вместо

return testlist 
+0

получил, спасибо! –

1

Хорошая попытка. Однако вы допустили несколько ошибок.

  1. strip() используется для удаления некоторых символов из строки (пустой по умолчанию). Правильной функцией для разделения строки на слова является split().

  2. line = [line.split() для строки в открытом (listtest)] предоставит вам список списков, который не является поведением, которое вы хотите.

  3. Ваша функция opentestfile() возвращает указатель файла, а не список, который вы хотите.

Так немного измененная версия будет:

listtest = "listtest.txt" 

def opentestfile(listtest): 
    testlist = open(listtest,'r') 
    list = [] 
    for line in testlist: 
     list += line.split() 
    #print(line) You don't need this. 
    testlist.close() 
    return list 

userinput2 = input("What word would you like to check? ") 
if userinput2 in opentestfile(listtest): 
    print("word is in file") 
else: 
    print("word is not in file") 
Смежные вопросы