Задать вопрос
  • TypeError: 'in ' requires string as left operand, not tuple; как исправить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    строка
    elif cmds["ctime"] in exersize:
    берет из словаря
    cmds = {
    "ctime": ('текущее время','сейчас времени', 'который час'),
    "radio": ('включи музыку', 'воспроизведи радио', 'включи радио'),
    "stupid1": ('расскажи анекдот', 'рассмещи меня', 'ты знаешь анекдот')
    }

    значение по ключу "ctime"
    Это значение представляет собой tuple (в круглых скобках - tuple), это не список, это именно tuple - кортеж. Это такая структура, она неизменная в отличие от списка.
    И получается, что строка
    elif cmds["ctime"] in exersize:
    пытается выяснить, присутствует ли кортеж в "exersize".
    Но метод in не умеет искать кортежи где-то, умеет только строки.
    Поэтому, видимо, надо брать кортеж, содержащий несколько отдельных строк, перебирать его элементы и каждый элемент искать в "exersize".
    Ответ написан