• Python два массива. Как вывести уникальные значения?

    @trofimovdev
    Python
    Можно использовать множества:
    a = [1, 2, 3]
    b = [2, 3, 4]
    print(set(a + b))
    >>> {1, 2, 3, 4}
    Ответ написан
    2 комментария
  • Какие есть сайты, где могут помочь исправить код?

    Если у вас есть какой-то код на Пайтоне, который не работает или работает не так как вы расссчитывали, можете здесь же и опубликовать фрагмент, вам помогут. Также можно попробовать спросить здесь: https://stackoverflow.com/

    Но первым пунктом я бы вам все же посоветовал тщательно сформулировать свой вопрос и попробовать поискать ответ самостоятельно в поисковиках. Добрая половина ссылок так или иначе приведет вас на сайт, что указан выше. Велика вероятность что с такими же проблемами уже сталкивался кто-то до вас и вы найдете ответ на свой вопрос не задавая его.
    Ответ написан
    Комментировать
  • Как сортировать словарь по содержимому (Python3)?

    NeiroNx
    @NeiroNx
    Программист
    Надо почитать документацию...
    >>> x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
    >>> sorted_by_value = sorted(x.items(), key=lambda kv: kv[1])
    >>> sorted_by_value
    [(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
    >>> dict(sorted_by_value)
    {0: 0, 2: 1, 1: 2, 4: 3, 3: 4}
    >>>

    тут все написанно про сортировку: https://docs.python.org/3/howto/sorting.html
    Ответ написан
    6 комментариев
  • Как преобразовать строку в функцию?

    @MechanicZelenyy
    То что вы хотите выглядит так:
    eval("{}(user_last_message)".format(callback_data.data))


    Однако никогда так не делайте, это гигантская дыра в безопасности.

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

    @Andy_U
    "if mode is True" - не надо так. Так же не надо называть целое число, как letter и очередной символ строки, как i,

    Ну и алгоритм можно гораздо проще имплементировать:

    from typing import Callable
    
    
    def encode(code: int) -> int:
        """ Encode unicode code point of the character. """
        return code * 2 - 9
    
    
    def decode(code: int) -> int:
        """ Decode unicode code point of the character. """
        return (code + 9) // 2
    
    
    def process(password: str, func: Callable[[int], int]) -> str:
        """ Encode/decode password. """
        return ''.join([chr(abs(func(ord(c)))) for c in password])
    
    
    if __name__ == '__main__':
    
        password = input('Введите пароль: ')
        mode = input("Выберите режим (Code/Decode): ").capitalize()
    
        if mode.startswith('Code'):
            print(process(password, encode))
        elif mode.startswith('Decode'):
            print(process(password, decode))
        else:
            print('Вы ввели {}. Данного режима не существует.'.format(mode))


    Ну и наконец, одно большое "но". Маленькая буква "z" кодируется в "ё", а русские буквы вообще черт знает во что. Т.е. вместо правильного utf-символа Windows может напечатать знак вопроса в квадратике - т.е. признак непечатного символа.
    Ответ написан
    3 комментария
  • Что бы вы сказали об этом коде?

    Рекомендую ознакомиться с данным документом https://pep8.ru/doc/pep8/
    Рекомендую использовать какой-либо плагин linter для вашей ide - так будете уверены, что код соответствует определенным стандартам. Хотябы, тому же pep8. Мне сильно помогло улучшить культуру кода.

    В частности, рекомендации по именованию переменных и функций.
    По коду - rebuild_code работает двойным проходом - зачем? Можно сразу же преобразовывать и join-ить строку.

    P. S. Не Питонист. Заметил то, в чем сам изначально ошибался.
    Ответ написан
    4 комментария
  • Как научиться придумывать более простые алгоритмы, для решения любой задачи?

    Это просто опыт.

    А ещё может быть дело в незнании возможностей языка и стандартной билиотеки. К примеру, если не знать, что так можно, то вместо r = [a.foo() for a in b if a is not null] придётся написать много кода.

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

    sgjurano
    @sgjurano
    Разработчик
    Классический подход выглядит так: смотрим на задачу и пытаемся понять как мы будем её решать руками, рассматриваем разные варианты задачи, ошибаемся, пробуем ещё раз, знакомимся с ней одним словом. Потом полученное решение пытаемся формализовать и описать с помощью языка программирования.

    Я, когда проходил этот этап, больше всего почерпнул из книги "Математика это просто": https://www.ozon.ru/context/detail/id/31172916/

    Несмотря на слово "математика" в названии, там речь идёт о том, как научиться решать задачи, для которых в голове нет готового решения.

    Удачи и терпения на этом нелёгком пути :)
    Ответ написан
    Комментировать