def logic(*args):
action, what1, what2 = args
if action == "==":
if what1 == what2:
print("True")
return True
else:
print("False")
return False
elif action == "!=":
if what1 != what2:
print("True")
return True
else:
print("False")
return False
def wrt(*args):
print(*args)
return f'printed {args}'
def default_func(*args):
return f'Error {args}'
def make_args(*args):
key = ''
try:
if isinstance(args[0], list) or isinstance(args[0], tuple):
args = args[0]
elif isinstance(args[0], str):
args = args[0].split(' ')
key = args[0]
args = args[1:]
except IndexError:
print('Empty')
result = []
result.append(key)
for i in args:
result.append(i)
return tuple(result)
def call_func(*args):
if not args:
key = 'keyerror'
else:
args = make_args(args[0])
key = args[0]
if len(args)> 1:
args = args[1:]
try:
result = functions[key](*args)
except KeyError:
result = functions['keyerror'](key, *args)
return result
functions = {'logic': logic,
'wrt': wrt,
'keyerror': default_func}
questions = ['ttt fff aaa',
'wrt "hello, world!"',
'wrt hello',
'logic == 1 1',
'logic == a 1',
'logic != True False',
['wrt', 'hello list'],
['wrt', 1, 2, '\n', '!'],
['wrt', '1\n2', '\t!'],
()]
for question in questions:
print(f'{question}: {call_func(question)}\n')
код, который должен решать твою проблему, но не решает. Всё лишнее выкинуть, оставить минимум необходимого.
Желательно приводить также полный текст ошибки (если длинный, тоже под спойлер).
По тексту кода вижу несколько мелких косяков, например
Первый lemmatizer создаёт, очевидно, экземпляр класса WordNetLemmatizer
Но строка
lemmatizer = WordNetLemmatizer
во-первых тут же удаляет этот экзмепляр и во-вторых помещает в переменную lemmatizer ссылку на сам класс WordNetLemmatizer.Уверен, планировалось что-то другое. Возможно, надо убрать первую строку, а в строке
lemmatizer = WordNetLemmatizer()
добавить в конце круглые скобки, это, по-идее, поместит в переменную lemmatizer ссылку на экземпляр класса WordNetLemmatizer. Вероятно, именно это было целью всего этого безобразия.Затем,
words.append(word_list)
делает не совсем очевидную вещь:т.е. оно добавляет в список words несколько списков, которые были в words_list, но не добавляет в список слов слова из этих списков.
Возможно, тут надо было использовать метод .extend вместо .append?
Во всяком случае, мне кажется, что сейчас на вход words цикла
for word in words
попадают не список слов, а, вероятно, список списков слов.Поэтому при итерации по этому списку списков в word попадают не слова, как ожидается по названию и логике строки, а списки слов. Полагаю, .extend, о котором речь выше, исправит ситуацию.