@MrBrainop
Начал изучать html, Python и QT Designer

Как исправить ошибка TypeError: 'in ' requires string as left operand, not tuple?

Вот код:
cmds = {
"hello": ('привет', 'хай'),
"whats": ('как дела', 'твои дела'),
"name":  ('твоё имя', 'как тебя зовут')
}

def makeSomething(task):
	if cmds["hello"] in task:
		say("Ну привет!")

	elif cmds["what"] in task:
		say("Как дела")

	elif cmds["name"] in task:
		say('Меня зовут **')


Вот логи:
Traceback (most recent call last):
  File "C:\Users\***\Desktop\Assistant\commands.py", line 56, in <module>
    makeSomething(command())
  File "C:\Users\***\Desktop\Assistant\commands.py", line 42, in makeSomething
    if cmds["hello"] in task:
TypeError: 'in <string>' requires string as left operand, not tuple


Из-за чего ошибка и как исправить?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 2
shabelski89
@shabelski89
engineer
Вы не показали главное, значение task.
Но тут и так ясно, что в task передается строка, а оператор IN работает со списками, кортежами, словарями...
заменить IN на == , ну это не учитывая остальных ошибок кода.
Ответ написан
SoreMix
@SoreMix
yellow
'in ' requires string as left operand, not tuple?

'in' требует строку в качестве левого операнда, не кортеж


Решение: использовать строку в качестве левого операнда, не кортеж.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Даня  , вероятно Вам нужно реализовать что-то вот такое:
cmds = {
"hello": ('привет', 'хай'),
"whats": ('как дела', 'твои дела'),
"name":  ('твоё имя', 'как тебя зовут')
}

def makeSomething(cmds, command):
    cmds: dict
    command: str

    if command in cmds:
        print(cmds[command])
    else:
        print("Упс :( Такая команда не найдена...")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 130 000 ₽
deeplay Новосибирск
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
26 окт. 2020, в 07:19
40000 руб./за проект
26 окт. 2020, в 03:15
100000 руб./за проект