Ответы пользователя по тегу Python
  • Как подсчитать кол-во подобранных паролей на Python?

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

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


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

    А, да! Ещё надо писать код. 3 часа в день будет идеально. Каждый день.
    Ответ написан
    Комментировать
  • Как достать строку из листа?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Во-первых, не советую использовать слово list как имя переменной - это имя используется как имя встроенного типа «список».
    Во-вторых, список это и есть в некотором роде массив, к элементам которого можно обращаться по индексу (именно так, как вы показали - по номеру элемента в скобках). Нет смысла перемещать его содержимое в другой массив, если только это не условие задачи или обусловлено какой-то очень специфической задачей (для использования математических и статистических пакетов).. Задачи тут не решают.
    В-третьих, очень рекомендую вначале изучить структуры вообще и начала языка Python в частности, а потом браться за вот это вот всё. Сэкономит вам время.
    Ответ написан
    Комментировать
  • Как создать объект для класса через функцию def?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Созданный экземпляр класса надо вернуть из функции при помощи return. А результат выполнения такой функции присвоить нужной вам переменной.
    spoiler
    Есть вариант через глобальные переменные, но это вообще зашквар и лучше так никогда не делать.
    Ответ написан
  • Не устанавливается portaudio в чем проблема?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Соберитесь с духом. Поднимите глаза на верх сайта. Там строка поиска. Введите pyaudio. Нажмите Enter. Изучите результаты выдачи.

    Вопросов по pyaudio и всем, что с ним связано, и ответов - кучи. Каждую неделю задают одно и то же.
    Ответ написан
    Комментировать
  • Как переобразить числа из 1000 в 1к?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    А можно сколхозить в несколько строчек свой
    велосипедик...
    class KiloNum:
        def __init__(self, value, round_val=None):
            if any([isinstance(value, float), isinstance(value, int)]):
                if round_val is None:
                    round_val = 3
                self.round_val = round_val
                self.value = value
                self.kilo = self.make_value(3)
                self.mega = self.make_value(6)
                self.giga = self.make_value(9)
    
        def make_value(self, key):
            numbers = {3: 'K',
                       6: 'M',
                       9: 'G'}
            return ''.join([str(round(self.value / 10 ** key, self.round_val)), numbers[key]])
    
        def __repr__(self):
            return f'{myvalue.kilo},\n{myvalue.mega},\n{myvalue.giga}'
    
    
    myvalue = KiloNum(34500101112)
    print(myvalue)
    print(myvalue.giga)
    Ответ написан
    1 комментарий
  • Как распарсить первый 'слой' строки 'struct'?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Я не приходя в сознание наклепал свой велосипед на костылях, он делает что-то похожее.
    Простите за чудовищно кривой код... мне очень стыдно.
    spoiler
    import re
    from pprint import pprint
    
    
    def replace_old_struct(struct):
        changes = {'struct<': 'dict(',
                   'array<': 'list(',
                   '>': ')',
                   ':': ': ',
                   ',': ', '}
        for key in changes:
            struct = struct.replace(key, changes[key])
        return struct
    
    
    def set_mark(struct, patterns):
        for pattern in patterns:
            regex = re.compile(pattern)
            words = set(regex.findall(struct))
            for word in words:
                repl = f"'{word}'"
                struct = struct.replace(word, repl)
        return struct
    
    
    def pair_rbracket(struct: str, rbracket):
        counter = 0
        for number, symbol in enumerate(struct):
            if symbol == '(':
                counter += 1
            elif symbol == ')':
                counter -= 1
            if counter < 0:
                return struct[:number] + rbracket + struct[number + 1:]
    
    def pair_lbracket(struct, lbracket):
        return f'{lbracket}{struct[1:]}'
    
    def pair_brackets(struct, struct_type='dict'):
        changes = {'dict': {'(': '{', ')': '}'},
                   'list': {'(': '[', ')': ']'}}
        lbracket = changes[struct_type]['(']
        rbracket = changes[struct_type][')']
        if struct[0] == '(':
            struct = pair_lbracket(struct, lbracket)
            struct = pair_rbracket(struct, rbracket)
        return struct
    
    
    def set_struct(struct, struct_type):
        structs = struct.split(struct_type, 1)
        structs[1] = pair_brackets(structs[1], struct_type)
        return ''.join(structs)
    
    
    def replace_struct(struct, struct_type):
        for _ in range(struct.count(struct_type)):
            struct = set_struct(struct, struct_type)
        return struct
    
    
    if __name__ == '__main__':
        data = ('food',
                'struct<Milk:array<struct<id:string,type:string>>,Oil:string,batter:array<struct<id:string,type:string>>>')
        my_struct = data[1]
        patterns = [r"([\w]+)\:", r"\: ([\w]+)\)"]
        struct = set_mark(replace_old_struct(my_struct), patterns)
        struct_types = ['dict', 'list']
        for struct_type in struct_types:
            struct = replace_struct(struct, struct_type)
        struct = eval(struct)
        pprint(struct)

    Хотел рефакторить, переделать покрасивее, в класс, как у старших товарищей, но уже спатеньки хочется...
    Ответ написан
    1 комментарий
  • Как я могу создать данного бота?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
  • "Лишние" лог-данные в python-скрипте при выполнении через командную строку Windows. Можно ли убрать?

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


    Вот мои потуги поотключать всё что можно.
    os.environ['WDM_LOG_LEVEL'] = '0'
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    chrome_options = Options() chrome_options.add_argument('--headless')
    browser = webdriver.Chrome(ChromeDriverManager(print_first_line=False).install(), options=chrome_options)
    Ответ написан
  • Почему не работает поиск уникального числа в списке?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Попробуйте по-другому. Получите уникальные элементы списка посредством множества (set) и затем посредством метода .count() для списка посчитайте, сколько раз встречается каждый уникальный элемент из множества в вашем списке. Элементы, для которых .count вернёт 1, и есть уникальные.
    def print_unic_elements(arr):
        [print(i) for i in set(arr) if arr.count(i) == 1]
    Ответ написан
  • Как менять прокси для каждого запроса при парсинге?

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

    Коротко говоря: при помощи dict, list, tuple, zip и for можно:
    сложить все исходные адреса проксей в список;
    В ходе обработки одной функцией get пройтись по списку и полученные результаты можно затем при необходимости либо zip-ом сцепить с исходным списком, либо в словарь, либо ещё как-то, в зависимости от дальнейшей цели.

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

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    У вас словарь из ключа и значения. В качестве значения у вас экземпляр класса pyrogram.raw.types.ChannelForbidden с определенными в круглых скобках параметрами. Среди этих параметров у вас есть id.
    Но получить этот параметр в лоб нельзя. Он для этого не предназначен.

    Вот если бы raw.update возвращал бы строку, её можно было бы распарсить. Но по вашему примеру он возвращает словарь с экземпляром класса в качестве значения…

    В принципе, если бы мы точно знали бы, что ключ словаря всегда равен id, можно было бы как-то так:
    data = {1448413438: dict(id=1448413438, access_hash=8335995624985435932, title='N', broadcast=True, megagroup=False)}
    keys = [*data.keys()]
    print(data[keys[0]])

    Но мы не знаем точно, всегда ли id равно ключу…
    Ответ написан
    Комментировать
  • Существуют ли какие-нибудь фреймворки для работы с Selenium Python?

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Разница в том, что это разные объекты. Соответственно, при внешней похожести ты перебираешь элементы разных составных объектов. В первом случае ты перебираешь элементы списка list_of_data, а во втором - элементы производного списка.
    Это, на мой взгляд, основное и существенное отличие.
    Ответ написан
    2 комментария
  • Как вывести многострочные переменные в одну строку в python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Исправил
    алфавит
    A = """  
      A  
     A A 
    A   A
    AAAAA
    A   A
    A   A
    A   A
    """
    
    B = """
    BBBB 
    B   B
    B   B
    BBBB 
    B   B
    B   B
    BBBB 
    """
    
    C = """
     CCC 
    C   C
    C    
    C    
    C    
    C   C
     CCC 
    """
    
    D = """
    DDDD 
    D   D
    D   D
    D   D
    D   D
    D   D
    DDDD 
    """
    
    E = """
    EEEEE
    E    
    E    
    EEE  
    E    
    E    
    EEEEE
    """
    
    F = """
    FFFFF
    F    
    F    
    FFF  
    F    
    F    
    F    
    """

    и накарябал печаталку:
    import alphabet_ascii as alfabet_ascii
    
    alph = {'A':alfabet_ascii.A,
    'B': alfabet_ascii.B,
    'C': alfabet_ascii.C,
    'D': alfabet_ascii.D,
    'E': alfabet_ascii.E}
    
    def make_symbols(symbols):
        lines = []
        for number, _ in enumerate(alph['A'].splitlines()):
            line = [alph[symbol].splitlines()[number] for symbol in symbols]
            line = ' '.join(line)
            lines.append(line)
        text = '\n'.join(lines)
        return text
    
    print(make_symbols('ABCDE'))
    Ответ написан
    1 комментарий
  • Какое регулярное выражение нужно использовать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Можно так:
    import re
    word = 'Бб-01-21оп'
    regex = '([\d]{2})оп'
    print(re.findall(regex, word)[0])

    но лучше никакого… с этими регекспами не знаешь, чего ожидать.
    Ответ написан
    1 комментарий
  • Как не повторять рандомный вывод со списка?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    import random
    previous = ''
    a = ''
    for i in range(15):
        while a == previous:
            a = random.choice(["вперед", "назад", "вверх", "вниз"])
        previous = a
        print(a)
    Ответ написан
    3 комментария
  • Как убрать дробную часть, не округляя число?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    «В лоб» можно так:
    data = [0.15771428571428572,
    0.20152380952380952,
    0.19123809523809523]
    for i in data:
        i = (i // 0.1) * 0.1
        print(i)
    Ответ написан
    Комментировать
  • Как в discord_slash добавить кнопки на Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Судя по ошибке, код пытается обратиться к объекту component как к словарю, а там - список.
    Почему так происходит? Возможно, тут components=[row]лишние квадратные скобки.

    Возможно, функция create_actionrow(btns) должна возвращать другой тип (сейчас возвращает список чего-то, надо посмотреть внимательно).
    Ответ написан