Ответы пользователя по тегу Python
  • Можно ли оптимизировать этот код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Оптимизировать код можно следующим образом:
    Правильным образом поименовать функции и переменные, в соответствии с правилами, принятыми в языке.
    Разделить функцию на несколько маленьких функций, чтобы каждая отвечала за одно действие. Каждая функция должна называться глаголом, обозначающим это действие.
    Я внимательно не вчитывался, но у меня есть сомнения по поводу правильности кода: как он себя поведёт, если # будет внутри строки?
    Для чего используется конструкция sys.exit(2)? Компилятор должен падать с ошибкой?
    Ответ написан
  • Есть ли в питоне модуль в котором есть статический лист?

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Элементарно, Ватсон.
    В первом варианте вы объявляете новую переменную a внутри функции. И она там и остается, не затрагивая глобальную переменную.
    a = 1 
    def aaa(a):
        a = 2
    
    aaa(a)
    print(a)
    Ответ написан
    Комментировать
  • Как сделать список в операторе?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вместо списка используйте множество, также преобразуйте фразу в множество и делайте пересечение множеств. Если не нулевое - значит слово из фразы присутствует в множестве.
    Но это всё равно слабый механизм. Словоформы не проверяются…

    Ну и, конечно, до ИИ этому всему как до Юпитера пешком
    Ответ написан
    Комментировать
  • Как встроить в код selenium, что бы нажимать на кнопку прокрутки?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вы всё перепутали. BS4 ничего не листает. Это просто разбиралка полученного html-кода. Вообще Парсинг - это просто разбор текста, ничего более. То, что вы называете Парсингом, - общение с сервером и передача ему команд и получение ответов - это не Парсинг.

    Это удобно делать в webdriver, а selenium - более высокоуровневая обертка к webdriver. Так вот вам надо бы освоить selenium (у него неплохая документация с примерами), а потом бросаться «парсить».

    Иначе вам удачи не видать. С каждым чихом сюда не набегаетесь.

    Что касается сути вопроса - можно посредством selenium передавать символы PGDOWN и это будет листать страницу столько раз, сколько передадите. Вот вам и прокрутка.

    Есть и другие варианты, не ленитесь искать. Тут этот вопрос задавали неоднократно, да и в сети полно вариантов.
    Ответ написан
    Комментировать
  • Как исправить ошибку pybit.exceptions.InvalidRequestError: Position idx not match position mode (ErrCode: 130001)?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Мало добавить передачу параметра в функцию. Надо в заголовке функции этот параметр указать, чтобы функция ожидала этот параметр.
    Поскольку параметр не обязательный, можно это организовать через **kwargs если вы понимаете о чем я. Или через указание значения по-умолчанию None и опять же дальнейшую обработку если не None.
    А также добавить внутри функции правильное применение этого параметра, если он передан в функцию - в данном случае передачу его как параметра в метод .place_active_order(), который в функции вызывается
    Ответ написан
    Комментировать
  • Как посчитать количество подходящих x?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    print(len([x for x in range(1,101) if not (x%4 or x%3)]))
    Ответ написан
  • Имя функции совпадает с именем переменной, ничего страшного не будет?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Есть рекомендации для именования функций. Среди них - использовать в качестве имени или части имени функции глагол, обозначая, что будет делать функция. А переменной имеет смысл дать имя - существительное.
    Таким образом, например, у вас может выглядеть как-то так:
    def set_bet_value(message): # bet - ставка
        bet_rub = int(message.text)


    Не стоит экономить на буковках, больше буковок - понятнее код
    Ответ написан
    Комментировать
  • Проблемы с локальной переменной в питоне?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Нюанс в том, что функцию check вы явно не вызываете. Вы её передаёте как аргумент в другую функцию или метод. И вот там, в этой другой функции, область видимости, в которой объявлена проблемная переменная, не видна.

    Вообще, это очень грязный вариант - глобальные переменные и вся эта возня. Делайте чистые функции, которые только явно принимают переменные и только явно возвращаются результат.
    Ответ написан
    Комментировать
  • Как определить максимальное число не используя функцию max?

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

    Ну и на сладкое - вы получаете из input строку. Просто перебирайте её циклом и каждый следующий элемент превращайте в int. Это вместо шаманства с делением на 10 и остатков.
    Ответ написан
    9 комментариев
  • Как разделить файл на две части по символам?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Используйте срез. Для такого небольшого объема, как 7К символов всё это можно делать прямо в памяти.
    1. Загружаете файл в память как строку.
    2. Сохраняете в новый файл срез до половины (длина строки // 2)
    3. Сохраняете в следующий файл срез от половины.

    Всё.
    Ответ написан
  • Как задать несколько значений одной команде?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    На мой взгляд, с учетом предложенного условия это возможно, только если в слове BACK некоторые символы сделать другими, например K латинскую заменить на К кириллическую.
    Других вменяемых путей получить два внешне одинаковых, но по сути разных текста я не вижу.
    Ответ написан
    Комментировать
  • Почему нету функции .click() в Appium WebDriver?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Метод .find_element_by_id ничего не находит, возвращает None
    А у объекта None нет метода .click

    Тут есть два пути:
    Если в принципе возможно, что оно ничего не найдет, то надо эту ситуацию проверять и обрабатывать отдельно.
    Если такого быть не может, надо разбираться, как правильно сформировать локатор для поиска.
    Ответ написан
    Комментировать
  • Почему не считаются символы в строке?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ошибка в том, что не используется result в цикле for

    Ну и накорябал свой велосипед:
    result = {'цифр': [0, None], 'букв': [0, None]}
    text = input('Введите текст: ')
    for key in result:
        result[key][1] = input(f'Какую {key}у ищем? ')
    for symbol in text:
        for key in result:
            result[key][0] += int(symbol == result[key][1])       
    for key in result:
        print(f'Количество {key} {result[key][1]} : {result[key][0]}')
    Ответ написан
  • Как структурировано разбить скрипт по файлам/папкам?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    • Функция - это действие (т.е. глагол)
    • Класс - это, грубо говоря, таблица, где строки - экземпляры класса, а поля (столбцы) - типовые для этого класса атрибуты, описывающие каждый экземпляр.
    • Методы класса - встроенные в класс функции, привязанные к экземплярам и призванные менять их атрибуты.


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

    По файлам всё это можно разложить, например, так, как в веб-фреймворках:
    Файл «шаблоны», файл «модели данных», файл «логика», папка «админка», папка «статика», папка «конфиги».
    Ответ написан
    Комментировать
  • Почему не работает IF-ELSE?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    lock = 5
    tries = 5
    key = -1
    
    while tries:
        tries -=1
        key = int(input('Введите число: '))  
        if key == lock:
            print(f"поздравляю, вы выиграли, потратив {5-tries} попыток!")
            break  
        print(f'осталось {tries} попыток')
    else:
        print('проигрыш!')

    Не подглядывая к Vindicar накарябал почти то же самое :)
    Ответ написан
    4 комментария
  • Требуется перебрать список и получить последовательности со значениями больше 0. Как?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    lst = [0, 7, 1, 0, 4, 2, 5, 4, 0, 9]
    result = []
    seq = []
    for item in lst:
        if item:
            seq.append(item)
        elif len(seq) > 1:
            result.append(seq)
            seq = []
    print(result)

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Необходимо рефакторить код, разделить его по функциям. Подготовка логина/пароля - одна функция, запрос - другая функция, обработка результата - третья.
    Кроме того, надо сделать функцию, которая будет в цикле делать запросы, вызывая нужные функции в нужном порядке, считать количество запросов и, когда насчитает нужное количество циклов, сбрасывать счетчик и вызывать что-нибудь вроде
    pause_int_seconds = 5
    time.sleep(pause_int_seconds)
    Ответ написан
    Комментировать
  • Как исправить неправильное сложение десятичных дробей при помощи sympify в Python?

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

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