Задать вопрос
  • У меня почему то дс бот на питоне не понимает команды?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Потому что в строке await ctx.send(embed=discord.Embed( буква "с" кириллическая.
    Ответ написан
    Комментировать
  • Полезный твик для Windows?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Есть такие
    Ответ написан
    Комментировать
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все базы данных хранят строки не так как Excel. Хранят как предписано в файловом
    формате для целевой DBMS. Когда удаляешь - обычно
    остаются дырки которые потом заполняются другими строками. Но это я упрощенно рассказываю.
    В реальности все еще сложнее. И есть процессы вакуума или другой релокации строк. И таблица
    может двигаться в памяти. Шаффлиться. Делиться на части. Кластеризоваться и т.п.

    Поэтому твоя хотелка достигается только с использованием order by.

    Все остальные способы не работают потому что язык SQL не дает никаких гарантий относительно
    физического упорядочивания строк.

    UPD: Для авто-нумерации https://stackoverflow.com/questions/16847574/how-t...
    Ответ написан
    Комментировать
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    Vindicar
    @Vindicar
    RTFM!
    Ты просто не понимаешь сути первичного ключа.
    Это значение, которое однозначно идентифицирует строку, независимо от наличия и количества других строк в таблице. И точка. Он не должен меняться вообще за время жизни строки.
    Бывают случаи, когда у нас уже есть уникальное значение, которое можно использовать как ключ.
    Но куда чаще используются синтетические ключи, т.е. просто числа, которые пользователь по-хорошему и видеть-то не должен никогда. А раз так, то какая разница, есть ли дырки в нумерации?
    Я больше скажу, иногда сплошная нумерация - это слабое место в системе.
    Ответ написан
    Комментировать
  • Как работает метод max() для списка из списков?

    gedev
    @gedev
    сисадмин-энтузиаст
    Посмотрите на свой список, у вас там строки, а не числа. С числами всё работает так как вы ожидаете. А вот строки в Python сравниваются иначе — по их ASCII/Unicode кодам.
    >>> green = [[0.01775, 274903], [0.0177, 2767608], [0.01765, 1966445], [0.0176, 698199], [0.01755, 2853585], [0.0175, 944079], [0.01745, 2813977], [0.0174, 336701], [0.01735, 2118072], [0.0173, 975570]]
    >>> max(green, key=lambda x: x[1])
    [0.01755, 2853585]
    Ответ написан
    1 комментарий
  • Что изучать после пайтона?

    Maksim_64
    @Maksim_64
    Data Analyst
    Часть первая: Английский Язык.

    Часть вторая: поставь anaconda и jupyter lab

    Часть третья: python фреймворки
    1. numpy - изучать каждый метод не нужно, нужно освоить broadcasting Это правила по которым происходят операции с массивами разной размерности. Не изучишь, не сможешь работать с нейронными сетями и много еще с чем.

    2. pandas - нужно научится понимать, как работают индексы (вся мощь но и сложность лежит в индексах особое внимание к многоуровневым индексам). Группировки объект groupby. Решайпинг, методы stack, unstack, melt и т.д. Решайпинг сложная тема, но без нее никуда.

    3. matplotlib - нужно научится работать в ооп стиле, а не в матлаб стиле.

    Вот эти 3 можешь начинать изучать без математики. учить по документации . Скачай учебные датасеты простенькие, задавай им вопросы применяй и визуализируй.

    4. scikit-learn - это машинное обучение, тебе понадобится разобраться что такое оценщик (estimator) и transformer (трансформатор). Также научится пользоваться пайплайнами, объект Pipeline это для старта, естественно.

    5. statsmodels - это не много иной взгляд на машинное обучение он включает в себя инферентивную статистику. Например построив логистическую регрессию, я могу посредством этой библиотеки найти каким образом изменение на одну единицу одного из моих предикторов отражается на вероятности, так называемый маржинальный эффект. Это очень важно для бизнеса. Также A/B тесты тоже там, и многое многое другое.

    4 и 5 также учить по документации она совершенно фантастического уровня особенно для scikit-learn + очень важный плюс В этой области есть классика это книга Statistical Learning книга написана профессорами стенфорда, в мире датасаенс она очень известна. Раньше она была написана на R, я ее читал на R в свое время, так вот 2023 году этим летом вышла python edition. Книга и код доступны бесплатно. https://www.statlearning.com/
    Это уникальная книга без равных, но к ней надо быть готовым.

    Часть Четвертая: Математика
    Все что нужно есть на Khan Academy. Начни со своего уровня и вперед, математика тебе нужна вся. Особенно Calculus. Заходишь на Khan Academy и вперед проходи бесплатные курсы со своего уровня,
    Algebra 1,
    Algebra 2,
    Precalculus,
    AP/College Calculus AB
    AP/College Calculus BC
    Statistics and Probability
    AP College Statistics

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

    Потом придется прочитать еще пару книг по теории вероятности и статистике отдельно (со временем). Если calculus на Khan Academy на должном уровне, то вот теория вероятности и статистика слабенькая, нужно будет добавлять.

    В добавление еще SQL но поверхостно, уровень не сложных запросов и подзапросов. Все дела будут происходить в pandas.
    Ответ написан
    Комментировать
  • Можно ли использовать несколько сетей?

    CityCat4
    @CityCat4
    В больнице с переломом ноги
    Угу-угу. Воткнул ты такой usb с чем-то непонятным, сидишь балдеешь, потом поднимаешь глаза - опа, а рядом безопасник стоит :) и без всякой улыбки спрашивает - а что это такое только что воткнули в ноут?

    Если это по работе - лучше напрячь админов. Если не по работе - лучше всего не лезть на корпоративный ноут.
    Ответ написан
    1 комментарий
  • Есть ли способ аннотировать аргументы метода переменной класса?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    На данный момент в Python нет прямого способа аннотировать типы аргументов, которые зависят от внутреннего состояния объекта или определяются во время исполнения программы.

    Как вариант, можно закостылить так:
    from dataclasses import dataclass
    from typing import Any, Literal, TypeAlias, Self 
    
    @dataclass()
    class BaseConfig:
        ITEM: TypeAlias = Literal["item1", "item2"]
    
    class MyClass:
        def __init__(self, config: BaseConfig = BaseConfig) -> None:
            self.config = config
    
        def meth(self, item: Any) -> Self:
            if item not in self.config.ITEM:
                raise ValueError(f"Invalid value {item} for item. Expected one of {self.config.ITEM}.")
            ...
    Ответ написан
    Комментировать
  • Как сделать оформление словаря в txt файле и вычитывание значений из этого файла?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Надо вам бы книжечку почитать по питону. Быстрее и полезнее было бы для вас в плане освоения.
    Вот, например устаревшая конструкция:
    #-*- coding:cp1251 -*-
    Сейчас принято весь код держать в utf-8 и испоьзовать свежий питон третьей версии.

    Прочитайте про PEP8.
    Считается плохим стилем использовать CamelCase для чего-то кроме классов.
    Для переменных и имен функций нужно использовать snake_case.
    selected_genre = str()
    selected_game = str()

    Ни к чему объявлять такие переменные присвоением пустой строки, причем с вызовом явного конструктора. В Питоне строки - неизменяемый тип, а переменные. это не ячейки, зарезервированные в памяти, а, как бы, "бирки" с именем, которые вешаются на объекты. ВОт строки - это объекты, которые нельзя менять. Как создаются, так и остаются.

    genre_file = open('genres.txt')
    Не хорошо так открывать файл. Для такого мелкого скрипта это не так важно, но хорошую привычку у себя формировать надо всегда и всегда надо работать с файлами правильно. Через контекстный менеджер with и используя pathlib.

    GenreList.append(line.strip())
    Обратите внимание на разницу между append и extend, именно в этом одна из причин проблемы, с которой вы тут боретесь.

    value = item.split(" ")[1:]
    Сплит можно делать по знаку равно, а не только по пробелу. Такое ощущение, что вы не особо задумываетесь, что пишете в коде.

    Там дальше вообще какая-то дичь. Так писать нельзя. Код непрозрачный и нечитабельный. Если вы наделали кучу косяков и ошибок в более простом коде, то вот в дальнейшей каше там вообще швах.
    Проще надо.

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

    Во-вторых, почему вы так странно храните и выбираете игры? Храните их одним перечнем словарей. Каждый словарь в перечне будет соответствовать одной игре. В этом словаре будут все её параметры: название, жанр, рейтинг, если надо, который будет влиять на вероятность выбора...

    Разбивайте всегда задачу на ОЧЕНЬ МАЛЕНЬКИЕ подзадачи и решайте их отдельно. Проверяйте решение подзадачек тоже по отдельности, убеждайтесь, что этим мелкие кирпичики работают.

    Повторюсь, изучайте питон, чтобы программировать на нем как на питоне, а не вот так вот. Успехов.
    Ответ написан
    4 комментария
  • Какой метод разрешения коллизий используется в Python?

    @deliro
    Открытая адресация, но по формуле, а не тупо сдвигом на один
    Ответ написан
    Комментировать
  • Как парсить приложение на андройд?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    1 комментарий
  • Как создать API?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы хотите понять принципы API, то гуглите "rest api".
    Но ваше желание его создать весьма преждевременно.
    API не цель.
    API - средство.
    Когда он будет вам действительно необходим, вы уже будете знать что делать.
    Ответ написан
  • Возможно ли обучить ИИ определять данные анализов по фото?

    Maksim_64
    @Maksim_64
    Data Analyst
    Есть библиотека tensorflow. Она имеет api для разных языков, в том числе и для js. Ее вы и нашли tensorflow.js.

    Да это возможно. Построить классификатор (распознаватель) OCR (Optical character recognition) в данном случае, который будет распознавать данные из каждой ячейки. Построение таких распознователей, это задача для специалиста. Такого что засунул файл с изображением в нейронную сеть и готово нет. Это целый процесс.

    В первую очередь я бы попробовал готовый parser таблиц, для картинок и pdf файлов. На python. Библиотека img2table она базируется на OpenCV, но специализируется на табличных данных. Возможно она решит все ваши вопросы, это будет значительно проще и быстрее.
    Ответ написан
    Комментировать
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище Корень. Вижу прошло пару месяцев а ты все тот-же Ферматист :)

    Я не знаком с пакетом Вольфрам. Но его делал очень умный человек. И я думаю что символьные
    вычисления там тоже поддерживаются.

    Но такие вычисления обычно подходят под расчеты с дробями. Например 1/2 + 1/3 = 1
    в символьных вычислениях поддерживаются. Это позволяет точнее посчитать
    пределы например.

    То что ты посчитал - это трансцедентное число.

    z = exp((1/3)*log(664572³ + 257118³))

    Из-за логарифма внутри.
    Везде где есть синусы, логарифмы (ряды Тейлора) мы можем говорить об этом
    свойстве чисел. Грубо говоря это число которое мы не можем в общем случае
    получить путем конечного числа операций над рациональными числами.

    И обычно в физике и в инженерном деле логарифмы и экспоненты считают приближенно.
    Используя float, double и extended (80bit). И этого хватает чтоб запускать ракеты на Марс.

    Их никто не считает точно, просто по той причине что их нельзя представить точно.
    У нас не хватит памяти всех датацентров чтоб точно такое считать.

    Иногда в очень-очень редких случаях математический пакет может упростить формулу
    аналитически (exp(log(x)) и получить более простые цифры без свойства трансцедентности.
    Почитай документацию по MathCad, MatLab, может там такое тоже есть.

    Я также упрекаю тебя в невнимательности. Я тебе в прошлый раз делал акцент на типах
    данных. И ты это благополучно проигнорировал. И снова ты полез в теорию чисел и Ферма
    даже не понимая с каким типом данных работает Вольфрам. Разберись сначала с этим вопросом.
    Иначе будешь всегда выглядеть почемучкой.
    Ответ написан
    6 комментариев
  • Что делать, когда Wolfram говорит, что будет корень, а считать не хочет - a³+b³=z³?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Этот корень - иррациональное число. Бесконечное. Его точно на компьютере не подсчитать никак. Это будет какое-то большое число с бесконечным не повторяющимся набором цифр после точки.

    Точнее всех будет считать python если использовать библиотеку Decimal:
    from decimal import *
    getcontext().prec = 400
    a = Decimal('112312312312312311231231231231231123123123123123112312312312312311231231231231231123123123123123');
    print(pow(a,Decimal(1/3.0)))


    Можете хоть тысячи знаков считать, ограничения - в основном скорость работы и требования по памяти.
    Ответ написан
    5 комментариев
  • Как сделать так чтобы в scrapy, парсились дубликаты ссылок? То есть так чтобы каждая спаршенная ссылка, должна создать уникальный файл. Как?

    Vindicar
    @Vindicar
    RTFM!
    Перед открытием файла проверяй, существует ли он. Если существует, добавляй числовой суффикс, пока не найдёшь свободное имя. Для простоты можешь оформить это в виде функции, которая принимает исходное имя файла, а возвращает либо его же, либо скорректированный вариант.
    Для реализации pathlib в помощь.
    Ответ написан
    2 комментария
  • Raid1 на двух hdd разных производителей?

    @aleks-th
    Можно.
    Даже в некоторых источниках рекомендуют в рейд1 ставить разные диски - так как у дисков из одной партии больше вероятность помереть одновременно.

    Единственный момент если будете делать средствами матплаты - очень аккуратно и бекап предварительно сделайте, а то можно случайно диск с данными почистить и данные случайно потерять при создании рейда, в некоторых биосах этот пункт по умолчанию стоит.
    Ответ написан
    Комментировать
  • ValueError: operands could not be broadcast together with shapes (720,406) (400,) (720,406) в stable diffusion?

    Maksim_64
    @Maksim_64
    Data Analyst
    Сама по себе ошибка, довольно известная, и происходит она на уровне numpy. При работе с массивами данных, есть такой важный термин, как broadcasting - это то как numpy осуществляет арифметические операции с массивами разной размерности.
    Например
    import numpy as np
    arr1 = np.ones(9).reshape(3,3)
    arr2 = np.ones(8).reshape(2,4)
    arr1 + arr2
    Выдаст по смыслу такую же ошибку, как у вас, размерности разные и он не в состоянии произвести оперцию.
    А вот в этом примере
    import numpy as np
    arr1 = np.ones(27).reshape(3,3,3)
    arr2 = np.ones(9).reshape(3,3)
    arr1 + arr2
    Не смотря на то что размерности разные у нас двумерный массив складывается с трехмерным, ошибки не будет все сработает.
    Потому что согласно правилам broadcatsting'a, данная арифметическая операция возможна.

    Так и у вас, numpy не в состоянии выполнить broadcasting. Как поправить, по скольку вы напрямую не работаете с массивами, а используете интерфейс stable diffusion, то все ответы надо искать там. Либо вы передаете массив с данными, не в той размерности, либо что то в параметрах stable diffusion не то. Ищите рабочий пример и повторяйте. Так поправьте здесь что то или там что то, здесь сказать не возможно. Что из себя представляет проблема я обрисовал.
    Ответ написан
    9 комментариев
  • Как использовать on_startup в боте телеграмм?

    1. У тебя ошибка в SQL-синтаксисе: CREATE TABLE IF NOTE EXISTS
    2. Что мешает тебе вызывать bd_start непосредственно перед запуском бота? Что-то типа:
    async def main():
        await bd_start() # так
        bot = Bot(token=config.BOT_TOKEN, parse_mode=ParseMode.HTML)
        dp = Dispatcher(storage=MemoryStorage())
        dp.include_router(router)
        await bot.delete_webhook(drop_pending_updates=True)
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types(), on_startup=on_startup)
    Ответ написан
    1 комментарий