Вот обновленная версия из моего предыдущего вопроса here. Я добавляю в код, где, если имя get_close_matches не является именем человека, которого они хотели, отбросьте ближайшее совпадение и заново запустите функцию и возьмите второе ближайшее совпадение (теперь во-первых, поскольку функция будет бросать из первого матча).difflib.get_close_matches выкидывают имена в списке, если первый ответ неверен
Есть ли у вас какие-либо комментарии о том, как это можно написать лучше? И работа. .>>
Вот что я до сих пор:
def throwout(pickedName):
employeeNames.remove(pickedName)
pickedName = difflib.get_close_matches(userEmpName, employeeNames, 1)
print(pickedName)
userNameOK = input("Is this the name of the person you're looking for?\n\n Type 'Y' or 'N'.\n\n")
employeeNames = ['Colton','Jayne','Barb','Carlene','Dick','Despina']
employeeNames.sort()
userEmpName = input("Please enter the employee name you're searching for. We'll return the best match on record.")
pickedName = difflib.get_close_matches(userEmpName, employeeNames, 1)
print(pickedName)
userNameOK = input("Is this the name of the person you're looking for?\n\n Type 'Y' or 'N'.\n\n")
if userNameOK == "N" or "n":
if pickedName in employeeNames:
throwout(pickedName)
else:
break
else:
break
Ошибка для запуска из имен в списке:
Traceback (most recent call last):
File "C:/Python33/employee1.py", line 64, in <module>
print(userAnswer + " is the right choice.\n")
NameError: global name 'userAnswer' is not defined
Я понимаю, что означает, что, поскольку список имен имеет больше нет имен от их удаления, тогда глобальная переменная «userAnswer» не определена.
С небольшим количеством фальсификации для моего редактора IDLE я получил его, чтобы он работал неплохо. Как бы выглядела функция (иначе, чем та, которую я положил)? И наконец; как вы собираетесь поддерживать список удаления? Не похоже, что это будет очень полезно для этой конкретной программы, поскольку она не предназначена для повторного запуска, если выбранное имя не является именем, которое пользователь хочет. Спасибо за помощь, тоже. Это очень ценится. – user3259628
Вы можете создать функцию, позволяющую сказать 'nameLookUp (employeeNames)' и добавить весь код после строки 'employeeNames.sort()' к нему ..... аргумент функции является списком 'employeeNames' – adil
Да вы правы для этой программы, это не полезно, но я просто думал, что если это всего лишь часть более крупного проекта, где список может понадобиться снова. Для этого вы создаете копию и передаете ее функции 'nameLookUp()' ....... 'newList = oldList [:]' это то, как вы копируете список. – adil