• Как исправить ошибку в присвоении переменной?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    в строке
    for code in store:
    вы перебираете ключи словаря.
    затем, получив очередной ключ в переменную code, вы в строке
    price_1 = code['price']
    обращаетесь к тому, что находится в code, и пытаетесь найти элемент его по индексу "price".
    Но в code находится ключ, и он - строка. Об этом вам и говорит ошибка - так со строкой работать нельзя.

    Для того, чтобы правильно всё сделать, можно попробовать так:
    for name in goods:
        code = goods[name]
        print('Название товара:', name, '    Его код:', code)
        for code in store:
            price_1 = store[code][0]['price']
            quantity_1 = store[code][0]['quantity']
            summ = price_1 * quantity_1
            print('полная стоимость товара:', summ)

    или так:
    for name in goods:
        code = goods[name]
        print('Название товара:', name, '    Его код:', code)
        for code, value in store.items():
            price_1 = value[0]['price']
            quantity_1 = value[0]['quantity']
            summ = price_1 * quantity_1
            print('полная стоимость товара:', summ)
    Ответ написан
    Комментировать
  • Дан хэш и дан промежуток с 1 до 999999 необходимо найти число которое имеет одинаковый хэш?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Попытался сделать так, как понял задачу. В заданном диапазоне ничего не нашлось :(
    Надо проверить условия и уточнить, есть ли ответ вообще.
    Велосипедик на костылях
    import hashlib
    
    from random import randint
    
    ALGS = ('sha3_512', 'sha384', 'md5', 'shake_128', 'sha256', 'sha3_256', 'sha3_224', 'sha512', 'blake2s', 'sha3_384', 'sha224', 'shake_256', 'blake2b', 'sha1')
    first = 1
    last = 999999
    
    def prepare_target(target):
        if not isinstance(target, bytearray):
            if not isinstance(target, str):
                target = str(target)
            target = target.encode()
        return target
    
    
    def calc_hash(alg, target):
        target = prepare_target(target)
        if alg in ALGS:
            command = f'hashlib.{alg}({target})'
            try:
                return eval(command).hexdigest()
            except TypeError:
                    pass
    
                
    def create_test_target(target_hash):
        if target_hash is not None:
            return '1'*len(target_hash)
        
        
    def detect_hash_alg(target_hash):
        result_algs = []
        for alg in ALGS:
            test_target = create_test_target(target_hash)
            my_hash = calc_hash(alg, test_target)
            if my_hash is not None:
                lenght = len(my_hash)
                if lenght == len(target_hash):
                    result_algs.append(alg)
        return result_algs
    
    
    def find_target(target_hash):
        stop = False
        algs = detect_hash_alg(target_hash)
        print(f'подходящие алгоритмы: {algs}')
        for i in range(first, last+1):
            for alg in algs:
                first_hash = calc_hash(alg, i)
                if first_hash == target_hash:
                    print(f'founded\t{i} {alg}')
                    stop = True
                    break
                    
            if stop:
                break
        if not stop:
            print(f'for {target_hash} not found')
    
    
    if __name__ == '__main__':
        target_hash = '127b1f0d6253fdfe78d806497217f2454a30e124d1f655b6c2a8c68f6dc7a7061993557b50252f253220a3a059142290cd0c2c467c0ee5bfbbd6a8a538c5d040'
    
        
        
        test = randint(first, last+1)
        alg = 'sha256'
        test_hash = calc_hash(alg, test)
        print(test_hash)
        print(f'target \t{test} {alg}')
        
        print('тестовый поиск:')
        find_target(test_hash)
        print('боевой поиск:')
        find_target(target_hash)
    Ответ написан
    Комментировать
  • Стоит ли строить локальную сеть на базе коаксильного телевизионного кабеля?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Есть вариант - базовая станция wifi mesh НАПРОТИВ дома (на заборе/столбе/соседнем доме), и в каждой комнате mesh точка около окна.
    Естественно, это должно быть что-то вроде ubiquity и стоить будет так, что легче ремонт заново сделать.
    Ответ написан
    Комментировать
  • Счетчик работает, а команды COGS перестали. Что делать?

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

    Честно признаться, что взяли ношу не по плечу.
    Открыть учебники, читать документацию, разбираться как работает код, дебажить его, и главное - перестать попрошайничать.
    Ответ написан
    Комментировать
  • Есть список [234543]. Как проверить, что соседнее число меньше и больше соседнего на 1?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Во!
    Чудовищно, но в точности соответствует условию.
    def more_or_less_one(number: int) -> str:
        return str(not any([abs(int(str(number)[x]) - int(str(number)[x+1]))-1 for x in range(len(str(number))-1)]))
                
    data = 234543
    print(more_or_less_one(data))
    data = 234564
    print(more_or_less_one(data))
    Ответ написан
    Комментировать
  • Как подключить к роутеру два компьютера?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Рекомендую начать с блока питания роутера. В половине случаев дело в питании. Замените на заведомо исправный с достаточной мощностью и не старый.
    Если с питанием порядок, проверяйте на перегрев чипа. Можно приклеить радиатор со старой мат.платы или прикрутить вентилятор малооборотный.
    Если ни первое ни второе не поможет - попробовать перепрошить, может глюка прошивки.
    Иначе, вероятнее всего, замена роутера.
    Ответ написан
  • Что такое mod_security и mod_evasive?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Вопрос легко гуглится. Напрасно вы ленитесь самостоятельно искать информацию.
    Итак, вот что
    нагуглилось
    Если вы хотите легко контролировать блокировку конкретными запросами страниц или вам нужна быстрая и простая в настройке защита DOS, включите mod_evasive.

    Если вам нужно больше контроля над каждым аспектом блокировки DOS-атак и того, что происходит во время блокировки, то вам действительно нужен только mod_security. Если все, что вас волнует, это DOS-атаки, то mod_security, вероятно, перебор.

    С точки зрения DDoS-атаки, я думаю, что оба инструмента будут одинаково полезны с настройками по умолчанию, так как каждый из них хранит хэш-таблицу по IP-адресу.

    Если вы хотите написать конкретные правила для mod_security, то нет предела тому, как и что вы блокируете, и в том числе вы можете воссоздать функциональность mod_evasive, если считаете, что вам это нужно.
    Ответ написан
    1 комментарий
  • Можете посоветовать базу словоформ?

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

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Гибридная инфраструктура в образовательных учреждениях - это, к примеру, своя школьная котельная для отопления и плюс ещё подключение к городской отопительной сети, которое обычно не используется. Штатно топите углем, а если сильный мороз, уголь кончился или истопник запил, то подключается городское отопление.

    Или, к примеру, столовая. Штатно завтраки детям готовят в своей столовой, а когда голодные ученики всё съели, то к делу подключается городская сеть предприятий быстрого питания и привозит в школу ещё еды.

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    diction = {'city': ['zoo', 'park', 'cafe'], 'zoo': ['tiger', 'zebra'],
                        'park': ['squirrel', 'dog'], 'cafe': 'people'}
    
    
    def detect_root(in_dict):
        for key in in_dict.keys():
            if key in set(in_dict.keys()) - set(in_dict[key]):
                return key
    
    
    def detect_person_place(in_dict, person):
        for place in in_dict[detect_root(in_dict)]:
            if person in in_dict[place]:
                return place
    
    
    person = 'people'
    print('Yes' if person in diction.values() else 'No')
    if person in diction.values():
        print(detect_person_place(diction, person))

    Но рекурсию тут не знаю как применить… ну можно, но это какое-то извращение.
    Ответ написан
    Комментировать
  • Как за 2 минуты зайти в 100 дискорд аккаунтов, если физически это нельзя успеть сделать?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Нанять 100 исполнителей.
    Ответ написан
    Комментировать
  • Не парсит дальше 3й страницы как исправить ???

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Не парсит дальше 3й страницы ???

    Да, не парсит дальше 3й страницы.
    Ответ написан
    Комментировать
  • Сколькими ходами кубик Рубика возвращается в изначальное положение?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Вопрос элементарно гуглится, даже в википедии.
    Ответ - 20 ходов в общем случае, 26 ходов в случае, если за ход считаем поворот грани на 90 градусов.
    Ответ написан
  • Не заканчивается цикл?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Не заканчивается цикл?

    Да, не заканчивается.
    См.п.3.6
    Ответ написан
    Комментировать
  • Ввод данных luks pexpect?

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

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Если надо предоставить просто код:
    • Создать аккаунт на github
    • Создать там gist, загрузить туда код.
    • Выбрать режим share и скопировать оттуда ссылку на gist и отправить работодателю.


    Если надо предоставить проект, то надо
    • сначала сделать проект локально, и локально сделать репозиторий git в папке своего проекта.
    • Затем выгрузить его на github (как именно, погуглите - этого полно), затем отправьте ссылку на свой репозиторий github, скопировав прямо из адресной строки браузера.
    Ответ написан
    3 комментария
  • Не работает mainbank.json python |?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Не работает mainbank.json python |?

    Да, не работает. См.п.3.6.
    Ответ написан
  • Ошибка темы OceanWP?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Перестала работать тема OceanWP?

    Да.
    кто знает с чем это связано?

    Никто.
    Ответ написан
    Комментировать
  • Можно ли с одной сетевой коробки подключить еще одну коробку?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Если в кабеле 4 пары (8 жил), то при правильном подходе можно со стороны розетки в офисе подключить две розетки rj45, а с другой стороны, там, где кабель подключается к коммутатору, обжать все 8 жил и на кабель повесить разветвитель (y-сплиттер) и каждые 2 пары таким образом включить в отдельный порт коммутатора.
    Вы так можете получить 2 сетевых розетки по 100 мбит.
    Ответ написан
  • Python, проблема вывода значения списка (не могу объяснить точнее в чем проблема, я pre-pre-pre junior developer)?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вопрос кажется простым. Но ответ потребует объяснения большого количества разнообразных принципов и может превратиться в целый цикл лекций.
    Набросаем путь освоения:
    1. Объектная модель языка Python
    2. Структуры данных вообще и языка Python в частности
    3. ООП вообще и понятие классов, экземпляров, атрибутов, методов, инициализации экземпляров в частности.
    4. Реализация конкретного класса User в конкретной версии библиотеки.
    5. Осмысление места, роли этого класса, его атрибутов, причин такой реализации, последствий для программирования бота;
    6. Вероятно, базы данных, их связь с классами; поля БД, их связь с атрибутами класса;
    7. Понимание, как всё это в целом работает, какие пути есть для получения искомых сведений и какие последствия могут возникнуть для работы бота, канала, Телеграма и его пользователей при работе с этими сведениями.


    Вот вам пример простейшей реализации:
    class User:
        def __init__(self, a, b, c):
            self.a = a
            self.b = b
            self.c = c
    
        def __repr__(self):
            return f'a:{self.a}\tb:{self.b}\tc:{self.c}'
    
    users = [User(1, 2, 3), User(('z', 'y', 'x'), 5, 6), User('a', 'b', None)]
    
    for user in users:
        print(user)
        print(f'a:{user.a}')
    print(users[1].a)
    print(users[2].c)

    из него можно извлечь некоторые сведения для вас.

    Но вовсе не обязательно, что в вашем классе User всё реализовано так просто. Надо посмотреть на него глазами.
    Ответ написан
    Комментировать