• Почему не работает регулярное выражение?

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

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Chesterfield25, вам необходимо добавить в ваш код проверку, меньше ли текущее значение max, чем значение очередного элемента массива, которое печатает цикл. Вы его не печатайте, а сравнивайте. Если max меньше очередного элемента, пишите очередной элемент в max. Как всё переберется, выводите полученный max.
    Ответ написан
    Комментировать
  • Запрещены ли вопросы с просьбами о code review?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    С точки зрения цели стать базой знаний, как указал Алексей Уколов - вроде как code review и не нужен.
    Но с точки зрения, что это косвенно повысит адекватный интерес к ресурсу и пропорционально увеличит вероятность достижения цели - я за code review.

    Тем более что таких запросов не так уж и много. Будут идти валом, как сейчас боты - можно будет думать об их негативном влиянии и, возможно, закручивать гайки.
    Ответ написан
    Комментировать
  • Не работает аннотация типов. IDE не выводит подсказки. Что не так?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    multiprocessing.Rlock хоть и с большой буквы, но это не класс, а функция:
    Note that RLock is actually a factory function which returns an instance of multiprocessing.synchronize.RLock initialized with a default context.


    Если хочется аннотации этого типа, то вот так:
    from multiprocessing.synchronize import RLock
    
    
    def main(locker: RLock) -> None:
        return locker.
    Ответ написан
    Комментировать
  • Как обновлять словари с вложенными словарями?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    a = {'a' : {'a' : 'some value'}}
    b = {'a' : {'b' : 'some_value'}}
    a['a'].update(b['a'])
    print(a)
    Ответ написан
    Комментировать
  • Как указать путь к файлу?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Рекомендую либо экранировать обратные слэши (как в моём примере), либо заменить их на прямые слэши (типа C:/Mydir/myfile.txt).
    Кроме того, убедитесь, что после пути к папке photo в вашем варианте стоит слэш; по-моему его там нет.

    Кроме того, конструкция random.choice(os.listdir('photo')) предполагает, что папка photo находится в папке, которая в данный момент для вашего скрипта основная. Но это может быть неожиданно не папка проекта.
    Рекомендую, например, сделать по-другому:
    from pathlib import Path
    
    project_dir = Path('C:\\Projects\\telebot_test_functions\\')
    photo_dir = project_dir / 'photo' 
    photo = open(random.choice([*photo_dir.iterdir()]), 'rb')
    Ответ написан
  • Когда я пишу команду в дискорде для получения данных с api, остаются скобочки; что делать?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Разобраться, что такое «скобочки». В этом вам поможет книга «Изучаем Python» М.Лутца. Серьезно. Я сам, когда начинал изучать Python, долго не мог найти в инете, что с этими скобочками не так. Даже в официальной документации об этом сказано как-то невнятно. Именно у Лутца это разжевано внятно и понятно.

    В вашем случае круглые скобочки - не просто скобочки; это литерал последовательности tuple, и то, что обернуто в скобочки и разделено запятой, становится последовательностью типа «кортеж» ( он же tuple).

    Вам надо почитать документацию по вашему боту и понять, какие типы принимает метод .add_field в качестве аргумента value, и это и передавать - очевидно, без скобок.
    Ответ написан
    Комментировать
  • Почему exe-файл бота на aiogram запускается не на всех компьютерах?

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

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Офисные задачи (собственно ms office и иже с ним, браузер, почта… ) вполне успешно работают на i5 3-4 поколения с 8 гигами памяти. Это даже жирно.
    Вопрос скорее в потреблении. Каждое следующее поколение на тех же задачах обычно немного экономичнее, холоднее. Не требует столь активного охлаждения, соответственно тише и менее геморно в обслуживании.

    Для офиса на мой взгляд надо взять самый холодный проц, такой чтоб обошелся безвентиляторным радиатором, небольшую ssd и побольше ОЗУ для прожорливых браузеров. Плюс хороший блок питания, тут экономить не надо. Тихий большой низкооборотный вентилятор (дорогой!) на выдув из системника. И самую дешевую двухголовую видеокарту, т.к. офисный комп желательно с двумя мониторами. И ещё ИБП непременно, офисному компу полезно.
    Ответ написан
  • MySQL Master Slave не корректно работает?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    В принципе, можно настроить триггеры на slave. Трудно представить сценарий, который нельзя триггерами обработать. Но это, конечно, надо проектировать и кодить код. И тестировать.
    Мышкой это не натыкаешь.
    Ответ написан
    Комментировать
  • Калькулятор на Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    У вас несколько раз повторяется одинаковая строка. Подумайте, как сделать, чтобы она не повторялась.
    Также надо добавить обработку неверного ввода (не чисел и не мат.операторов) и обработку деления на нуль.
    Ответ написан
    Комментировать
  • Книги по базам данных?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Спросил у нашего преподавателя, его рекомендации ниже:
    Вот интересные книги:
    “Database Internals” by Alex Petrov,
    “PostgreSQL изнутри" Рогов.

    1 книга - работа в общем для баз данных,
    2 книга - конкретно PostgreSQL
    Ответ написан
    2 комментария
  • Как создавать экземпляры класса python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В первом приближении класс пользователей - это таблица (например, в реляционной базе данных). Таким образом, создание экземпляра для каждого пользователя суть внесение записи в таблицу. Каждая запись в таблице - это экземпляр класса, соответствующий пользователю.
    Реализовывать это в виде собственно класса можно разными способами - можно вручную прописывать связь полей таблицы и атрибутов класса, можно попытаться подтянуть средствами sql alchemy orm…
    Ответ написан
    Комментировать
  • Что делать, если отключил службу, отвечающую за пинкод в виндоусе, а пинкод есть?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Что делать, если отключил службу, отвечающую за пинкод в виндоусе, а пинкод есть?

    Поскольку мы не знаем, что именно ты там поотключал и как это в дальнейшем может сказаться на работе системы, рекомендации могут быть только самые общие.
    Установи систему заново.
    Когда вновь установишь windows, положи рядом с клавиатурой металлическую линейку и всякий раз, как чьи-либо руки полезут отключать сервисы и копаться в настройках windows, бей по тем рукам этой линейкой. Таким образом ты существенно снизишь вероятность возникновения подобной проблемы.
    Ответ написан
    Комментировать
  • Как поменять при выводе списка последнюю запятую на 'или'?

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

    spoiler
    В скобках замечу, что очень полезно будет заодно изучить тему «списки», обратить внимание на литералы списков. Также порекомендую никогда не использовать имена стандартных типов (list, dict и т.п.) в качестве имен своих переменных. Если очень хочется, пиши my_list.
    Ответ написан
    2 комментария
  • Как получить значение в атрибуте href?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    for item in categories:
        item_url = item.find('a').get('href')
        print(item_url)
    Ответ написан
    Комментировать
  • Как решить проблему с обновлением pip?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Во-первых, надо явно указывать пути к ПО, которое запускаешь.
    Во-вторых, желательно запускать их, находясь в соответствующих папках, а не абы откуда.
    В-третьих, я бы не советовал обновлять штатный Python в Linux, т.к. на него там завязаны некоторые внутренние процессы. Пусть сам linux обновляет свои встроенные python как ему надо. После обновлений не исключены разнообразные неприятности.

    Вы ставьте себе свои python-ы в отдельные папки, в разных случаях могут понадобиться разные версии, и явно их вызывайте оттуда, не трогая системный python. И для этого лучше работать в виртуальных окружениях, подгоняя каждое под свою задачу.
    Ответ написан
    Комментировать
  • Для чего нужны Map и Set?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Из вопроса ничего не понятно, кроме того, что документацию не читали, гуглить не умеем, о структурах данных понятия не имеем. Грустное зрелище. Душераздирающее.
    https://learn.javascript.ru/map-set
    коротко:
    • Set - это множество уникальных объектов.
    • Map - это словарь, где каждому из множества уникальных объектов сопоставлено некое значение (возможно не уникальное).


    Совет: изучите структуры данных. Без этого дальше двигаться бессмысленно.
    Ответ написан
    Комментировать
  • Как удалить строку из массива не обладая ID, JSON?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Итак:
    приведенный в вопросе json не валидный, и работать с ним как с json нельзя.
    Я предположил, что мы получаем валидный JSON вот такого вида:
    {
        "users": [
          {"user": "name_test"},
          {"user": "name_test1"},
          {"user": "name_test2"}
        ]
    }

    тогда правильный код будет выглядеть, например, так:
    import json
    
    args = "name_test2"
    with open('config.json', 'rb') as fp:
        jsondata = json.load(fp)
        jsondata['users'] = [item for item in jsondata['users'] if item['user'] != args]
        print(jsondata)
    Ответ написан
  • Код не работает, что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Поигрался со своим чатом,
    короче, вот что получилось
    import asyncio
    
    from pyrogram import Client
    import shelve
    import random
    
    from secret.config import Config
    TEXTS = ['Круто!', 'Nice!!!!', 'Oh my god']
    
    config = Config()
    api_id = config.api_id
    api_hash = config.api_hash
    phone_number = config.phone
    PUBLIC = config.title
    chat_id = config.chat_id
    name = config.name
    processed_messages = shelve.open('processed_messages.db', writeback=True)
    app = Client(name, api_id, api_hash, phone_number=phone_number)
    
    
    async def main():
        async with app:
            public = await app.get_chat(PUBLIC)
            async for msg in app.get_chat_history(chat_id, limit=100):
                if msg.from_user:  # если у нас есть параметр from_user
                    any_sender_id = msg.from_user.id  # присваеваем ID юзера
                else:  # иначе
                    any_sender_id = msg.sender_chat.id  # присваеваем ID канала или чата
                if any_sender_id == public.id:  # проверяем что это нужный паблик
                    if str(msg.id) in processed_messages:
                        print(f'Пропускаем уже обработанное message_id={msg.id}')
    
                    else:
                        processed_messages.update({str(msg.id): True})
                        print(f'Обработка message_id={msg.id}')
                        text = random.choice(TEXTS)
                        print(text)
                        result = await app.send_message(chat_id, text, reply_to_message_id=msg.id)
                        processed_messages.update({str(result.id): True})
    
                        await asyncio.sleep(1)  # пауза, чтоб не банили за флуд
    
    
    app.run(main())
    из твоего кода.
    Конечно, это всё такое... ну... прототип. Пользоваться этим "в лоб" я бы не советовал.
    Ответ написан
    Комментировать