Ответы пользователя по тегу Python
  • Ошибка TypeError: 'int' object is not subscriptable в списке, как решить данную проблему?

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Накосячил в том, что не читал документацию API телеграма, не разбирался, а притащил сюда бред от чатжпт и хочешь, чтобы за тебя разбирались.
    Ответ написан
    Комментировать
  • Как записать Словарь в CSV по столбцам в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    У меня ваш код работает отлично. Создает csv с разделителями запятыми, корректно открывающийся в стороннем приложении (например, Numbers на macos).

    Возможно, вам хотелось сделать csv с табуляциями - используйте параметр dialect (описан в документации к библиотеке csv).
    Вот я чуток переделал для примера:
    import csv
    import os
    from pathlib import Path
    
    # Данные из переменной 'a'
    my_row = {
        'url': 'https://www.coindesk.com/policy/2024/08/08/ftx-alameda-ordered-to-pay-127b-to-creditors-by-us-judge/',
        'title': 'FTX, Alameda Ordered to Pay $12.7B to Creditors by U.S. Judge',
        'author': 'Shaurya Malwa',
        'date': 'Aug 8, 2024 at 6:44 a.m. UTC'
    }
    # делаю три строчки для примера массива.
    data = [my_row] * 3
    
    # Имя CSV файла
    dir_path = Path(os.path.dirname(os.path.realpath(__file__)))
    pathname = dir_path / 'data'
    if not pathname.exists():
        os.mkdir(pathname)
    filename = pathname / 'data3.csv'
    
    
    
    # Открываем файл в режиме добавления (append) с возможностью чтения (a+)
    with open(filename, mode='a+', newline='', encoding='utf-8') as file:
        # Создаем объект writer для записи данных в CSV
        writer = csv.DictWriter(file, fieldnames=data[0].keys(), dialect='excel-tab')
    
        # Если файл пустой или только что создан, записываем заголовки
        if not filename.exists() or file.tell() == 0:
            writer.writeheader()  # Записываем заголовки (названия столбцов)
    
        # Записываем строки данных (содержимое столбцов)
        for row in data:
            writer.writerow(row)
    Ответ написан
    1 комментарий
  • Как закрасить объединение или пересечение фигур в turtle?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Если надо именно решить задачу - не надо автоматизировать подсчет. В задаче этого не требуется.
    Рисуете кружочки в этом вашем цикле for x: for y: с шагом вашего scale и считаете глазами.
    Ответ написан
    2 комментария
  • Суть работы метода count в python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вот так будут перекрывающиеся:
    s = 'privetprivetprivet'
    sub = 'privetprivet'
    print(s.count(sub))

    и ответ будет 1
    Ответ написан
    Комментировать
  • У меня скрипт для рассылки друзьям на Python, хочу отправлять сообщения по номеру телефона, но получается только по username, как решить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Элементарно.
    Делаешь общую группу
    «маи самыи лудшыи расылки»
    и туда сразу подписываются все твои друзья. Туда им и пуляешь приглашение.
    Ответ написан
    Комментировать
  • PyCrypto ValueError: Incorrect IV length (it must be 16 bytes long) даже при полном копировании iv?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Да здравствует костылестроение!
    Выкинул всякую ерунду, оставил возню с iv.
    Копипастим строку числел с запятыми после IV (пофиг со скобками или без) и вставляем на запрос
    enter iv :

    from Crypto.Random import get_random_bytes
    import struct
    
    
    def StartEncrypt():
        # Генерация случайного IV (Initialization Vector)
        iv = get_random_bytes(16)
        print(len(iv))
        print(iv)
        # Вывод информации о результате шифрования
        print(f'IV: {struct.unpack("b"*len(iv), iv)}')
        
    
    def StartDeCrypt():
        # IV, полученный при шифровании
        data = input("enter iv :")
        for item in ['(', ')']:
            data = data.replace(item,'')
        str_iv = tuple(map(int, data.split(',')))
        print(str_iv)
        iv = struct.pack('b'*len(str_iv), *str_iv)
        print(iv)
        print(len(iv))
        
    StartEncrypt()
    StartDeCrypt()

    16
    b'?\x06\x8f\xe9\xde!\xa0\xa8\x07\xfc\xb9\x1b\xb2X\x1e\x96'
    IV: (63, 6, -113, -23, -34, 33, -96, -88, 7, -4, -71, 27, -78, 88, 30, -106)
    enter iv :63, 6, -113, -23, -34, 33, -96, -88, 7, -4, -71, 27, -78, 88, 30, -106)
    (63, 6, -113, -23, -34, 33, -96, -88, 7, -4, -71, 27, -78, 88, 30, -106)
    b'?\x06\x8f\xe9\xde!\xa0\xa8\x07\xfc\xb9\x1b\xb2X\x1e\x96'
    16
    Ответ написан
    Комментировать
  • Как сделать так, чтобы телеграмм бот отвечал определенным сообщением на неопределенное?

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

    ЕВПОЧЯ.
    Ответ написан
    Комментировать
  • Парсинг виджета AppEvent через GColab?

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

    Есть два пути:
    • Разбираться, что за код загружается, и как-то его пытаться выполнить, или сгенерировать запросы, которые этот код шлет;
    • либо использовать управление браузером, который это всё проделает. Типа webdrive (Selenium и т.п.)


    Ну и еще пользоваться поиском, подобный вопрос задают тут раз в неделю уже который год.

    P.s.: Вроде бы есть какие-то библиотеки типа requests_html, якобы умеющие в JS, поищите.
    Ответ написан
    2 комментария
  • Как вставить фото через ссылку в телеграме не отображая ссылки?

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

    В этом примере используется отправка объекта по URL в телеграм.
    Об это подробнее почитайте тут

    Но у вас в коде написано bot.send_message(…)
    bot это очевидно экземпляр класса, а .send_message(…) его метод. Очевидно, внутри этих класса и метода спрятаны механизмы отправки, подобные описанным выше во второй ссылке.

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

    Тогда у вас будет два варианта:
    Вы обнаружите, что в вашем боте всё прекрасно и осталось лишь правильно передать объект изображения, тогда смотрите первую ссылку.
    Вы обнаружите, что в вашем боте надо дописать специальный метод для отправки именно таких объектов, тогда дописываете на основе первой ссылки с учетом сведений из второй ссылки.
    Также имеет смысл почитать API телеграм, там могут быть какие-то уточнения относительно сведений по ссылкам, может уже что-то поменяли.
    Ответ написан
    Комментировать
  • Как создать offline карту на python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Надо нанять профессионала, заплатить ему аванс и дать ему задание. Затем получить результат и проверить на соответствие заданию. После доведения результата до финального соответствия заданию оплатить расчет.
    Ответ написан
    Комментировать
  • Как исправить ошибку "AttributeError: 'set' object has no attribute 'items'" в дискорд-боте?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В вашем коде несколько ошибок, одна из них - в качестве headers ожидается структура типа «словарь» («dict»), а вы создаете тип «множество» («set»).
    Должно быть что-то вроде:
    headers = {'user-agent': 'my-app/0.0.1', 'token': 'Токен есть если что'}

    и так далее, это прям из документации по requests

    Вторая ошибка - for lines in lines:
    очевидно надо что-то вроде
    for line in lines:
        …json = {"content": line}


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

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вероятно, никогда не выполняются условия if-ов.
    Ответ написан
    Комментировать
  • Как добавить новую пару в существующий словарь Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    С телефона не осилил код, но в общем случае добавлять надо так:
    my_dict = {“key”: “value”}
    my_dict.update({“new_key”: “new_value”})
    Ответ написан
  • 'NoneType' object is not iterable, что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Элементарно, Ватсон:
    Метод .remove() всегда возвращает None.
    Ответ написан
    2 комментария
  • Как улучшить код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Улучшить можно по разным направлениям.
    • С одной стороны, новые версии python предоставляют новые возможности, которые могут позволить сделать код плотнее и аккуратнее, к примеру заменить гирлянды if/elif на match/case.
    • С другой стороны, можно доработать надежность программы, обработав крайние случаи, потенциальные ошибки и др.
    • С третьей стороны - рефакторинг по подобным друг другу фрагментам, где делается практически одно и то же, к примеру функции про рестарт практически однотипны и можно свести к одной функции с набором параметров.
    • А можно рефакторить еще глубже, сделать класс типовых приложений, обладающий типовыми методами, от него наследовать каждое приложение вашей программы, ну и всё вот это вот ООП и т.п.
    • Можно все текстовые строки вынести в файл статики и оттуда подтягивать, и если хорошенько подумать, то еще и сделать возможность выбора языка.
    • А еще обвешать всё юнит-тестами.

    Да мало ли…
    Глубоко не вчитывался, но есть над чем поработать.
    Ответ написан
    1 комментарий
  • Как сделать случайную генерацию мира в pygame?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Есть два подхода - готовые уровни и генерация уровней.

    В конкретном случае судя по коду у вас готовый уровень и парсер готового псевдографического уровня. Т.е. ваш код разбирает ранее сделанную строчную псевдографику и переводит ее в объекты, экземпляры классов.

    Для генерации рандомных миров должно быть наоборот: экземпляры классов генерятся с определенными параметрами, включая координаты, а затем отображается псевдографическая «карта» с нанесением этих заранее сгенеренных объектов.

    В общем случае вам надо копать тему «процедурная генерация уровней». На эту тему очень много уже наработок, нет смысла изобретать свой велосипед.

    Рекомендую искать и читать о процедурной генерации псевдографических уровней игр. Там не всё вам подойдет прям «в лоб», но кое-что будет полезным.
    Ответ написан
    Комментировать
  • Ничего не понятно, что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Всё как написано в коде:
    • Выбрать случайного персонажа
    • Выбрать случайное сообщение
    • В цикле отправить выбранному выбранное n раз.

    А вам надо в цикле в каждой его итерации выбирать случайного персонажа и случайное сообщение, и тут же отправлять.
    Ответ написан
    2 комментария
  • Как в цикле менять название объекта/переменной?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Если у вас в коде появились именованные переменные, вам скорее всего нужны списки или словари.
    Ответ написан
    5 комментариев