• Почему цикл if внутри цикла for который находится в цикле while не работает?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    С чего вы взяли что у вас там что-то не работает?
    Во-первых:
    Почему цикл if внутри цикла for который находится в цикле while не работает?

    if - это не цикл.
    Во-вторых, в ытам накосячили с отступами.
    В-третьих, в таком спагетти коде не мудрено наделать ошибок, а у вас еще и break встречается то и дело. Нарисуйте блок-схему вашего алгоритма, тогда станет понятнее. А сейчас этот код вообще не читаем, отчего просто бесполезен и должен быть удален и переписан заново.
    Попробуйте разбить весь этот код на функции. Функуии должны быть короткие, читабельные и "чистые" (то есть зависеть только от аргументов, а не от внешних и глобальных факторов)
    Ответ написан
    8 комментариев
  • Как получить все записи в отдельные столбцы с группировкой по ключу?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Транспонирование таблиц в SQL не предусмотрено в большинстве БД.
    Если набор параметров динамический, то так не получится, потому что не ясно сколько получится столбцов в итоге, а динамически их делать нельзя.
    Можно собрать JSON с атрибутами, но это тоже такое себе.
    Обычно такое транспонирование делают в коде на бэке, а не в SQL.
    Между тем вы не написали даже какая у вас БД и на чем делаете бэкенд.

    На постгресе оптимально было бы сделать джойн, группировку, а при агрегации собирать массив key-value, или JSON, тогда у вас будет два столбца: id, params. Второй столбец будет содержать json'ы.

    Ещё один способ можно применить при более-менее статичном наборе возможных параметров. Отдельным запросом получаете все возможные уникальные имена параметров в алфавитном порядке и в том же порядке джойните слева (left join) соответствующие значения. При агрегации вы просто собираете csv-строку с строковыми значениями параметров, а для тех параметров, которых нет, будет пустая строка или null.
    Можно собирать не строку с разделителями, а массив строк, или json-список.
    Ответ написан
  • Есть ли апи которые работают на подобии https://www.geonames.org/?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Полно таких сервисов. Вот от яндекса есть: https://yandex.ru/dev/maps/jsapi/doc/2.1/ref/refer...
    Ответ написан
    Комментировать
  • Какой есть легкий IDE для Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Смотрите в сторону VSCode. Он сильно легче по требуемым ресурсам, чем PyCharm,
    Еесть ещё встроенный Idle, но я бы не называл это громким словом IDE, хотя формально оно им является.
    Ответ написан
    Комментировать
  • Существуют ли API для получения строящихся объектов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    В OSM есть соответствующий тег: landuse=construction.
    Запрашивать объекты с таким тегом можно, например, через Overpass API.
    Но тут вопрос в качестве разметки OSM интересующей вас территории, а так же в актуальности этих данных. Разметка осуществляется волонтёрами комьюнити, поэтому никто не ручается относительно точности и актуальности данных.
    Можно ещё посмотреть в сторону кадастровых карт, но боюсь, что там тоже не всё так быстро обновляется. Однако API у них тоже есть. Тут я не специалист.
    Ответ написан
    5 комментариев
  • Как сделать запрос в sqlite?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    self.cursor.execute("SELECT * FROM table1 WHERE colum1 LIKE ?", (f'%{age}%',)).fetchmany(1)
    Ответ написан
    1 комментарий
  • Как хранить информацию о пользователях телеграмм бота?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Пользуйтесь MongoDB.
    Датакласс свой сериализуйте не пиклом, а в json и его уже прямо в монгу сохраняйте.
    Будет и быстро и просто.
    Ответ написан
  • Как понять где +, а где -?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Обычно плюс внутри. а минус снаружи, но бывают исключения. Посмотрите на блоке питания. обычно указано, но можно и проверить мультиметром.
    На плате можно определять полярность по электролитическим конденсаторам, но обычно видно как стоял разъём, редко его можно припаять двумя способами. Если можно, то ваших фотографий не достаточно.
    В любом случае, если вам не очевидно как определить полярность, то лучше не лезьте и отнесите в сервис. Бе опыта можно накосячить очень многими способами и помимо перепутывания полярности. А токи там приличные, и ноут спалите, и пожар можете устроить.
    Ответ написан
    Комментировать
  • Как выключить вывод на экран запросов к fastAPI серверу в python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Изменить конфигурацию логирования. Завести отдельный хендлер для логов FastAPI и направить его либо в отдельный файл с циклической ротацией, либо вообще в null.
    Чтобы ответить подробнее, нужно видеть структуру вашего проекта и конфиг логирования. А также понимать откуда конкретно эти логи эммитятся.
    Ответ написан
    Комментировать
  • Ошибки в json python?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Проще всего опробовать загрузить такой битый файл кабудто это yaml. Любой Json-файл будет валидным yaml-файлом, но у формата yaml гораздо более гибкий парсер, менее требовательный к синтаксису.
    wrong_json = '{"name":"Максимальная дальность","unit":cH,"value":"invalid_key"}'
    print(yaml.load(wrong_json, yaml.BaseLoader))

    Загрузит нормально, но нужно проверять на реальных данных, могут возникнуть неожиданные побочные эффекты.
    Ответ написан
  • Как расчитать какие пиксиле что попадают в линию градуса?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы хотя бы перечитайте эту мешанину опечаток без знаков препинания. Как вас вообще понять можно? Чего вы хотите? Вы бы хоть в пэинте нарисовали чего вам надо, или на бумажке и сфотографировали.
    Поток спутанного сознания какой-то.

    Тангенс. Прочитайте что такое тангенс.
    Ответ написан
    2 комментария
  • Вывод потока данных на новую строку каждую минуту?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вам следует пойти к фрилансерам с этой задачей, поскольку ваш вопрос - это задача, а не вопрос.
    Вы не предложили своих методов решения, не показали что именно у вас не получилось в самостоятельном решении, вы просто поставили задачу, а этот ресурс не для этого.
    Вы даже не показали своих неудачных попыток поиска решения своей задачи, чтобы вам указали где вы ошибаетесь. Вы просто пришли сюда за готовым ответом, а нужно сперва идти в поисковик.

    Теперь по существу.
    1. Вы можете воспользоваться API и документацией, где написано как такое делать.
    2. Вы можете писать температуру в CSV-файл, а потом загружать его в таблицу по необходимости. Этот вариант проще в реализации и его можно реализовать вне зависимости от гугл апи.
    3. Промежуточный вариант - обойтись без гугла, писать температуры в БД или в тот же CSV-файл, а по необходимости отдельным скриптом конвертировать данные помеая их на лист шаблонного excel-документа. Выгружать его в гугл-драйв можно также отдельным скриптом.
    Ответ написан
  • Как сделать так чтобы стейт отвечающий за регистрацию не зацикливался?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Во-первых, у вас второй обработчик состояния имеет то же имя, что и первый:
    @bot.on.message(state=SuperStates.CONFIDENT_STATE)  # StateRule(SuperStates.AWKWARD_STATE)
    async def awkward_handler(message: Message):

    Во-вторых, у вас код останавливается на этом состсоянии. Сделайте еще одно и переходите в него, там можете реагировать и на другие команды.
    Ответ написан
    Комментировать
  • Уникальный id запуска Django?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А где вы размещали этот код? Он выполняется дважды?
    Ваш проект весь в одном процессе стартует? Может быть поднимается несколько инстансов джанги.
    Если несколько инстансов, то такой идентификатор можно хранить только в БД, а перед стартом удалять его извне скриптом.
    Можете совсем перед запуском проекта вписаь в БД внешним скриптом новый UID и его же сохранить в переменных среды окружения процессов всех инстансов. Кстати, в таком случае и в БД можно не хранить тот уид. Просто перед запуском в баш-скрипте всем процессам переавать его и все.
    Ответ написан
  • Как узнать курс валюты в командной строке терминала?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Берёте любое API с курсами и получаете инфу, в чем проблема конкретно у вас?
    curl https://www.cbr-xml-daily.ru/daily_json.js | jq ".Valute.EUR.Name,.Valute.EUR.Value"
    Ответ написан
    Комментировать
  • Почему метод get не работает в цикле?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы предлагаете нам гадать тут на кофейной гуще?
    Никаких входных данных, по которым можно было бы судить о причине неработоспособности вашего кода вы не предоставили.
    Я могу перечислять возможные причины вечно!
    - может быть в index.html мало или нет данных
    - возможно вы неправильно ищете элементы в html
    - некорректно сформирована ссылка с пагинацией (кстати. почему не пользуетесь параметрами, а лепите в урл?)
    - сайт имеет защиту от скачивания тпым перебором чисел, может быть ему нужен еще какой-то формальный параметр
    - вы не находите куда сохраняется результирующие файлы из-за непонимания что такое текущий каталог
    - вы не дожидаетесь ваших 10 секундных таймаутов
    - вы не в тот каталог смотрите в поисках результатов
    - как-то не так запускаете и не видите ошибок, например с доступом.

    С учетом того, что вы даже сюда скопировали код как-то косо и косо подменили куски строк в коде на плейсхолдеры, может быть что угодно из перечисленного
    Ответ написан
    Комментировать
  • Как сохранить объект с кирилицей в файл формата JSON на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Спорим у вас винда?
    Прочитайте спецификацию функции open. В частности про параметр encoding.
    Когда записываете текст в виде байтов (а в файлах он именно так хранится), то нужно понимать какой кодировкой вы кодируете не ascii-символы.
    Вы явно не указываете кодировку, поэтому выбирается кодировка по умолчанию. Посмотреть что у вас там по умолчанию можно вот этой фунцией sys.getdefaultencoding()
    Именно в такой кодировке нужно открывать ваш файл на чтение, чтобы увидеть там русские буквы.
    В винде у вас скорее всего одна из двух кодировок там может быть. И она разная в зависимости от того в консоли вы запустили свою прогу, или в IDE. А ещё подстава - в винде по умолчанию однобайтовые кодировки, поэтому не все символы можно в них представить!
    С этим в линуксе гораpдо лучше. По умолчани везде utf-8.

    Вот, кстати, можете проверить что получится для понятности:
    > 'íåæèëîãî'.encode('latin1').decode('cp1251')
    'нежилого'
    Ответ написан
    1 комментарий
  • Почему не работает код?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Нет. не должен. Читайте что делает ваш код:
    if message.text == "А":  
            # сюда вы попадаете когда приходит сообщение. в тексте которого только "A"
            # Вы отправляете пользователю два текстовых сообщения:
            bot.send_message(message.chat.id, "Вы выбрали Зеленый")
            bot.send_message(message.chat.id, "Введите ставку в таком формате /stavka 123")
            # и тут же берёте строку, пришедшую в сообщении (а это буква "A", если вы забыли)
            # и пытаетесь заменить в этом однобуквенном тексте подстроку, которой там нет и не было:
            stavka = message.text.replace('/stavka', '').strip()
            # потом подвешиваете инерпретатор на 5 секунд:
            time.sleep(5)
            # и выводите букву "А" в терминал:
            print(stavka)

    Всё работает как написано.
    Ответ написан
  • Как поменять global на return в коде? Как сделать, чтобы все сообщения от пользователя из разных функций передавались в последнюю функцию?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Зачем у вас тег JIRA в этом вопросе, если вопрос никакого отношения не имеет к ней?
    Ваша проблема в том, что вы не знаете языка, на котором пытаетесь писать. Вернее даже не писать, а исправлять что-то уже написанное.

    global - это инструкция, которая объявляет переменную в функции глобальной на уровне модуля. return - это инструкция. позволяющая вернуть из вункции значение в точку вызова.
    Вы пишете бота, и функции, задекорированные как обработчики событий от библиотеки для работы с протоколом мессенджера, не вызываются вами в коде непосредственно. Нет никакого смысла, чтобы эти функции что-то возвращали. Там, где они вызываются в недрах библиотеки их результаты не будут никем востребованы.
    Здесь использованы глобальные переменные для сохранения результатов рботы хендлеров. По-хорошему нужно создать объектный контекст для этих хначений, сохранять отдельный контекст для каждой сессии общения бота с каждым человеком, но судя по вашему вопросу, вам всё это еще рано.

    Просто правильный ответ на ваш вопрос будет не понят, или придётся объяснять с самых азов, или решать за вас вашу проблему, чему противореит суть данного ресурса.
    Тут готовы помочь, что-то пояснить, ответить на конкретные вопросы, но не делать за кого-то чужую работу и не формировать индивидуальные курсы питона с нуля. С этим надо идти во фриланс.
    Ответ написан
    Комментировать
  • Не могу импортировать значение переменной from py in py?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    в этом модуле нет переменной "text", это локальная переменная внутри функции и в модуле не видна
    Ответ написан