Задать вопрос
  • Pyrogram bot: как отправить фото по айди?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Полагаю, в лоб никак. В документации Telegram сказано, что big_file_idможно использовать только для download.
    В общем, видимо, вам придется их куда-то скачивать (в память?) и затем отдавать в другой чат.
    Ответ написан
    3 комментария
  • Ошибка в коде (Python). Не пойму в чем дело и почему он не пропускает?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В классе Settings два __init__
    Естественно, второй перезаписывает первый.
    Ответ написан
    1 комментарий
  • Как пройтись по 2 спискам одновременно?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ну если в лоб, можно проверку на extension сделать внутри цикла по directories.
    Если их не безумное количество и нет необходимости сэкономить микросекунды на каждом цикле, то пойдёт.
    Ответ написан
  • Автоматическая сортировка столбца в Excel?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Сам вот именно такого не делал, но в принципе довольно просто:
    Делаешь исходную таблицу с формулами, а итоговую с фиксированными отсортированными значениями колонки, а остальные значения в других колонках итоговой подтягивай из исходной таблицы по отсортированной колонке ну хотя бы впр, или поискпоз/индекс, или суммпроизв.
    Ответ написан
    Комментировать
  • Есть какие-нибудь способы оптимизации бота?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Есть такие способы. И методы.
    Ответ написан
    2 комментария
  • Ошибка str не могу исправить, как ее исправить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Какая-то из переменных price, name, url приходит из парсера со значением None. Чтобы ошибки не было, надо предварительно проверять каждую переменную на None, либо перехватывать ошибку и обрабатывать (так прямее).
    Ответ написан
    Комментировать
  • Бот не считает формулу. Как исправить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Как я понял, когда бот начинает работать, он обрабатывает зарегистрированные в нем хэндлеры, и ваш хэндлер lake перехватывает всё, кроме явно start и help, поэтому дальше него и не проходит. Я глубоко не вникал, возможно этот момент я неправильно понял.
    Но, в принципе, можно обойтись и этим одним хндлером, просто правильно обрабатывать то, что в него приходит. А приходить в него должно либо выбор кнопки, либо число.
    При выборе кнопки фиксируем номер кнопки и ждем число. Если пришло число - вычисляем, возвращаем, сбрасываем номер кнопки и всё сначала.

    lake_number = 0
    
    
    @dp.message_handler()
    async def lake(message: types.Message):
        global lake_number
        if message.text == 'Бассейн №1':
            await bot.send_message(message.from_user.id, 'Введи расстояние до воды №1.')
            lake_number = 1
        if message.text == 'Бассейн №2':
            await bot.send_message(message.from_user.id, 'Введи расстояние до воды №2.')
            lake_number = 2
        if bool(lake_number) and message.text.isdigit():
            b = int(message.text)
            if lake_number == 1:
                h = 8 - b
                v = (h / 3)
                level = v / 16000 * 100  # тут в формуле где-то ошибка, поэтому я ее просто убрал
                await bot.send_message(message.from_user.id,
                                       str("Количество:" + str(v) + "м3. Глубина:" + str(h) + "м. Наполнение: " + str(
                                           level) + "%"))
            if lake_number == 2:
                h2 = 5 - ((b - 1) * float(0.7))
                s2 = (90 - (b * 0.52)) * (100 - (b * 0.52)) / 2
                n = sqrt(2500 * s2)
                s1 = 1
                g = s1 + n + s2
                v2 = (h2 / 3) * g
                level2 = v2 / 17000 * 100
                await bot.send_message(message.from_user.id,
                                       str("Количество:" + str(v2) + "м3. Глубина:" + str(h2) +
                                           "м. Наполнение: " + str(level2) + "%"))
            lake_number = 0
            await bot.send_message(message.from_user.id, "Попробуй еще...")
    Ответ написан
    4 комментария
  • Как правильно оформить sql-запрос чтобы он был читаемый?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Тело with в скобках я бы сдвинул на таб вправо, и странные запятые в начале строк убрал бы взад.
    Также inner join вправо на таб вместе с on- потому что оно вместе с первой таблицей является подуровнем from.
    Но вообще это вкусовщина, и если требований не зафиксировано где-нибудь в ВНД, то хоть в одну строчку пиши всё...
    Как-то
    так
    with sum_bon as
    (
        select 
            worker_ref_id, 
            employee_title, 
            sex, 
            sum(bonus) as sbon 
        from 
            sf_employee as sfe
            inner join sf_bonus as sfb
            on sfe.id=sfb.worker_ref_id
        group by 
            employee_title, 
            sex, 
            worker_ref_id
    )
    
    select 
        sum_bon.employee_title, 
        sum_bon.sex, 
        avg(sfe.salary+sbon) compensation 
    from 
        sf_employee as sfe
        inner join sum_bon
        on sfe.id=sum_bon.worker_ref_id
    group by 
        sum_bon.employee_title,
        sum_bon.sex
    Ответ написан
    Комментировать
  • Возможно ли работать в консоли через iPad?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    syslinux, найдите кого-то с ipad и попробуйте с его ipad порешать пару задач своих. Только так и поймете, как вам дальше поступать.
    Лично я бы под задачи, не дающие нагрузки на проц, взял бы Macbook Air. Легкий, удобный, понятный, и нет ipad-овских планшетных ограничений.
    Но надо понимать - если вы начнете его нагружать, он превратится в печку.
    Ответ написан
  • Как записывать информацию в CSV каждый раз с новой строки?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Добавьте в конец строки \n

    Снова и снова говорю вам: найдите и проработайте «Изучаем Python». Там всё разжёвано.
    Ответ написан
    Комментировать
  • Как правильно добавить индекс?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    images = ['a', 'b', 'c']
    for c in "educative":
        print(f'perehodim_k_sled_bukve {c}')
        for number, image in enumerate(images):
            print(f'буква {c} цикл {number} image {image}')
    Ответ написан
    Комментировать
  • Почему не открывается вторая крышка корпуса?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    когда я работал эникеем, такие случаи попадались нередко.
    Торопиться ковырять отверткой не надо.

    Сначала надо снять переднюю крышку (морду) и убедиться, что там нет каких-то винтов и защелок.
    Морда может и сама держать эту крышку (встречались и такие варианты).

    Потом глазами изучить со стороны морды, как крышка снимается.

    Да, перед силовыми упражнениями лучше удалить из корпуса тяжелые детали (видеоплату, радиатор процессора), иначе можно резким движением сорвать их. Также и жесткие диски.

    Если крышка сдвижная и просто туго сидит, то лечилось так: системник клали себе на колени крышкой вверх лицом вправо, и ладонью и запястьем правой руки совершали сильные скользящие удары по сдвижной крышке в районе зацепов, направлением влево, в сторону открывания. Это был самый эффективный и быстрый способ.

    У некоторых корпусов крышка не просто сдвигалась, а сначала верх ее надо было на 5 градусов отклонить, потом низ выходил из паза.
    Ответ написан
    5 комментариев
  • Pytelegrambotapi name 'a' is not defined, почему?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Потому что в глобал оно не объявлено.
    Ответ написан
  • В чём ошибка в моей реализации «снегопада»?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Да… короче, надо не для каждой снежинки вызывать
    start_drawing()
    …
    finish_drawing()

    а для каждого нового экрана. Т.е. начал рисовать, поменял для всех снежинок координаты, потом все их перерисовал и потом закончил рисовать экран. Он автоматом заменил предыдущий.
    Ответ написан
    Комментировать
  • Почему python не понимает selenium?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    попробуйте так:
    by = 'XPATH'
    value = '//*[@id="sf_url"]'
    video_input = browser.find_element(by=by, value=value)

    Для последней версии selenium оно вроде так работает.
    Ответ написан
  • Как удалить все строки в которых менее 6 символов?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    ^.{1,6}:.+$
    в меню searchвыбираете replace, там выбираете regular expression, вставляете в строку поиска find what приведенный выше regex, жмете replace all, строки очищаются.
    Затем идете в меню edit/line operations и выбираете remove empty lines.
    Ответ написан
    4 комментария
  • Как построить график по массиву с данными?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Мне кажется, вы плохо искали. Первое, что попалось в гугле, по-моему, вполне подходит.
    Ответ написан
    Комментировать
  • Как найти следующую строчку в mysql?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Смотрите оператор CASE.
    Ответ написан
    Комментировать
  • Можно ли прочитать сразу все элементы в json?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В общем, Влад Григорьев прав.
    Надо хотя бы читать документацию по тем библиотекам, которые вы подключаете, и методам, которые используете.

    json это в некотором роде аналог словаря в Python, и json.loads возвращает словарь. Сам словарь это ключи и значения ключей. Могут быть вложенные в значения другие структуры.
    Соответственно, чтобы получить значение, надо обратиться к словарю по ключу
    print(my_dict[“key_name”])
    Если попытаться итерировать словарь в лоб, то будут перебираться ключи. Надо их как-то применять.
    for key in my_dict:
        print(my_dict[key])


    У вас будут возвращаться словари нижнего уровня, вложенные в значения основного словаря. Соответственно, там надо «погружаться» глубже.
    Ответ написан
    Комментировать
  • Как сделать перебор более эффективным(чтоб быстрее выдавало результат)?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    from random import randint
    import time
    
    target_pass = str(randint(1000, 10 ** 4)) #. Генерирую случайный целевой пароль длиной 4 цифры. 
    start_time = time.time()
    int_pass = int(target_pass)
    result = None
    for next_pass in range(10 ** len(target_pass)):
       if next_pass == int_pass:
          result = next_pass
          break
    print(result)
    print(time.time() - start_time)
    
    #  Далее твой код, но без печати (с печатью вообще не дождаться). 
    start_time = time.time()
    password = target_pass
    words = [
       1, 2, 3, 4, 5, 6, 7, 8, 9, 0
    ]
    end_password = ''
    old = []
    length = len(words) - 1
    
    
    def func():
       global end_password
       while end_password != password:
          for i in range(1_0_0_0_0):
             end = ''
             for letter in range(len(password)):
                guess = words[randint(0, length)]
                end += str(guess)
             if end not in old:
                old.append(end)
    
                if end == password:
                   end_password = end
                else:
                   pass
                # print(f'{end}')
          # print(end,end=' ')
    
    
    func()
    print(f'\n\n\n\n\n\tHack : {end_password}    | {(time.time() - start_time)}(sec);')
    Ответ написан
    Комментировать