2014-02-01 1 views
0

Основной смысл программы - начать со списка имен сотрудников, а затем отсортировать их. Подождите, пока пользователь введет «конец», чтобы прекратить заполнять список имен (у меня есть 100 имен, я сократил это для примера). Впоследствии пользователь может ввести имя сотрудника, и программа запустит difflib.get_close_matches().difflib.get_close_matches() - Получение желаемого результата

Возникает вопрос; Я получаю синтаксическую ошибку для get_close_matches. Как я должен вводить difflib по-другому? Также; если у вас есть советы по повышению эффективности кода, пожалуйста, укажите, как и почему он более эффективен. Я довольно неопытен с Python, так что будьте осторожны, а?

Пример кода:

import difflib 
employeeNames = ['Colton','Jayne','Barb','Carlene','Dick','Despina'] 
employeeNames.sort() 
endInput = input('Type "end" to view list of names.\n\n') 
if endInput == "end": 
    userEmpName = input("Please enter the employee name you're searching for. We'll return the best match on record." 
get_close_matches(userEmpName, employeeNames, 1) 
+0

также добавление полной трассы было бы намного лучше. – Lafexlos

+0

@Lafexlos: Я готов это сделать, если вы дадите мне информацию о том, как это сделать. >.> ' – user3259628

+0

добавьте полную ошибку, которую вы получите. какая строка, какая функция и т. д. – Lafexlos

ответ

0

Ваш код имеет синтаксические ошибки: Match этот код с вашими:

import difflib 
employeeNames = ['Colton','Jayne','Barb','Carlene','Dick','Despina'] 
employeeNames.sort() 
endInput = raw_input('Type "end" to view list of names.\n\n') 
if endInput == "end": 
    userEmpName = raw_input("Please enter the employee name you're searching for. We'll return the best match on record.") 
    print difflib.get_close_matches(userEmpName, employeeNames, 1) 
  1. вы не закрыли открытую скобку в input() методом.

  2. Предлагаю использовать raw_input() вместо input(), имея дело со строками.

  3. вы должны использовать classname.method(), если вы импортировали только класс (в вашем случае import difflib), поэтому вместо этого используйте difflib.get_close_matches(string,list,n).

  4. Вы должны использовать оператор print перед возвращенным значением.

Также get_close_matches() должна быть вызвана внутри if, потому что если endInput!='end' тогда NameError будет происходить за userEmpName.

EDIT:

Я должен был спросить вас о вашем питона переводчика версии.
Печатная линия должна использовать такие фигурные скобки.


print(difflib.get_close_matches(userEmpName, employeeNames, 1))

Причина заключается в python 2.x печати является statement (как я уже говорил в 4rth точки), но в python 3.x св function.

+0

Я попытался запустить ваш код, я получаю то же сообщение об ошибке, что и в моем; недействительный синтаксис. Он выделяет «difflib» после печати. Также; Спасибо за совет. Я постараюсь включить это как могу. :) – user3259628

+0

Я не знаю, почему вы получаете ошибку в своей системе .... см. Мои правки для моего вывода – adil

+0

Я ухожу от своего компьютера, пока не вернусь с работы, но я снова запустил его, когда вернусь домой и дам вам знать результат. – user3259628

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

  • Нет связанных вопросов^_^