• Почему перестали работать postgres запрос в Python?

    @o5a
    Ругается именно на то, что внутри одного with conn запустили еще один with conn. Проверьте свой код.
    Судя по документации и гуглящимся отзывам эту ошибку стали выдавать с версии 2.9, так что возможно раньше просто запускали на более старой версии, поэтому не встречали.
    Ответ написан
    Комментировать
  • Почему возникает ошибка "can only join an iterable" при повторном прохождении цикла? И как сравнить имя пользователя с именем ключа словаря?

    @o5a
    Так там join вообще не нужен, у Вас же в этом dic[key] хранятся просто целые числа.
    join используется для объединения последовательностей (список, кортеж, буквы из строки и т.п.) в одну строку.
    scoreN = dic[key]
    и в подобных местах, где строка, тоже заменить на число:
    dic[polsovatel.name] = 0
    Ответ написан
  • Как исправить ошибку импорта PyAutoGUI?

    @o5a
    Ответ написан
    Комментировать
  • Как извлечь IPv4 адреса из файла и сохранить их в другой средствами Python?

    @o5a
    Скорее всего проблема в самом поиске.
    Вместо поиска просто regexp IP по всей строке (re.search, re.findall) Вы пытаетесь разбить ее на слова:
    wordList = item.split()
    Но это же разбивает по пробелам. А если пробелов нет, то ничего и не найдет, тем более, что на пробелы заменяете только [',', ';']. Если в дампе строка например
    insert into .... values ('1.1.1.1','5.5.5.5')
    то он их и не найдет.
    Проще брать всю строку и искать через re.findall (сам шаблон такой же оставить).
    Ответ написан
  • Спрайт снаряд после выстрела поворачивается по направлению другого спрайта(танка). Не знаю почему так происходит?

    @o5a
    Как уже заметили в комментариях, проблема в том, что для прироста положения снаряда (вектора скорости) используется одна и та же глобальная переменная. Поэтому при обновлении все снаряды изменяют вектор на одинаковый. Нужно было использовать локальный аттрибут каждого снаряда для хранения скорости (фиксированный на момент создания, как я понимаю скорость и направление уже не должна меняться).
    Навскидку вижу можно просто сделать так:
    ...
        class Projectile(pygame.sprite.Sprite):
            def __init__(self, weigth, heigth, corner):
                ...
                # добавляем каждому снаряду свою скорость. вычисляем поворотом на передаваемый угол
                self.projectile_speed = pygame.math.Vector2((4, 0)).rotate(-corner)
    
            def update(self):
                # и тут соответственно используем вектор скорости собственный для каждого снаряда
                self.projectile += self.projectile_speed

    spoiler
    Еще заметил, что английские названия ошибочны
    heigth => height (высота)
    weigth => weight (вес)
    видимо имелось в виду width (ширина)
    corner - в английском тоже значит "угол" но это не тот угол (как угол поворота), а как угол квадрата, угол комнаты.
    для угла как направления используется angle
    see = "видеть", наверное имелось в виду sea = "море".
    Не критично конечно, но лучше привыкать к правильным названиям, чтобы у других изучающих код потом не возникло недопонимания.
    Ответ написан
    1 комментарий
  • Как перемешать двумерный список?

    @o5a
    random.shuffle() - перемешивает одномерный массив.

    Можно просто пройтись по строкам массива (двумерного списка) и применить к каждой shuffle. Затем применить shuffle к самому массиву.

    Это если в изначальном запросе подразумевается равномерное перемешивание элементов по всему массиву.
    Ответ написан
    Комментировать
  • Почему не двигается объект в pygame?

    @o5a
    Потому что сравниваете координаты не объекта hunter_1, а не связанные с ним координаты
    if hunter_pos_y < pos_y_rand:
            hunter_pos_y += 1

    когда должно быть примерно так
    if hunter_1.y < pos_y_rand:
            hunter_1.y += 1

    Аналогично и координаты целей (pos_y_rand). Сейчас координаты охотника сравниваются просто с этой рандомной точкой каждый раунд, а не с координатами реального объекта - цели.
    К тому же этот самый hunter каждый цикл создается заново, хотя по логике предполагаю он должен быть только 1.
    Т.е. создание объекта hunter нужно вынести наружу цикла, а координаты проверять по аттрибутам объекта, его же и двигать.
    Во-вторых, эти цели (звёзды?) в текущем виде нигде не сохраняются, каждый цикл предыдущие объекты-цели перезаписываются, остается только их изображение на экране. Т.е. координаты ранее созданных целей взять будет негде. Если все же логика работы была - ходить за этими целями, то их нужно хранить (самое простое - добавлять к списку).
    Ответ написан
    3 комментария
  • Слияние файлов exel и csv с использованием pandas?

    @o5a
    Если речь про то, что первая строка получает названия "Unnamed ...", то это потому что пытается определить названия колонок, а их нет. В данном случае проще всего отключить заголовки вообще, добавив во все функции (загрузка файлов и выгрузка) header=None
    file_csv = pd.read_csv("temp", header=None)
    Ответ написан
    Комментировать
  • Не могу пройти задание в Сheckio, что делать?

    @o5a
    Гуглится похожая ошибка: https://py.checkio.org/forum/post/14529/httpspyche...

    Судя по всему тестер ожидает, что текущее решение миссии будет как бы продолжением предыдущей. Как в их случае, функция fight должна остаться от предыдущего решения. Возможно Вы тоже избавились от этой функции или сделали какое-то похожее изменение.
    Ответ написан
    Комментировать
  • Почему у модуля telebot нету класса types?

    @o5a
    pip uninstall telebot
    pip uninstall PyTelegramBotAPI
    pip install PyTelegramBotAPI

    и библиотеку telebot не надо больше пытаться ставить, правильная PyTelegramBotAPI
    Ответ написан
    Комментировать
  • Python. Как проверить, существует ли таблица в БД?

    @o5a
    Если просто проверить наличие таблицы, то можно запросом
    select * from pg_tables where tablename = 'value_result'

    Если же нужно именно ругаться, когда таблица не создалась или когда запись не получилась, то можно использовать try .. except с отловом конкретного кода ошибки
    try:
        cursor.execute(create_table_query)
    except НужноеИсключение:
        print("таблица уже существует")

    Какие конкретно исключения используется я навскидку не знаю, можно посмотреть в документации:
    https://www.psycopg.org/docs/errors.html
    или вывести опытным путем
    except Exception as e:
        print(e)
    Ответ написан
    Комментировать
  • Как не генерировать пароль который уже был в сгенерирован?

    @o5a
    Чтобы найти "все возможные пароли длины N без повторов" из набора символов можно сразу использовать itertools.product
    from itertools import product
    
    symbols = 'abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_'
    result = list(product(symbols, repeat = N))

    Выдаст список кортежей наборов букв каждого пароля, к ним можно применить ''.join() для полноценной строки.
    Только учтите, что это большие объемы, т.к. кол-во возможных паролей будет определяться
    len(symbols) в степени N
    Ответ написан
    Комментировать
  • Как выбрать значения, которые были загружены день назад от даты в таблице?

    @o5a
    c.execute("select * from mytable where date < date('now', '-1 day')")
    Ответ написан
    Комментировать
  • Почему не итерируется?

    @o5a
    Александр, ошибка с Nonetype означает, что у каких-то из найденных тэгов <a> отсутствует href, в результате в список записывается None, т.е.
    alllist = ['url1', 'url2', ..., None, ... ]
    Само по себе это не было бы проблемой в списке, но writerow предполагает, что каждый элемент - это список данных (список колонок для csv), а передаете просто строку, поэтому он пытается ее итерировать (т.е. строки он будет записывать побуквенно через разделитель). А None итерировать он уже не может, поэтому и ругается.
    Поправить можно так:
    for line in allurl:
        writers.writerow([line])

    Можно сразу делать проверку, что href есть, чтобы не пихал пустые значения в список.
    Ответ написан
    Комментировать
  • Как сделать так чтобы при вычитании не уходило в минус?

    @o5a
    Если вопрос в том, как не уходить в минус (независимо от того, что вычитаем), то можно так:
    player2['oranges'] = max(player2['oranges'] - kick, 0)
    Ответ написан
    Комментировать
  • Как обновить все записи по списку id?

    @o5a
    Если производительность не критична (список id не особо большой), то можно просто использовать executemany (он по факту запускает отдельные update, но автоматом по списку).
    cur.executemany('update mytab set status = 1 where id = ?', ((id, ) for id in idlist) )

    Для лучшей производительности правильнее будет использовать 'update ... where id in (...)', формируя запрос форматированием с передачей параметров, но там тоже свои особенности.

    P.S. не заметил тэг SQLalchemy. Если нужно именно для нее, тогда ответ не подойдет :)
    Ответ написан
    Комментировать
  • При использовании range( ), через N-ное количество циклов падает скорость?

    @o5a
    Потому что в целом подход неправильный. Вы каждый цикл создаете новый объект и просто его отрисовываете поверх других, сдвигая каждый раз на новую величину.
    Вместо этого нужно 1 раз создать свой Circle и его уже потом двигать (и двигать соответственно не на i, а на одинаковое фиксированное значение (если ожидается равномерное движение).
    И наверное в цикл стоит добавить задержку в виде time.sleep(0.01)
    obj = Circle(Point(150, 20), 15)
    obj.setWidth(1)
    obj.draw(win)
    
    def down():
        for i in range(250):
            print (i)
    
            obj.setFill("yellow")
            obj.move(0, 1)
            time.sleep(0.01)
    Ответ написан
    Комментировать
  • Не работает удаление строки из таблицы базы данных sqlite3 в python. Что делать?

    @o5a
    Алихан Мулаев, если при этом не забываете commit, значит скорее всего такого rowid в таблице нет или есть, но не у той строки, что предполагаете. Лучше не полагаться на rowid, а использовать явные критерии или конкретный первичный ключ.
    Ответ написан
    Комментировать
  • В какую строку кода надо добавить lower?

    @o5a
    if msg.text.lower().startswith('инфа'):
    Ответ написан
    Комментировать