• Проблемы с подключением двух разных ПК. Как сделать правильно?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Это внешний IP ертелекома в екатеринбурге. Автор вопроса, похоже, за NAT и пытается по внешнему ip вот так сокетом пробиться через nat.
    Так не получится. Ну или у него белый адрес, но роутер не пробрасывает внешние коннекты на его комп.
    В общем, автору следовало бы указать сетевой адрес локального интерфейса при подключении.
    ipconfig что показывает? (ifconfig для линукс)
    Ответ написан
    5 комментариев
  • Как понять что я готов к ООП?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если спрашиваете, то не готовы.

    В этом вопросе важно понимать, что изучив всего лишь объектный синтаксис, вы столь же готовы писать ООП, сколь готовы профессионально играть в шахматы, изучив как ходят фигуры.
    Главное в ООП - не синтаксис. А взаимодействие объектов. Композиция, наследование, инкапсуляция. Связность, связанность. Это все довольно сложно, и по усилиям, которые требуется затратить на обучение, запредельно отличается от изучения основ процедурного программирования.

    Так что просто запаситесь терпением, набирайтесь опыта в программировании, и постепенно разбирайтесь с ООП - сначала на примере чужих классов и книжек. Мартин, Фаулер - вот это вот всё.
    Ответ написан
    Комментировать
  • Как сформировать этот код в цикл?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вам необходимо ознакомиться с темой «структуры данных», в частности - словари и списки.
    Также вам надо изучить вопрос «итерация».
    Без этого двигаться дальше бессмысленно.
    response = {'data': ['a', 'b', 'c']}
    sellprices = [response['data'][i] for i in range(3)]
    print(sellprices)
    Ответ написан
    6 комментариев
  • Почему цикл не добавляет переменную в словарь(список) Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что написавший его разработчик ничего не знает об областях видимости.
    Ответ написан
    3 комментария
  • Пишу код для счастливых билетов, но в коде что-то не то и циклы не работают после 000000, в чём проблема?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, у тебя уехали циклы, начиная с о второй цифры. Они не внутри общего цикла.
    Далее, ты можешь заменить 6 циклов на один, просто по числам от 0 до 999999.
    for number in range(0, 1_000_000):
        str_number = f'{number:0>6}' # превращаем число в строку, добивая нулями слева до 6 знаков
        digits = list(map(int, str_number))  # каждый символ строки превращаем в отдельное число, т.е. цифру
        d1, d2, d3, d4, d5, d6 = digits  # распаковываем список цифр в отдельные переменные


    Ещё ты можешь перебирать первые 5 цифр, а шестую цифру вычислять - сумма первых трёх минус четвёртая и минус пятая . Если результат в диапазоне 0-9, то это и будет шестая цифра.

    Если же ты предпочтёшь перебирать 5 цифр отдельными циклами, то стоит делать иначе.
    Первые 3 цифры перебираешь полным циклом, 4я цифра не должна превышать сумму первых 3х, 5я цифра не должна превышать сумму первых 3х - 4ю цифру. 6ю цифру вычислишь.
    for d1 in range(10):
        for d2 in range(10):
            for d3 in range(10):
                for d4 in range(min(9, d1+d2+d3) + 1):
                    for d5 in range(min(9, d1 + d2 + d3 - d4) + 1):
                        d6 = d1 + d2 + d3 - d4 - d5
                        if 0 <= d6 <= 9:
                            print(f'{d1}{d2}{d3}{d4}{d5}{d6}')


    Аналогично, можно заметить, что не всегда имеет смысл перебирать 4-5 цифры с нуля. Пример: если первые три цифры 299, то четвёртая не может быть 0 или 1 - в этом случае оставшиеся две цифры должны будут дать в сумме 20 или 19, что невозможно. С учётом код изменится так:
    for d1 in range(10):
        for d2 in range(10):
            for d3 in range(10):
                min_d4 = max(0, d1 + d2 + d3 - 18)
                max_d4 = min(9, d1 + d2 + d3)
                for d4 in range(min_d4, max_d4 + 1):
                    min_d5 = max(0, d1 + d2 + d3 - d4 - 9)
                    max_d5 = min(9, d1 + d2 + d3 - d4)
                    for d5 in range(min_d5, max_d5 + 1):
                        d6 = d1 + d2 + d3 - d4 - d5
                        if 0 <= d6 <= 9:
                            print(f'{d1}{d2}{d3}{d4}{d5}{d6}')
    Ответ написан
    Комментировать
  • Почему с отрицательным кол-во хп персонаж жив?

    Vindicar
    @Vindicar
    RTFM!
    1. Включи логику. Ты сначала проверяешь, умер ли персонаж, а потом наносишь урон. Отсюда и наблюдаемое поведение.
    2. Никогда не используй f-строки для SQL запросов, освой parametrized queries.
    Ответ написан
    Комментировать
  • Как сделать чтобы бот запоминал следующее сообщение после слеш-команды?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В общем случае это плохая идея. А вдруг сообщение напишет другой пользователь, чем отправил команду?

    Правильнее использовать параметры, лучше с type hinting, чтобы Discord сам подсказывал параметры и приводил типы. Примерно так:

    @bot.slash_command(name='set', description='...')
    async def settings(ctx, selected_channel: discord.Channel):
        await ctx.send(f"Вы выбрали канал {selected_channel.mention}")
    Ответ написан
    6 комментариев
  • Как посмотреть время последней записи в Redis?

    Dunaevlad
    @Dunaevlad Автор вопроса
    А, кек, оно так и называется "lastsave"

    r = redis.Redis(host="localhost", port=6379, db=0)
    r.set("foo", raw)
    print(r.lastsave()
    Ответ написан
    Комментировать
  • Когда запускаю и пишу /start выдаёт ошибку? что не так в коде?

    очевидно же из ошибки - бот не является участником чата. нужно добавить бота в чат
    пока он не участник,он не может выполнить это
    invite_link = bot.export_chat_invite_link(GROUP_CHAT_ID)
    Ответ написан
    2 комментария
  • Как работает asyncio.sleep?

    Vindicar
    @Vindicar
    RTFM!
    Идея простая.
    Асинхронные приложения - это набор пар "операция - обработчик", где операция - это некоторый длительный процесс (скажем, вводы/вывод), который не требует постоянного внимания со стороны кода. Когда операция завершается, выполняется её обработчик. Этот обработчик может планировать другие операции, и так далее.

    Корутины - это такие функции, которые умеют сохранять своё состояние, и восстанавливать его. Т.е. когда корутина делает await-вызов, она начинает длительную операцию, а обработчик этой операции просто восстанавливает контекст корутины и продолжает её выполнение.

    Соответственно, await-вызов сохраняет текущий контекст корутины, и планирует новую длительную операцию. Какую - зависит от того, что идёт после await. Эта операция представлена тем или иными awiatable значением (Future, Task и т.п.).

    Рабочий цикл (loop, его также называют реактор) просто проверяет текущие операции. Как только одна из них завершилась, он выполняет её обработчик. А потом продолжает проверять остальные активные операции.

    Ключевой момент - выполняет обработчик, а только потом проверяет остальные операции. Т.е. если обработчик планирует операцию через await - это не проблема, она будет выполняться наравне с остальными. А вот если обработчик просто делает что-то длительное, он не возвращает управление циклу, и не даёт выполняться остальным операциям.

    asyncio.sleep() планирует ничего не делающую операцию, которая завершится успехом через заданное время. Поэтому её выполнение не мешает циклу-реактору. Просто ещё один await вызов, который приостанавливает текущую корутину и возвращает управление реактору.

    time.sleep() ничего не знает о реакторе и асинхронных операциях. Она приостанавливает выполнение обработчика, не прерывая его и не отдавая контроль реактору. Поэтому на время time.sleep() (или любой длительной синхронной операции) спит вся программа.
    Ответ написан
    5 комментариев
  • Как происходит работа с api?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не нужно тебе брать таких заказов. Просто если ты задаешь такой вопрос - то ты находишся где-то на самом старте Web API. И сколько у тебя вопросов еще будет если ты вдруг возьмешь аванс и приступишь к работе?

    Отвечая на вопрос - никто не знает. Надо читать информацию на самом сайте. Там обычно есть описание
    этого API и обычно его использование стоит денег.
    Ответ написан
    4 комментария
  • Как открыть консоль браузера на Андроид смартфоне?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    https://developer.chrome.com/docs/devtools/remote-...
    Подключаем телефон к компу, открываем на телефоне сайт и на компьютере видим что в консоли телефона.
    Ответ написан
    Комментировать
  • По какой причине не работает метод fethmany в данном примере?

    RimMirK
    @RimMirK
    Вроде человек. Вроде учусь. Вроде пайтону
    fethmany()
    fetchmany()
    Ответ написан
    Комментировать
  • По какой причине не работает метод fethmany в данном примере?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Потому, что нет такого метода. fetch же
    Ответ написан
    Комментировать
  • Как перемножить элементы строки в матрице, которые принадлежать диапазону [a,b]?

    @dmshar
    Читаем внимательно ваш код.
    vector=[]
    #Создаем ПУСТОЙ список, в котором вообще нет ни одного элемента.
    ....
    vector[i] *= a[i][j]
    # Ну предположим i=0. Но элемента vector[0] (впрочем, как и vector[1], vector[2].....) у вас нет - список, как я разъяснил выше, ведь пустой.

    Запись типа
    v*=a
    эквивалентна
    v=v*a
    . Вопрос - что-же вы желаете получить, умножая
    vector[i] = vector[i]* a[i][j]
    -- еще раз, если элементов vector[i] с любым i у вас не существует.

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

    Vindicar
    @Vindicar
    RTFM!
    start_polling() имеет параметр on_startup, который принимает корутину или список корутин.
    Ответ написан
    Комментировать
  • Как корректно изменять библиотеки, устанавливаемые из PyPI?

    fenrir1121
    @fenrir1121
    Начни с документации
    - Открыть исходники (обычно кнопка Homepage)
    - Сделать форк
    - Внести изменения в форке
    - Сбилдить и использовать свой форк вместо оригинала
    Ответ написан
    1 комментарий
  • Как объединить чат WhatsApp и Telegram в 1 чат?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Легального способа, увы, нет. И тут узкое место сам WhatsApp.

    WhatsApp предлагает доступ к API только для бизнесов - это первый рубеж, но не последний. В первых версиях Business API были какие-то функции для работы с группами, но их уже давно удалили, и сейчас API позволяет общение только с бизнес-аккаунтом напрямую.

    В WhatsApp есть интергации на основе реверс-инжиниринга web-клиента, но их использование нелегально и сопряжено с рисками бана. Если в такое и играть, то по крайней мере не своим основным аккаунтом, чтобы не было потом очень обидно. Также такая интеграция работает негарантированно и может сломаться в любой момент. Но её в теории достаточно для реализации моста.

    Я бы рекомендовал просто отпинать всех ретроградов, которые ещё не зарегались в Телеграме, чтобы исправили это досадное упущение.
    Ответ написан
    Комментировать
  • Random в питоне не выполняет свою функцию, используясь через def,как исправить?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Все он меняет...
    >>> import random
    >>> def test():
    ...     return random.randint(0, 10)
    ...
    >>> test()
    9
    >>> test()
    0
    >>> test()
    0
    >>> test()
    1
    >>> test()
    3
    >>> test()
    9
    >>> test()
    7
    >>>
    Ответ написан
    1 комментарий
  • Как многопоточно читать тхт файл Python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вам не читать многопоточно надо, а запрашивать url нужно многопоточно. И да, asyncio и aiohttp подойдет.
    Например вот https://www.twilio.com/blog/asynchronous-http-requ...
    Ответ написан
    Комментировать