Задать вопрос
  • Как из списка .json вывести нужные элементы?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    1.Изучить принципы работы со структурами данных.
    2.Применить данные на практике.
    Ответ написан
    Комментировать
  • ИИ генерирующая звуки по описанию?

    GavriKos
    @GavriKos
    поэтому хочу попросить подсказку

    ну начните с теории нейросетей, персептрон там, распознавание цифр, вот это все. И с математики.
    Где то через год возвращайтесь )
    Ответ написан
    Комментировать
  • Как мне оптимизировать цикл, чтобы он работал намного быстрее?

    Vindicar
    @Vindicar
    RTFM!
    0. Понять, про какой именно цикл речь.
    1. Замерить время выполнения частей цикла.
    2. Найти часть, которая тормозит.
    3. Понять, почему она тормозит.
    4. Написать реализацию, которая будет тормозить меньше.
    5. Проверить её в деле.
    Ответ написан
    Комментировать
  • Как с помощью def сократить код в python?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    def - это зарезервированное слово которое обозначает что дальше будет идти функция. выражение "Как с помощью def сократить код в python?" по сути не имеет смысла.
    У вас достаточно простая программа, если цель только решить квадратное уравнение - то и так всё хорошо для начала.
    Если вам нужно именно функцию, то просто оберните это всё в в функцию:
    def foo():
        a = int(input("Введите число a: "))
        b = int(input("Введите число b: "))
        c = int(input("Введите число c: "))
        
        D = b*b-4*a*c
        
        if D > 0:
            x1 = (-b-cmath.sqrt(D))/(2*a)
            x2 = (-b+cmath.sqrt(D))/(2*a)
            print(x1,x2)
        elif D == 0:
            x = -b/(2*a)
            print(x)
        else:
            print("Корней нет")

    P.S.: сюда наоборот нужно больше строчек, например проверку что ввели именно число, а не буквы. И возводить в степень принято так b ** 2
    Ответ написан
    Комментировать
  • Telegram bot, отправка текущего времени в сообщении?

    Vindicar
    @Vindicar
    RTFM!
    Модуль datetime в помощь. В частности, класс datetime.datetime, его методы now() и strftime().
    Только нужно иметь ввиду, что этот класс вернёт текущее время по часам того компа, на котором запущен бот, а не по часам клиента.
    Ответ написан
    Комментировать
  • Способ безопасного выполнения sql - запросов от пользователей?

    Vindicar
    @Vindicar
    RTFM!
    будет ли такой подход разумным с точки зрения производительности

    Он будет разумным с точки зрения безопасности и лёгкости исправления ошибок пользователя.
    Производительность, имхо, должна быть на втором месте в таких вещах.
    Ответ написан
    Комментировать
  • Как сделать клон Ubuntu в VirtualBox?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Долго и нудно - программа дублирования разделов, акронис или что-то типа того
    Побыстрее, но требует некоторого наличия мозгов - dump/restore. На целевой системе грузится livedvd, вручную создаются нужные разделы, восстановление можно делать либо с флэшки, либо вообще по сети.
    Ответ написан
    Комментировать
  • TypeError: cannot unpack non-iterable NoneType object как исправить?

    Vindicar
    @Vindicar
    RTFM!
    У тебя вполне возможно, что в four_squares() не отработает ни один return. В этом случае функция неявно вернёт None. А распаковать None как кортеж нельзя.
    Хотя бы сделай так:
    result = four_squares(i)
    if result is not None:
        a, b, c, d = result
        ...  # тут работаешь с a,b,c,d
    else:
        ...  # а тут решаешь, что делать, если функция вернула None
    Ответ написан
    3 комментария
  • Как работать с БД из другого класса?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Из приведённого кода не понятно для чего вообще выделен класс Sql.
    Фактически вы используете только один метод этого класса, а содержимое конструктора можно разместить в том же методе.
    Бессмысленно и беспощадно.
    Самое правильное - это делать всё как можно проще.
    Вот два очень полезных принципа в разработке:
    - https://ru.wikipedia.org/wiki/KISS_(принцип)
    - https://ru.wikipedia.org/wiki/Бритва_Оккама

    В приведённом вами куске кода не нужен класс sql, достаточно сделать всё внутри одной функции, ведь вы не используете созданный обьект больше никак.
    Другой вопрос, если вам нужно делать много запросов в рамках одного подключения к БД. На подключение тратяся некоторые накладные расходы по времени и трафику, иногда логично вынести подключение и хранить его в выделенном персистентном состоянии, которое будет создано один раз и переиспольовано для множества запросов. В этом случае закрывать коннект после запроса нельзя.
    Прочитайте вот: https://pavel-karateev.gitbook.io/intermediate-pyt...
    Обычно коннект к БД уже является менеджером контекста. Для чего вы делаете вот эту бессмысленную обёртку вокруг - не ясно.
    В соответствии с хоошим стилем прогаммирования нужно, чтобы действие любой функции можно было охарактеризовать простой короткой фразой без союзов, без "и" и "или", без "если".
    Иначе эту функцию стоило бы разбить на более мелкие и простые функции.
    Вот ознакомьтесь с концепцией чистой функции: https://dvmn.org/encyclopedia/clean_code/decomposi...
    Ответ написан
    2 комментария
  • Как записать в python значение в txt, если этого значения в нём нет?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Нужно просто включить хоть капельку логики.
    Допустим, есть файл вида и нужный id - 315:
    765
    454
    315

    Приведенный код проверяет наличие id в файле и, что куда более важно, выполняет запись, построчно:
    В первой строке есть нужный id? Нет? -Записываем.
    Во второй есть? Что, тоже нет? Записываем.
    В третьей есть? Ну так и быть - пропустим.

    Решением "в лоб" будет изменение кода так, чтобы в цикле выполнялась только проверка. И если id есть, то код это запоминал. А запись производилась бы уже по завершению цикла.
    Более оптимальных решений два:
    • Хранить id в виде json-файла и при открытии этого файла преобразовывать этот json в структуру данных python (список или словарь). А проверить наличие значения что в списке, что в словаре можно одной строчкой.
    • Использовать СУБД (например встроенную в python sqlite) и проверять id запросом (хотя чисто для хранения id этот вариант избыточен)
    Ответ написан
    1 комментарий
  • Что за ошибка AttributeError: 'str' object has no attribute 'tk и как её исправить?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не понимаю что за ошибка

    Очевидно, первым параметром конструктора Button должна быть не строка.

    что делать?

    Изучить Python и Tk.
    Ответ написан
    Комментировать
  • Проблемы с ноутом Самсунг вылазит синий экран после того как винда прогрузилась?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    грузи в безопасном режиме и сноси дрова,
    эксперементируй 639730dd65b56341432833.gif
    Ответ написан
    4 комментария
  • Как выбрать наибольшие значения из списка массивов и вывести их?

    0xD34F
    @0xD34F
    sorted(arr, key=lambda n: n[2])[-3:]
    Ответ написан
    Комментировать
  • Как отправлять одно сообщение а не несколько?

    Vindicar
    @Vindicar
    RTFM!
    Голову включить, для начала.
    Как по-твоему, какой вызов выполняет отправку сообщения? Правильно, interaction.send().
    Этот вызов у тебя в цикле for member in guild.humans, поэтому для каждого участника сервера будет вызвано interaction.send(), а значит, отправлено отдельное сообщение.
    Значит, если хочешь отправлять сведения однажды - вынеси вызов из цикла.
    А чтобы не потерять данные, которые ты в цикле собираешь - помещай их в список.
    После цикла собери этот список в строку через join(), и отправь эту строку одним вызовом send().
    Ответ написан
    3 комментария
  • Как реализовать settings.py?

    Vindicar
    @Vindicar
    RTFM!
    Я для таких вещей люблю использовать JSON и датаклассы. Хорошо работает, если у тебя в настройках только простые типы (целое число, дробное число, строка, булево значение), из коллекций - списки.
    Описываешь настройки как датакласс
    import dataclasses
    
    @dataclasses.dataclass
    class Settings:
        x: int = 0  # имя, тип настройки, значение по умолчанию
        y: int = 0
        name: str = "Безымянный"

    Тогда загрузку из файла можно сделать так:
    import sys
    import pathlib
    import json
    
    # я предполагаю, что ты будешь хранить настройки в каталоге скрипта
    APP_DIR = pathlib.Path(sys.argv[0]).parent.resolve()  # путь к каталогу скрипта
    CFG = APP_DIR / 'settings.json'  # путь к файлу конфига
    settings = Settings()  # создаём настройки по умолчанию
    try:
        with CFG.open('rt', encoding='utf-8') as cfg:  # открываем файл (закроется сам по выходу из with)
            data = json.load(cfg)  # разбираем файл как JSON
        settings = dataclasses.replace(settings, **data)  # обновляем настройки значениями из файла
    except Exception as err:
        print('Ошибка загрузки настроек:', err)  # выводим сообщение об ошибке
    # но выполнение кода продолжается в любом случае
    # у нас есть либо settings с значениями по умолчанию, либо settings, обновлённый из файла
    print(settings.name, settings.x, settings.y)  # пример использования объекта settings
    settings.name = 'Имя'  # значения в объекте можно менять
    settings.x, settings.y = 10, 20


    Для сохранения можно будет аналогично вытащить значения всех полей из объекта:
    try:
        data = dataclasses.asdict(settings)  # превращаем объект в словарь
        with CFG.open('wt', encoding='utf-8') as cfg:  # открываем файл (закроется сам по выходу из with)
            json.dump(data, cfg, ensure_ascii=False, indent='  ')  # записываем словарь в файл в формате JSON
    except Exception as err:
        print('Ошибка сохранения настроек:', err)  # выводим сообщение об ошибке
    Ответ написан
    Комментировать
  • Почему так популярны телеграм боты?

    @rPman
    Потому что в телеграм идут люди... очень молодая и массовая соцсеть, шустрый клиент (и не один), хорошая поддержка железа, пиар и сарафанное радио.

    Ботописатели идут туда где тусуется целевое население, это логичное следствие
    идут люди в discord - будут писать ботов там, пойдут в telegram, станет популярным whatsup - будут пытаться писать и для него (даже если это невозможно).

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

    Griboks
    @Griboks
    каждый 5-ый вопрос связан с Телеграм-ботом, и каждый 10-ый автор не знает основ языка

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ботов писать относительно просто, порог вхождения минимальный по сравнению с программированием под iOS и андроид, да и проще написания десктопных приложений с GUI, а в использовании боты проще, чем утилиты командной строки.
    Зато в результате может получиться довольно функцинальная штука. Легко настроить многоэтапную диалоговую коммуникацию с пользователем, получить для обработки изображения и фото, возвращать ссылки на скачивание результатов.

    Так вооот! Из-за этого невысокого порога вхождения развелось куча "курсов" программирования для чайников, которые первым упражнением, полезность которого удается легко показать ученикам, выбирают написание бота.
    И так у этих коуч-питонистов легко всё получается (ещё бы, надо де продать курс с первого бесплатного занятия), что у незадачливых школьников появляется неиллюзорная вера в себя и они бегут повторять увиденное на ютубе, а потом, когда, конечно же, то-то идёт не так как показано в видосе, они бегут сюда спрашивать как всё надо сделать, чтобы работало.

    В общем все хотят всё и сразу, и чтоб легко, бесплано и не надо было учиться.
    Ответ написан
    Комментировать
  • Почему тормозит Ubuntu?

    @rPman
    Загрузка Ubuntu происходит 3-5 минут, после входа долго "раскачивается" и вообще стал работать медленне.

    Убедиться что это не проблема с софтом, запустив к примеру linux с флешки liveusb (установочная ubuntu), можно пойти дальше и временно установить чистый linux куда-нидудь, хоть на такую же флешку.. запуск даже с медленных может происходить быстрее чем со старого hdd. Вдруг переустановка системы помозет? А может банальная дефрагментация? все же hdd это hdd.

    Убедиться что это не проблема с железом
    - не убитая ли система охлаждения
    возможно тротлит процессор от перегрева, прогнать тесты процессора, сравнивать с публичными бенчмарками для своего процессора
    - нет ли повреждений по питанию
    это проверить сложнее, но банально, нет ли тормозов только при питании от батареи, а от сети все ок? в общем неплохо бы помониторить показатели вольтажа у процессора в нагрузке, там так же есть аналогичный тротлингу механизм по температуре - понижение скорости если подсистема питания не справляется
    - не поврежден ли жесткий диск
    протестировать его какими-нибудь бенчмарками (показывающими например красивую картинку-график скорости в зависимости от сектора), посмотреть ssmart диска на ошибки
    старое железо может банально глючить из-за плохого контакта в том же шлейфе sata, в udma там будут сыпать ошибки но диск будет продолжать работать только часто притормаживать (переинициализироваться, кстати звук похож на чтение бедблоков, скребущий такой)

    p.s. не пользоваться ubuntu unity, и перейти на xubuntu или lubuntu (или любой другой шустрый DE) это делается простой командой
    sudo apt install xubuntu-desktop
    и в окне авторизации выбрать xfce
    Ответ написан
    Комментировать
  • Как скомпилировать консольное приложение для Android?

    @rPman
    Общая идея android приложений - это dalvik bytecode (обычно это java) виртуальная машина, но разрешается использовать нативные библиотеки

    Соответственно пишешь минимальное приложение на java (пусть даже без gui, а вывод при необходимости делать в системные логи), которое первым делом подключит библиотеку, которую так же помещаешь в apk.

    Исторически это называется java native interafce, позволяет навести мосты между java приложением и нативным c/c++.

    дока - https://developer.android.com/studio/projects/add-...
    немного про android jni - https://developer.android.com/training/articles/pe... там же слева смотри ссылки как собирать

    Это очень трудоемкий путь, помимо того что придется пробираться через дебри jni прослойки и ограничений, понадобится поддерживать все многообразие железа (архитектур) причем как 32-битных так и 64-битных, где уже на этапе их сборки и отладки появится миллион проблем, т.е. не только x86 но и arm, причем последний это не пара а много много - arm64-v8a , armeabi , armeabi-v7a ... (больше если надо поддерживать старое железо)
    Ответ написан
    Комментировать