Ответы пользователя по тегу Python
  • Как нажать кнопку с помощью selenium в стиме?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    вроде нашёл подходящее решение:
    https://pythonturbo.ru/selenium-scraping/

    try:
        element = WebDriverWait(driver, 5).until(
            EC.presence_of_element_located((By.ID, "mySuperId"))
        )
    finally:
        driver.quit()


    Этот код будет ожидать появление элемента с HTML-идентификатором mySuperId и прервёт работу по истечению пятисекундного тайм-аута. Существует множество других типов исключенных условий:

    alert_is_present
    element_to_be_clickable
    text_to_be_present_in_element
    visibility_of


    Вероятно, вам нужно использовать "element_to_be_clickable", но инфа не точная, нужно проверять.
    Ответ написан
  • Ошибка выполнения скрипта, как исправить?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    keyboard interrupt - это значит, что ты остановил выполнение скрипта клавишей ctrl+c или del
    сам скрипт, по-видимому работал нормально.

    Если нет результата работы скрипта, то:
    Либо ты не правильно понимаешь как он должен работать, и какой результат и в каком виде должен предоставить на выходе.

    Либо он устарел/изначально не работал так, как задумано. Обращайся к создателю, или на фриланс.
    Те строки, на которые ты указал - это просто запуск скрипта.

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

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Когда поймал клин в голове, бери бумажку, и пиши задание по-русски на листочек, структурно.

    В данной задаче:

    В классе Player должны быть:
    -Конструктор для установки выбора варианта и имени
    -Значения для конструктора по умолчанию
    -Функция WhoWins принимающая два объекта, и возвращающая строку: "имя победителя" или "ничья".


    Читаешь что написал, сравниваешь со своим кодом, ищешь разницу, устраняешь разницу.
    По одному пункту решай за раз, и делай короткие перерывы каждые 30-40 минут. Удачи.

    Доп литература: Enum, Классы
    Ответ написан
    2 комментария
  • Как добавить в условие переменную?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    У тебя задача не добавить переменную в условие, а сделать так, чтобы переменная была видна в глобальном окружении.
    Сейчас у тебя f создана в функции, и в ней же умерла бесследно.
    Если тебе нужна переменная, то ты либо объявляешь её глобально (не правильно, не надо так делать)
    Области видимости, к обязательному ознакомлению

    Либо возвращай её из функции:
    return f
    не забудь результат исполнения функции присвоить в переменную, которую ты будешь подсовывать в условие во второй функции
    Ответ написан
  • 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256) что делать?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Кодировка сбита, очевидно, нужно искать где она устанавливается/где можно поменять.
    Попробуй на строку повесить .encode(encoding='UTF-8',errors='strict')

    И странно, что сверху строки читаются, а именно эта строка сбита.
    Предлагаю привести её к виду, как и остальные строки
    f"Баланс: {balance}, font = undertext, fill="#ffffff")

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

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Немного лучше чем тебя, но далеко от идеала.
    Общая суть в том, чтобы код был понятен и без вчитывания в конструкции, которые лежат под функциями и переменными. Должна быть возможность прочитать код, и понять что делается в каждом его участке, без вчитывания в саму реализацию. Должно быть понятно, что лежит в переменной, должно быть понятно что принимает и возвращает функция.

    Домашнее задание по улучшению кода - переложить всё нижеописанное в класс, и обработать исключение внутри row_len_check()

    з.ы. Одна функция здесь лишняя, +10 к icq если узнаешь какая и избавишься от неё рефактором.

    def take_input_from_keyboard(message):
        keyboard_input = input(f'{message}')
        return keyboard_input
    
    
    def row_constructor(row_number):
        message = f'Enter the values of your row number {row_number}: '
        rows_values_raw = take_input_from_keyboard(message)
        row = string_array_to_int_array_constructor(rows_values_raw)
        return row
    
    
    def matrix_constructor():
        message = 'Input the count of rows: '
        rows_count = int(take_input_from_keyboard(message))
        matrix = []
    
        for i in range(rows_count):
            row = row_constructor(i + 1)
            row_len_check(row, i)
            matrix.append(row)
    
        return matrix
    
    def string_array_to_int_array_constructor(raw_string):
        int_array = []
        string_array = raw_string.split()
        while len(string_array):
            next_number = int(string_array.pop(0))
            int_array.append(next_number)
        return int_array
    
    def row_len_check(row, iteration):
        """
        if it's first iteration: creating row lenght reference
        if second dnd above: comparasion row lenght with reference
        if row lenght and referece not equal, raise exception
        """
        if iteration == 0:
            global reference
            reference = len(row)
            return
    
        for i in range(len(row)):
            if len(row) != reference:
                raise Exception
        return
    
    def matrix_print(matrix):
        for rows in range(len(matrix)):
            for element in range(len(matrix[rows])):
                element = int(element)
                print(matrix[rows][element], end=' ')
            print()
    
        return
    
    
    def main():
        matrix = matrix_constructor()
        matrix_print(matrix)
    
    
    main()
    Ответ написан
    Комментировать
  • Internal server error code 10, как решить?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    А можно прежде чем теребить живых людей, сначала вставить текст ошибки в гугл, хотя бы чисто формально, для прекола, заголовки поисковой выдачи почитать?
    Более того - попросили вставить полный текст ошибки, его до сих пор нет.

    Но я смог.
    https://www.google.com/search?q=Internal+server+er...
    Первая же строчка гугла:
    https://vk.com/faq11852
    Ответ написан
    Комментировать
  • Как внести код в класс?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    отредактировал, это финальная версия:
    class Message:
        def __init__(self, message):
            self.rs = ['п', 'р', 'и', 'в', 'е','т']
            self.en = ['p', 'r', 'i', 'v', 'e', 't']
            self.ss = (self.rs, self.en)
            self.cc = {r: e for r, e in zip(*self.ss)}
            self.text = message
    
        def translate(self, text):
            trans = ''.join([self.cc[i] for i in text])
            return trans
    
        def show(self):
            print(self.text)
            
        def __repr__(self):
            return self.translate(self.text)
    
    
    chat_message1 = Message('привет')
    chat_message1.show()
    print(chat_message1)


    Все нужные для работы параметры хранятся в классе

    Класс хранит оригинальное сообщение, можем его распечатать методом .show(), а так же можем распечатать сам экземпляр, и благодаря тому, что __repr__ переопределён, он выдаст нам тринслитированное сообщение.
    Если же оригинальное сообщение хранить не нужно, то вместо
    self.text = message
    ...
        def __repr__(self):
            return self.translate(self.text)

    записать
    self.text = self.translate(message)
    ...
        def __repr__(self):
            return self.text

    тогда экземпляр будет хранить уже транслитированное сообщение, и его же отдаст __repr__
    Ответ написан
  • Как метод len заменить функцией?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Это задача на мышление, её нужно было решать самостоятельно.

    Если в тупую - использовать enumerate
    Если чуть умней - в цикле обращаться к += 1 элементу строки до тех пор, пока не выдаст ошибку

    А вообще, если такие простые задачи не идут на ум, надо идти спать, и утром то что вчера не мог понять 3 часа, понимается за 15 минут.
    Так же полезно самостоятельно гуглить. Например: "как перебрать все элементы", и помнить что строка - это массив, но строка, и они на изичах преобразуются одно в другое.
    Ответ написан
    Комментировать
  • Как написать красивый и понятный код?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Красивый и понятный код = читаемый код.
    Нагугли что такое самодокументирующийся код.

    Я сам начинающий, но с чего бы я начал это распутывать:
    area[0][0]["text"] - тут у тебя куча раз написано примерно одно и то же, меняется только 2 числа.
    Легчайшим образом переносится в функцию:
    def x_here(x,y):
        if area[x][y][text] == X:
            return True
        else:
            return False


    тогда одна строка в winner() уже будет вот так выглядеть:

    if x_here(0,0) and x_here(0,1) and x_here(0,2):
        return "X"


    тут у тебя снова есть повторяющиеся элементы
    во-первых, координаты для победы заранее известны
    win_condition_topleft_to_botright = ((0,0),(0,1),(0,2))

    у нас есть кортеж с кортежами. Если в этих координатах везде окажутся иксы - нужно вернуть X (победа). У этого кортежа понятное название (слева вверху к низу справа)

    далее нам нужна функция которая примет это условие победы и проверит его:
    def check_win_condition(first, second, third):  
        """на вход три кортежа, являющиеся координатами игрового поля"""
    
        if x_here(*first) and x_here(*second) and x_here(*third):
            return "X"
    
    def winner():
        check_win_condition(*win_condition_topleft_to_botright)
        check_win_condition(*win_condition_2)
        check_win_condition(*win_condition_3)
        check_win_condition(*win_condition_4)


    И... видишь повторяющиеся элементы? 4 одинаковые строки, в которых меняется только один параметр?
    Ah shit, here we go again

    Ты знаешь что делать. Действуй.
    Ответ написан
    1 комментарий
  • Если число ниже, то cv2.putText красного цвета, если выше, то зеленого, как?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    text_color = (1, 1, 1) #по умолчанию текст красный
    
    if score >10:
        text_color = (2, 2, 2) #если оценка оказалась выше 10, то меняем цвет
    if score > 50:
        text_color = (3, 3, 3) #можно увеличить количество цветов, в зависимости от оценки
    
    cv2.putText(
    img = img,
    text = str(score1),
    org = (0, 50),
    fontFace = cv2.FONT_HERSHEY_DUPLEX,
    fontScale = 2.0,
    color = text_color,
    thickness = 3
    )
    Ответ написан
    Комментировать
  • Как запустить свой код на виртуальной машине на сервере?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    рувеб чекни ещё к списку выше
    Ответ написан
    Комментировать
  • Работа с CSV-файлами в Python?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    представь, что файл представляет собой массив(представь типичный текстовый файл). В этом массиве содержатся другие массивы(строки в текстовом файле). В строках содержатся объекты(буквы/цифры/символы в текстовом файле).
    Читаешь ридером файл, прогоняешь прочитанное через цикл, в строках ищешь объект - нужного тебе автора. Результат записываешь.
    Читай документацию, смотри видеогайды, я не знаю что именно тут объяснять. Когда просишь что-то объяснить, пиши свой ход мыслей, и тут два варианта: либо ты сам найдёшь ответ, пока будешь писать вопрос, либо кто-то подскажет, где именно мышление завело тебя в тупик.
    И не понимать - это нормально, бывало, я тоже тупил, потом забивал, и через пару дней возвращался с новыми силами, и и предмет тупняка уже понимался с полуслова.
    Ответ написан
    Комментировать
  • Что делать при ошибке при переводе через googletrans?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    AttributeError: 'NoneType' object has no attribute 'group'
    Интерпретатор пытается к NoneType применить метод group(), у NoneType нет такого метода, ошибка в этой строке:
    code = self.RE_TKK.search(r.text).group(1).replace('var ', '')
    .group применяется к self.RE_TKK.search(r.text), данными тут является r.text
    если проследить выше, получается что текст был получен сначала из self.token_acquirer.do(text), сюда попал из self._translate(text, dest, src, kwargs), куда был отправлен из translator.translate(_text_, dest=lang), куда был засунут из transl(d, l).

    Судя по тому, что написано в выложенном тобой логе, ошибка возникает из-за не корректного d в transl(d, l)
    Видно, что d у тебя выходит из input с клавиатуры. Инпут из клавы это строка по умолчанию, но никак не NoneType.
    варианты такие:у тебя каким-то образом из input приходит не строка а nonetype, либо где-то в процессе твоя строка превращается в NoneType.

    первое - замени input на любой string, и посмотри, будет ли работать, например: d = 'bridge'

    з.ы. за такой нейминг тебя по рукам будут бить палкой, никому не интересны эти d, l, s, mm, aa, aaaa. Когда разберёшься с проблемой, переименуй переменные в человекочитаемые, приучайся сразу.
    Ответ написан
  • Почему не выводится команда?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Братанчик, я в своё время тоже намучился с саблаймом, и плагины ставил, которые поднимают его до уровня нормального отладчика, но в итоге всё-таки пришлось ставить PyCharm. Поставь и ты, не насилуй себе мозг. PyCharm community бесплатный, не нужно сохранять файлы перед запуском, встроенный отладчик, консоль, живой интерпретатор... но это потом. Сначалда просто привыкни к нему на голом python, потом уже оценишь и остальные фишки, со временем.
    Саблайм это для тех, у кого руки на месте, вот я безрукий, и ты, судя по этому вопросу, примерно на моём уровне, поэтому PyCharm энивей.
    Ответ написан
    Комментировать
  • Как выполнить 2 функции одновременно?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Дружок-пирожок, а ты точно уверен что тебе нужен while True: при проверке клавиш?
    Сам я с интерфейсом ничего не пытался делать, но по логике у тебя мэйн залу... заloop... зациклен! Да, зациклен, вот.
    И по идее, пока мейн не завершится, он постоянно будет и так проверять клавиши, разве нет?
    Пробуй, о результатах отрапортуешь, самому уже интересно.
    Ответ написан
    2 комментария
  • Как в одном классе обявить две переменные Python?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    у тебя ConnectTimeout не было задано ничем. Предположительно, нужно либо task.ConnectTimeout, либо забыл импорт откуда-то, либо дай гитхаб, ибо ничего не понятно. (ну или предоставь исходники всей цепочки импортов)
    Ответ написан
  • Как решить проблему ValueError: bad transparency mask в Pillow?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    судя по всему, у маски не корректный альфа-канал. Возможно, его просто нет, хотя он ожидается.
    попробуй докинуть на накладываемое изображение (оно же "маска") .convert("RGBA") вот так:
    blok = Image.open('ramka1.png').convert("RGBA")

    если не поможет, то в первой строке тоже докинь
    img = Image.open('fon.png').convert("RGBA")
    и в конце возможно понадобится
    img.save("gotov.png", format="png")
    Ответ написан
    Комментировать
  • Как вытащить данные из выплывшего элемента в Python Selenium?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Не знаю как сделать правильно, но если есть проблемы с пониманием как целиться, то можно сделать как я -
    я учился выцеливать элементы через веб-версию selenium(дополнение в браузер), там удобно можно просто мышкой нацелиться на элемент и получить готовый код, потом требуется минимальное редактирование если мышью промазал или нужно уточнение.
    Ответ написан
    Комментировать