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

    trapwalker
    @trapwalker
    Dimonchik, вероятно не поможет. Это, конечно, предположение, но зашить в девайс ключи для проверки подписи сервера - не проблема для яндекса, но большая проблема для тех, кто хочет нештатно порулить устройством.
  • Какой максимальный ток может проходить через кнопку, рассчитаную на 0.5A 50V, если напряжение цепи 5V?

    trapwalker
    @trapwalker
    Антон, как это никто? Вот автор вопроса попытался. А я как могу популярно объяснил, что так нельзя и почему.
  • В чем может быть проблема smtplib TimeoutError?

    trapwalker
    @trapwalker Куратор тега Python
    Klim12322, вам так и сказали с самого начала, что проблема в файрволах
  • В чем может быть проблема smtplib TimeoutError?

    trapwalker
    @trapwalker Куратор тега Python
    Похоже проблема действительно в сетевой связности. Или может быть вашу подсеть забанили там?
    У меня этот же коннект проходит успешно.
  • В чем может быть проблема smtplib TimeoutError?

    trapwalker
    @trapwalker Куратор тега Python
    Klim12322, попробуйте
    telnet smtp.gmail.com 465
    Есть коннект? "Connected to smtp.gmail.com."?
  • В чем может быть проблема smtplib TimeoutError?

    trapwalker
    @trapwalker Куратор тега Python
    Вообще-то нужно приводить стек-трейс ошибки полностью.
  • Как грамотно создать Linux дистрибутив?

    trapwalker
    @trapwalker
    И обои нескучные на рабочий стол обязательно...
    https://www.youtube.com/watch?v=KUc6QGREUIY
  • Какая регулярка подойдет для формата 0000 00000 0?

    trapwalker
    @trapwalker
    Василий Банников, хорошее замечание. Тогда и пробел я бы оставил пробелом, а не вот этим вот \s.
  • Можете оценить код python?

    trapwalker
    @trapwalker Куратор тега Python
    SerS,
    def main(args=None):
        parser = argparse.ArgumentParser(description='--- This skript delete ".raw" files if the ".jpg" files of the same '
                                                     'name are deleted ---', epilog='---')
        parser.add_argument('path', help='Path to the directory')
        parser.add_argument('-a', '--all', dest='dir', action='store_true',
                            help='Sort in subfolders. Default: Only this folder.')
        parser.add_argument('-d', '--del', dest='dell', action='store_true',
                            help='Delete "raw" files. Default: Move to "raw" folder.')
        parser.add_argument('--DEL_ALL', dest='del_all', action='store_true',
                            help='Delete all "raw" files.')
        parser.add_argument('-f', '--format', dest='format', default='.raw',
                            help='Raw file format. Example ".raw". Default: .raw')
        parser.add_argument('-i', '--img', dest='img', default='.jpg',
                            help='Image file format. Example ".jpg". Default: .jpg.')
    
        if args is None:
            args = sys.argv[1:]
        arg_parser = parser.parse_args(args)
        ...
    
    if __name__ == '__main__':
        main()
  • Можете оценить код python?

    trapwalker
    @trapwalker Куратор тега Python
    Параметры командной строки можно получить так: `sys.argv[1:]`
    Ваш main нельзя вызвать из питона с нужным набором параметров командой строки. чтобы протестировать ка кони буут парситься.
    Что именно вам не понятно в этом абзаце? ПОЧЕМУ БЛИН мне не лень было сделать ревью вашему коду, а вам лень объяснить что вам не понятно вот тут вот?!
  • Можете оценить код python?

    trapwalker
    @trapwalker Куратор тега Python
    Этот ресурс не предназначен для ревью кода. Вам нужно на гитхаб. Неудобно и ответ ограничен 1e4 символами, в которые не поместить все косяки этого куска кода.
  • Как вывести метки в радиусе 10 метров от меня?

    trapwalker
    @trapwalker
    В теории такую логику ведь громостко делать внутри sql

    У вас неправильная "теория".
    Для описанной вами задачи есть отличная реализация в postgis. Вам указал на него в ответе freeExec
  • Как правильно сделать json файл?

    trapwalker
    @trapwalker
    Ну так и надо писать огда в вопросе.
    Отключите спеллчеккер в этом формате файлов в IDE b не будет подчеркиваться.
    А отформатировать текст можно утилитой jq
    jq < j.json
  • Как правильно сделать json файл?

    trapwalker
    @trapwalker
    Что значит "не очень приятно"? У вас где-то болит? Как ваш блин вопрос понимать?!
    Что значит "лучше"? Что вас не устраивает?
  • Как реализовать колоду карт через классы на python?

    trapwalker
    @trapwalker Куратор тега Python
    DrMorro, пойдёт. А ещё вам стоит читать много чужого кода, чтобы учиться.
  • Как реализовать колоду карт через классы на python?

    trapwalker
    @trapwalker Куратор тега Python
    DrMorro, ох... я очень не люблю по два раза говорить одно и то же. Какой смысл тогда вообще ревьюить, если игнор?
    Плохо, когда метод с названием get_info (или give) имеет побочный эффект в виде апдейта группы. Я понимаю назвать give метод передачи предмета от персонада к персонажу, но тут какой-то диалог кода и программиста. Звучит как бред.
    Get - это значит взять. give - дать. А он у вас изменяет объект. И я об этом уже говорил. Больше не стану.
    Вот тут один и тот же код лежит под разными условиями. Почему? Зачем? Так желать нельзя, потому что возникает ощущение, что код все же разный и нужно всматриваться в различия, а их нет.
    if self._group == "intelegence":
                return f"Группа {self._group.capitalize()} | Имя: {self._name} | Здоровье: {self._hp} | Физический урон: {self._damage - self._group_attr} | Магический урон: {self._group_attr}"
    
            if self._group == "agility":
                return f"Группа {self._group.capitalize()} | Имя: {self._name} | Здоровье: {self._hp} | Физический урон: {self._damage} | Блокируемый урон: {self._group_attr * 0.5}"
    
            if self._group == "strenght":
                return f"Группа {self._group.capitalize()} | Имя: {self._name} | Здоровье: {self._hp} | Физический урон: {self._damage} | Дополнительное ХП: {self._group_attr}"

    И название дурацкое, не отражает то, что делает и возвращает метод.
    Необоснованное нарушение принципа DRY.

    Вот тут вообще дичь терминальной стадии:
    def get_damage(self, damage):
            if self._group == "agility":
                damage -= int(self._group_attr * 0.5)
    
            self._hp -= damage
            if self._hp <= 0:
                self._hp = 0
            return damage

    У вас метод назван как геттер, геттеры не должны ничего менять, а ваш метод меняет, прчем не просто что-то кэширует, а осуществляет бизнес-логику меняя количество ХП.
    Представьте, что ваши часы на корпусе имеют кнопку "посмотреть время", но при ее нажатии происходит рассчет времени по ложной формуле и вывод его, а время в часах переводится на часовой пояс рандомного города.
    Так делать нельзя. Назовите его apply_damage и опишите в докстринге что он возвратит.
    Иначе это я воспринимаю как хамство по отношению к тому, кто будет читать это дерьмокод. То есть в данном случае ко мне.

    И я уже говорил про "магические константы в коде. Вам, видимо, пофигу. Так нафига я трачу время? загадка...

    Крайне плохая идея с group_attr. И об этом я тоже уже писал. У вас нельзя ни группы нормально расширять не внося правки почти все методы класса, ни безопасности в пользовании вашим кодом нет никакой.
    Почему не использовать Enum для группы?
    Если групп и характеристик ограниченное и фиксированное количество, и оно не планирует расширяться, то почему бы не предусмотреть все характеристики в карте одновременно. но ненужные будут нулевыми, а группа будет вычисляться по факту их значений. Получите универсальные карты. Можно сделать валидатор, который будет контроллировать правила, а также можно в виде новой Карты получать результат взаимодейтсвия карт, результаты атак и прочее. Так у вас будут служебные и синтетические карты. Может быть карта "#смерть" с нулевым ХП, например.

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

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

    Что за творчество у вас с названиями? То get_info, то give_info?
    Если хотите сделать метод. выдающий текстовую репрезентацию колоды, то так и называйте его: to_text().

    Почему {self.__len__()}, а не {len(self)}?!!!

    sort у вашей колоды ломает общепринятый протокол сортировки. Назвали так метод - делайте его работающим аналогично такому же у списка. Можно поменять умолчания, но лучше назвать sort _by_groups.

    sort_by сделан через задницу. Вы вообще разберитесь что такое исключения. Не надо ничего печатать на экран принтом никогда в таких местах.

    Зачме вы в получении инетратора меняете состояние объекта? Смысл этого метода в том. чтобы делать новый итератор!

    Зачем так колхозить __getitem__? Почему не проксировать одноименный метод списка?
    То же самое и с удалением.

    Чем вас не устраивает получение итератора от списка карт? Зачем такой костыльный колхощище?

    Дальше вообще какой-то поток сознания идёт. Без ТЗ результат ХЗ.
    Что за " print("Ошибка")"? Что с этим делать?!

    В общем я устал. Вы городите шалаш из палок и... ну в общем это не глина, понимаете?
    Попробуйте учиться планомерно, читать книги не бегло.
  • В чем заключаются архитектурные ошибки моего кода?

    trapwalker
    @trapwalker Куратор тега Python
    bituke, сильно лучше не стало. Вы упорно щекочете гланды ректальным методом. Но думаю на данном этапе что-то объяснять бессмысленно. Либо придёт с опытом, либо нет, но слышать вы не хотите
  • Как реализовать колоду карт через классы на python?

    trapwalker
    @trapwalker Куратор тега Python
    DrMorro, соскочил.
    Почитайте про принципы SOLID и DRY.
    А ещё вы намешали репрезентативный слой и модель данных.
    В общем классическая ошибка новичка в использовании инструмента. Если у вас есть молоток, то всё начинает использоваться в качестве гвоздей.
  • Не создается срез в python. Ошибка TypeError?

    trapwalker
    @trapwalker Куратор тега Python
    Неужели эта ситуация является примером ИНЖЕНЕРНОЙ задачи?

    Да, это оень простая, но инженерная задача.
    Я же сказал, что это произошло по вине того, что я прислушался к вредному совету.

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

    Я ужеуказал в вашем коде явную и недвусмысленную проблему, а вы это просто игнорируете и ищете какие-то логические выводы. Надо исправлять видимую явную проблему и идти дальше.
  • Не создается срез в python. Ошибка TypeError?

    trapwalker
    @trapwalker Куратор тега Python
    Вы что пишете код методом проб и ошибок?
    Фактически вы сказали. что в другихслучаях переходили дорогу с закрытыми глазами и выжили, поэтому сейчас считаете, что не в этом проблема.
    Вы привели не весь код вашего проекта. поэтому нет возможности показать вам почему в каких-то случаях такой ошибки не наблюдается.
    Но сам ход ваших рассуждений намекает на то, что вам в такой код леть еще рано. Возьмите книгу по питону и учитесь основам, а не пытайтесь методом проб и ошибок решать инженерные задачи. Или по карйней мере не отнимайте тут время у людей.