1.Нумерация в структурах данных (списки, кортежи, сеты) начинается с нуля. Поэтому номер последнего элемента всегда на единицу меньше количества элементов. Собственно, условие меньше или равно не верно (c точки зрения языка). while k <= column_K or n <= rows_N:
2.почему or? Оба значения изменяются одновременно, но при этом количество строк/столбцов не обязано быть одинаковым.
Потому-что input работает не так. Вопрос: Как он работает? Ответ: Находите книгу Изучаем Python Марка Лутца (5-е издание, в двух томах)* и читаете. Со временем вы дойдете до раздела в котором будет ответ. Без нормального учебника вы, скорее всего будете и дальше совершать подобные ошибки.
* - Либо любой другой структурированный материал
Выводится только последний потому-что out пересоздается каждою итерацию а отправка сообщения происходит после завершения цикла. Варианта, глобально, два:
отправлять сообщение "построчно", каждую итерацию.
Переписать код так, чтобы значение out дополнялось а не пересоздавалось.
Если нужна просто веб-морда, то лучше flask для обработки запросов и celery для того, чтобы запускать указанный скрипт в фоне. Второе нужно, чтобы не ловить "timeout error" если указанный скрипт задумался.
Касательно первого вопроса намекну - внимательнее посмотрите на тип ключей в словаре и тип X с помощью которого вы пытаетесь получить значение из словаря.
Касательно второго вопроса - я не очень понимаю, зачем плодить сущности. Как минимум в текущем случае куда разумнее удалить функцию и выполнять кусок кода из нее прямо в цикле.
С помощью соответствующего модуля для работы с json и методов работы со структурами данных.
P.S. Примеры приводить не буду, но если приведете свои попытки - могу подсказать что не так.
Может я не понимаю задумки, но в чем проблема отправить сообщение для каждого юзера отдельно?
И да, судя по тому, что вы добавляете синхронную функцию в асинхронного бота, притом функцию которая фактически блокирует выполнение кода, вам бы основы подтянуть - до ботов вам еще далеко.
1.Зачем вы два раза запрашиваете ввод числа? Просто сделайте бесконечный цикл а для выхода используйте проверку на соответствие данных.
2.Проверку ввода можно свести к двум вариантам:
а. Введенное число удовлетворяет требованием.
б. Оно не удовлетворяет
Для проверки можно использовать два подхода: конструкция match case и оператор in.
Хотя, на мой взгляд, вариант с match тут чуть более уместен с точки зрения семантики.
3.Зачем вы вводите название "жестов" и потом добавляете "прослойку" для сравнения чисел? Эти названия все-равно нигде не фигурируют, не лучше ли сравнивать сразу цифры?
По поводу остального уже ответили.