Задать вопрос
  • Что тут учить в библиотеке aiogram?

    Vindicar
    @Vindicar
    RTFM!
    1. Читаешь Quick Start и примеры кода.
    2. Ищешь пример кода, который наиболее походит на нужную тебе функциональность.
    3. Наткнувшись на непонятное, ищешь нужный раздел документации и читаешь до наступления просветления.
    4. Повторять 2-3, пока нужный пример кода не будет полностью понятен.
    Я так делаю, во всяком случае.
    Ответ написан
    1 комментарий
  • Как получить часовой пояс по городу в python?

    Vindicar
    @Vindicar
    RTFM!
    В общем случае никак. Города могут иметь одинаковые названия(например, Кострома и Кострома), да и какой-нибудь Малый Задрипанск может отсутствовать в базе.

    Проще дать пользователю выбрать часовой пояс как обычно.
    Ответ написан
    Комментировать
  • Как определить качество изображения?

    Vindicar
    @Vindicar
    RTFM!
    Ну например, так: используй фильтр Кэнни на изображении, посчитай число белых пикеселей (контуров).
    Размой изображение слегка и используй фильтр Кэнни на размытом изображении. Белый пикселей (контуров) будет меньше, так как часть контуров станет слишком размыта. Чем размытее изображение, тем меньше будет разница.
    Ответ написан
    Комментировать
  • Как сделать так, что бы таймер начинался заново, а не накладывался друг на друга в tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Сделать count глобальной переменной. Тогда её значением можно будет управлять извне countdown().
    Ответ написан
  • Как работать с foreign key sqlite3 через python, нигде понятного объяснения не нашёл?

    Vindicar
    @Vindicar
    RTFM!
    Питон тут нипричем. Читаем доки по sqlite, находим пример:
    CREATE TABLE artist(
      artistid    INTEGER PRIMARY KEY, 
      artistname  TEXT
    );
    CREATE TABLE track(
      trackid     INTEGER,
      trackname   TEXT, 
      trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
    );

    Пример обеспечивает каскадное обновление ключа (ты вроде это просишь).
    Также может потребоваться включить поддержку внешних ключей, выполнив первым делом запрос:
    PRAGMA foreign_keys = ON;
    Ответ написан
    Комментировать
  • Ошибка синтаксиса, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    while False:
    while False: что? Тела-то у цикла нет. Да и смысла в нём тоже.
    Ответ написан
    Комментировать
  • Где у меня ошибка в коде в задании 15.2 Информатика Python?

    Vindicar
    @Vindicar
    RTFM!
    Потому что пишешь какую-то ерунду.
    round(int(input())) - зачем тебе round()? Ты же читаешь целое число.
    1 < k < 30 зачем это проверять на каждой итерации цикла? И да, это условие провалится если тебе передадут 1 или 30 значений.
    1 < number < 300 - опять, зачем? Тебе по условию сказано, что вводимые значения будут именно такими, это условие ничего не делает. Кроме случаев, когда скорость равна 1 или 300 - по условию такое может быть, а у тебя нет.
    Дальше, почему ты постоянно переписываешь переменную a? Её нужно переписывать только если есть автомобиль, скорость которого меньше 30 км/ч. В твоём коде, если сначала будет автомобиль со скоростью меньше, а потом со скоростью больше, то программа забудет, что видела медленный автомобиль.
    Ответ написан
    3 комментария
  • Как решить 22 задание ЕГЭ по информатике?

    Vindicar
    @Vindicar
    RTFM!
    Смотри, по логике.
    a = 3x + 67
    b = 3x - 61

    для положительных x число a всегда будет больше на 128 чем b
    поэтому после первой итерации цикла будет
    a = 128
    b = 3x - 61

    Чтобы получить 64, нужно, чтобы b было либо 64, либо 64 + 128 * k, где k натуральное число.
    Тебе нужно найти такое значение x, чтобы 3x - 61 = k * 128 + 64
    Отсюда
    3x = k * 128 + 125
    перебирая k, получим k = 2
    3x = 256 + 125
    x = 381 / 3 = 127
    Ответ написан
    1 комментарий
  • Где здесь замыкание? О чем вообще речь?

    Vindicar
    @Vindicar
    RTFM!
    В коде создаётся анонимная функция, которая передаётся как параметр в setTimeout().
    Тело этой функции имеет доступ не только к своим параметрам (в данном случае их нет) и к своим локальным переменным, но и к локальным переменным той области видимости, где эта функция объявлена. В нашем случае это user.
    Ответ написан
    Комментировать
  • Как вывести определённый элемент в json python?

    Vindicar
    @Vindicar
    RTFM!
    Ты пропустил ключ 'users'. А в этом ключе еще один список.
    Вообще структура данных абсолютно всратая, её не прочитаешь даже толком.
    Тебе придётся этот список-users перебирать, и искать в нём элемент словарь, у которого есть ключ с именем нужного пользователя.
    Ответ написан
    Комментировать
  • Не удается запустить демона для связи по ssh?

    Vindicar
    @Vindicar
    RTFM!
    ~/ssh
    Указывай полный путь до исполняемого файла. which ssh в помощь.
    Ответ написан
  • Пишу бота для телеграм (telebot), проблема с асинхронными функциями. В чем причина ошибки?

    Vindicar
    @Vindicar
    RTFM!
    1. await так не пишется.
    x = await asyncio.create_task(startq(message))
    2. Зачем ты делаешь await?
    asyncio.create_task() создаёт корутину, которая будет выполняться конкуррентно с текущей (как бы параллельно)
    await приостанавливает выполнение текущей корутины, пока не завершится вызываемая (справа от await).
    Т.е. await create_task(...) - это не очень осмысленно: сначала запускаешь параллельную корутину, а потом всё равно стоишь и ждёшь её.
    Если тебе нужно запустить корутину startq() и дождаться её выполнения (ну и получить возвращаемое значение) - пиши просто x = await startq(message)
    Если тебе нужно запустить корутину startq() и пусть она дальше выполняется сама по себе, тебе от неё ничего не надо - достаточно будет asyncio.create_task(startq(message))
    Ответ написан
    1 комментарий
  • Как создать свой PL?

    Vindicar
    @Vindicar
    RTFM!
    Даже для простого ЯП тебе придётся решить минимум четыре задачи:
    1. Лексический анализ. Входной текст нужно превратить в цепочку токенов, например z = x + y превратится в что-то типа
    [ (token.IDENTIFIER, 'z'), (token.OPERATOR, '=') (token.IDENTIFIER, 'x'), (token.OPERATOR, '+') (token.IDENTIFIER, 'y') ]

    2. Синтаксический анализ. Тебе нужно превратить цепочку токенов в древовидную структуру. Корень дерева - программа целиком, промежуточные узлы - элементы программы (функции, составные операторы, сложные выражения и пр.), листья - отдельные элементы сложных выражений и примитивные операции без параметров (типа pass в питоне).
    Например цикл while будет иметь два дочерних узла: выражение-условие и тело цикла.
    3. Области видимости. Тебе нужно иметь возможность сопоставить имя(идентификатор) и сущность (переменную, функцию и т.п.).
    Самый простой способ - позволить узлу дерева описывать идентификаторы, которые известны в этом узле. Тогда при раскрытии идентификатора достаточно подняться вверх по дереву, пока не найдёшь нужное имя.
    4. Выполнение. Так как ты хочешь интерпретируемый язык, то выполнение будет сводиться к обходу дерева в глубину. Некоторые операторы типа break могут вмешиваться в этот порядок. Это описывается паттерном Интерпретатор из набора Банды Четырёх.

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

    Vindicar
    @Vindicar
    RTFM!
    open('text1.txt', 'w', encoding='utf-8')
    Относительный путь. Файл сохраняется где-то в текущем рабочем каталоге, а не рядом с исходным файлом.
    Судя по тому, что для исходного файла ты указываешь полный путь, у тебя текущий рабочий каталог не на рабочем столе.
    Раз уж используешь pathlib, сконструируй полный путь для целевого файла, типа
    srcpath = Path(file_path)
    if srcpath.is_file() and srcpath.suffix == '.pdf':
        ...
        with (srcpath.parent / 'text1.txt').open('wt', encoding='utf-8') as file:
            ...
    Ответ написан
    2 комментария
  • Что возвращает sql запрос, если поле пустое?

    Vindicar
    @Vindicar
    RTFM!
    HardX, произойдёт то же самое, как при попытке итерироваться по пустому списку.
    Тело цикла просто не выполнится ни разу, и всё.

    empty_list = []
    print('Before')
    for item in empty_list:
        print('Item:', item)
    print('After')
    Ответ написан
  • Почему телеграм бот не запускает?

    Vindicar
    @Vindicar
    RTFM!
    Потому что ты не думаешь, что ты пишешь.
    message.text.lower() == "Привет"
    Ты сравниваешь строку, которая переведена целиком в нижний регистр (т.е. не содержит заглавных букв) со строкой, которая содержит заглавные буквы.
    Ответ написан
    Комментировать
  • Как прервать цикл в ивенте on_message?

    Vindicar
    @Vindicar
    RTFM!
    discord.py?
    on_message() отрабатывает на ВСЕ сообщения, в т.ч. сообщения от самого бота. Проверяй отправителя сообщения.
    И да, этот момент есть в документации discord.py. Советую её почитать.
    Ответ написан
    Комментировать
  • Как правильно задать json файл?

    Vindicar
    @Vindicar
    RTFM!
    Без примера входных данных смысла решать задачу нет. Пинайте тьютора/поддержку Яндекса, пусть дадут пример файла.
    Конечно, можно попробовать хакнуть систему таким образом:
    with open('input.json', 'rt') as src:
        raise ValueError(src.read())

    Если бот яндекса сообщает текст ошибки, может, удастся таким образом выковырять JSON текст целиком, или хотя бы его часть.
    Альтернативно, можно поковырять так:
    with open('input.json', 'rt') as src:
        data = json.load(src)
    raise ValueError(repr(type(data)))  # вернёт скорее всего <type 'list'>. Закомментируешь эту строку и делаешь:
    raise ValueError(repr(data[0]))  # ну и так далее пока не поймешь, что за структуру данных тебе подсовывают.
    Ответ написан
    1 комментарий
  • Как найти экстремальные значения списка (не максимального и минимального значения в списке) а последовательных экстремальных значений макс/мин?

    Vindicar
    @Vindicar
    RTFM!
    Т.е. для каждого максимума нужно найти такой последующий минимум, чтобы разница между максимумом и минимумом была наибольшей, так? И затем нужно найти наибольшую из всех таких разниц, и соответствующие ей элементы?
    Я бы сделал это примерно так. Не уверен, что сработате сразу, но надеюсь что идея передана.
    equity_result1 = [ ... ]  # твои данные - значения эквити во времени
    # определяем индексы таких элементов, которые больше своих соседей слева и справа.
    local_max_idx = [ i for i in range(1, len(equity_result1) - 1) if equity_result1[i-1] < equity_result1[i] and equity_result1[i+1] < equity_result1[i] ]
    # определяем минимумы для интервалов, следующих за соотв. локальным максимумом
    local_min = [ min(equity_result1[i+1:]) for i in local_max_idx ] 
    # определяем индексы этих минимумов в списке equity_result1 
    local_min_idx = [ i+1+equity_result1[i+1:].index(minval) for i, minval in zip(local_max_idx, local_min) ] 
    # собираем сведения о "перепадах" в один список пар индексов (максимум, минимум)
    differences = list(zip(local_max_idx, local_min_idx))
    # ищем наибольший "перепад" по критерию "разность между значением максимума и минимума"
    i_max, i_min = max(differences, key = lambda item: equity_result1[item[0]] - equity_result1[item[1]])
    # интересующий тебя интервал - между i_max и i_min включительно


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