Ответы пользователя по тегу Python
  • Как сформировать этот код в цикл?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вам необходимо ознакомиться с темой «структуры данных», в частности - словари и списки.
    Также вам надо изучить вопрос «итерация».
    Без этого двигаться дальше бессмысленно.
    response = {'data': ['a', 'b', 'c']}
    sellprices = [response['data'][i] for i in range(3)]
    print(sellprices)
    Ответ написан
    6 комментариев
  • Как сделать проверку символов с возвратом на строку кода?

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

    Например, сделать функцию проверки, скажем check_answer, которая принимает строку ответа и возвращает логическое значение (если всё хорошо, то True, иначе False).
    Затем сделать конструкцию
    while not check_answer(otvet):
        otvet = input()

    и пока check_answer не вернёт True, этот цикл будет повторяться.

    Однако, в вашем коде есть еще много существенных недостатков, которые сильно затруднят вам жизнь.
    • Во-первых, это нумерованные переменные. Вместо них удобно использовать кортеж, список или словарь. Такие структуры можно перебирать в цикле (итерировать) и каждый следующий элемент обрабатывать одним и тем же набором функций.
    • Кроме того, код хорошо бы разделить на функции, например так: если код делает «то, это и вот это», то у вас должны появиться функции «делай то», «делай это», «делай вот это» и еще функция «выполнить программу», изнутри которой находятся вызовы остальных функций и внутри которой каждая функция получает и возвращает в следующие функции обрабатываемые данные и результаты обработки.

    Такую программу проще отлаживать по частям, можно многократно использовать одну функцию, давая ей на вход разные данные, всё будет более стройно и красиво.

    С другой стороны,
    python позволяет всё плотненько скомкать чуть не до пары длиннющих нечитаемых строк, но так делать вам пока не надо.
    Ответ написан
    3 комментария
  • Как импортировать переменные с функциями?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вы должны делать всё наоборот:
    Вам надо работать только в модуле main, и в него импортировать в т.ч. функции из других модулей. Тогда импортированным функциям при их вызове из кода main станут доступны необходимые переменные.
    Лучше всего делать функции так, чтобы они явно получали в параметрах все необходимые им переменные и явно возвращали все результаты через return. Тогда будет меньше риска, что где-то что-то будет происходить «само собой».
    Ответ написан
    Комментировать
  • Увеличение двумерного списка?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Мне кажется, вы неправильно поняли задачу.
    Сделал вам иллюстрацию:
    def enlarge(list_arr, multi=2):
        result = []
        if list_arr in [[''], []]:
            result = list_arr
        else:
            for row in list_arr:
                new_row = ''.join([i*multi for i in row])
                for _ in range(multi):
                    result.append(new_row)
        return result
    
    def print_pic(picture):
        for row in picture:
            print(row)
        print()
    
    
    pic = ['1001', '0011', '0101', '1111']
    print_pic(pic)
    print_pic(enlarge(pic))
    print_pic(enlarge(pic, 3))
    
    print(enlarge(['']))
    print(enlarge([]))
    Ответ написан
  • Как записать ошибки с консоли в txt файл?

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Оно равносильно записи print(5 < 4 > 3)
    или
    print(True == 0 and 0 in [0])
    Ответ написан
    4 комментария
  • Почему не работает код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Очевидно, что split(“\t”) ничего не сможет поделать со строкой '1368050000\nIndia', где нет \t
    Ответ написан
    9 комментариев
  • Как отобразить работу скрипта Python запущенного через systemctl?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Как вариант можно в начале скрипта переобъявить стандартный вывод как вывод в файл, и до окончания работы скрипта все print-в будут выводиться в указанный файл.
    Ответ написан
    6 комментариев
  • Как решить проблему "TimeoutError: [Errno 110] Connection timed out"?

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

    phaggi
    @phaggi Куратор тега 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 комментариев