Собеседование python разработчик. Михаил и Татьяна. Чистый код не всегда можно писать быстро

Поділитися
Вставка
  • Опубліковано 22 лис 2024

КОМЕНТАРІ • 52

  • @Vadickus
    @Vadickus 3 місяці тому +4

    Задания лучшие наверное как то писать в чат им, или что то в этом роде, потому как очень много переспрашивали. А так все молодцы 🎉

    • @AndyPronin
      @AndyPronin  3 місяці тому +1

      Да. Хорошая идея. Спасибо

  • @Evgen2Zha
    @Evgen2Zha 21 день тому +1

    Камититься в бесплатку не нормально! особенно таким ребятам, хорошо пишут, рука набита. Какие 40 тысяч не понятно) Не идите на такие деньги никогда. Это важно. Цените свой труд!

  • @Bibliophilos
    @Bibliophilos 3 місяці тому +3

    Привет Никите Помидору, Лёне Петрову и прочим обитателям эльфийского леса!

  • @лешавасильев-щ4д
    @лешавасильев-щ4д 3 місяці тому +48

    А как вы думаете, насколько важно писать чистый код, если это занимает больше времени? я сам недавно выбирал курсы по IT, рассматривал разные компании, но остановился на Skypro. Лично мне помогли их наставники, и я смог найти первого заказчика))

    • @AndyPronin
      @AndyPronin  3 місяці тому +3

      Код читают чаще, чем пишут. Лучше писать чисто, что бы потом тебе или твоим коллегам не разбирать странное

    • @AndyPronin
      @AndyPronin  3 місяці тому

      Молодцы. Респект им, что помогают. Если захотят заглянуть на канал, буду рад пообщаться. Мой телеграм andpronin.

  • @xTANATOSx
    @xTANATOSx 17 днів тому +1

    Начали нормалтно, а как писать ,то капец если честно, элементарная задача

  • @user-uv6to4km3v
    @user-uv6to4km3v 3 місяці тому +15

    столько пафоса, я работаю там и там и делаю то и то, а элементарные вопросы просто заганяют в ступор

    • @РустамРаджабов-ц3м
      @РустамРаджабов-ц3м 14 днів тому

      хз где пафос, просто рассказали о себе, причем им это сказали рассказать)

    • @hsqlk
      @hsqlk 10 днів тому +1

      Проверяю Naming - abc….

  • @АлексейСергиевский-в6й

    Попробуйте вызвать функцию

  • @ДмитрийВасильевич1234
    @ДмитрийВасильевич1234 3 місяці тому +2

    кажется что в начале надо было просто строчку из букв сделать и все "абв.." и на ее основе уже делать словарь. Понадобились пробелы? Добавил пробелы. Понадобились цифры? добавил цифры и не надо потом весь код переписывать думая куда там пробелы влепить и почему они не ставятся.

    • @AndyPronin
      @AndyPronin  3 місяці тому

      В принципе, решение) когда упёрлись в проблему, можно было рефакторниг предложить

  • @КонстантинКурилов-з9е
    @КонстантинКурилов-з9е 2 місяці тому +1

    А нельзя просто для каждой задачи сделать свой словарь? Для полученя списка номеров букв из слова dict1 (ключ: значение) = (буква: число), а для полученя слова из списка чисел dict2 (ключ: значение) = (число: буква). Просто искать ключ по значению не очень удобно, а в нашем случае и числа и буквы алфавита не повторяются и могут быть ключами. И тогда функции станут прямо очень простыми:
    def str_to_lst(str, dict1):
    return [dict1.get(key) for key in str]
    def lst_to_str(lst, dict2):
    return "".join([dict2.get(key) for key in lst])

  • @fluent6981
    @fluent6981 29 днів тому

    22:40 , я бы прежде чем переносить сервер хотябы для начала зашел в логер, возможно где-то происходит ошибка и логер уже верещит "страшными строчками" от каждого , кто столкнулся с ней.

  • @АянЖумагельдиев
    @АянЖумагельдиев 3 місяці тому

    Доброго времени суток

  • @АлексейСергиевский-в6й

    # формируем словарь согласно первоначальной задачи, до того как барышня изменила задачу что бы сильно облегчить задачу
    chars = {number: chr(number) for number in range(1072, 1104)}
    # решение пробегаем по словарику, если находим ключ берем значение, а если нет то оставляем символ не тронутым
    def convert_string(any_string: str) -> str:
    return " ".join([str(ord(char)) if chars.get(ord(char)) else char for char in any_string])
    if __name__ == '__main__':
    print(convert_string("привет? как дела?"))

    • @AndyPronin
      @AndyPronin  3 місяці тому

      А если цифра в тексте? Как обратно декодировать?

    • @АлексейСергиевский-в6й
      @АлексейСергиевский-в6й 3 місяці тому

      Так же только в обратном порядке.

    • @interestings24
      @interestings24 Місяць тому

      Как по мне ее замечание к тз максимально адекватное и показывает глубокое понимание. Потому что сложность алгоритма сильно растет n^2, по сравнению с ее O(n) за 2n памяти. Умение предлагать свои поправки к тз, а не тупого выполнения показало ее с лучшей стороны

  • @imadna5810
    @imadna5810 Місяць тому

    когда новое видео ?)

  • @als-creator
    @als-creator 2 місяці тому

    на рутуб дублировать контент не планируете?

    • @AndyPronin
      @AndyPronin  2 місяці тому

      Да. На вк видео и рутуб

  • @АлексейСергиевский-в6й

    Печалька😢

  • @АлексейСергиевский-в6й

    Пройдитесь по строке, у словарика есть гет

  • @АлексейСергиевский-в6й

    Напомните им про get

  • @dmitriyb2438
    @dmitriyb2438 3 місяці тому

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

    • @finemechanic
      @finemechanic 3 місяці тому +1

      Джанго посвящена существенная часть курса Python разработчика. Есть раздел про управление удаленным сервером с докером и т.п. FastAPI есть в расширенном варианте курса (дороже).
      Программы все есть на сайте Практикума. Но мой ответ со ссылкой ютуб тупо спрятал.

    • @AndyPronin
      @AndyPronin  3 місяці тому

      Ютуп не любит ссылки. Да. В целом поиском легко находится

    • @АлексейСергиевский-в6й
      @АлексейСергиевский-в6й 3 місяці тому

      @@dmitriyb2438 привет 👋, набираешь Яндекс практикум и вуаля там все есть. По поводу докера и fast-api. Скажу так Яндекс даёт теорию, ставит задачу и сроки выполнения и дальше все сам. Какие то бэст практики не даёт. Из хорошего есть код ревью но по мне не всегда результат тот что ученик хотел бы увидеть. В моем случае я как раз хотел что бы мне показали как надо делать а не то что здесь плохо переделай. У Яндекса есть мидл python там как раз есть все что ты хочешь . только курс не для новичка, скорее для сильного джуна, который может работать самостоятельно и имеет азы проектирования средней сложности приложения.

  • @АлексейСергиевский-в6й

    Зачем переводить все в список,можно пробегать по строке

    • @AndyPronin
      @AndyPronin  3 місяці тому

      Тут нет единствено верного варианта. Задача на собесе не задачку решить, а посмотреть, как человек думает

  • @npc-r390
    @npc-r390 2 місяці тому +6

    Скуфчик совсем обленился и собесит сразу двух

  • @АлексейСергиевский-в6й

    Пустая строка

  • @hsqlk
    @hsqlk 10 днів тому

    Мда уж…

  • @mainkun1983
    @mainkun1983 2 місяці тому

    Не кажется что вот такое оборванное тех задание только запутало кандидатов?
    Если бы подход к решению подобной задачи был построен итеративно, и четко разделялся между кандидатами, чтобы по завершению одной такски, следующий кандидат мог перейти к выполнению второй, имея у себя на руках хоть какие то данные (готовый словарь) и конкретную реализацию. А не представлять с чем им придется работать и не писать функцию наугад, с путаницей ключей/значений в этом же словаре?

  • @finemechanic
    @finemechanic 3 місяці тому

    В изначальной формулировке задачи фигурировали 33 буквы. Вангую, у вас недостача букв и утечка алфавита. Идея с ord очень хрупкая изначально, не понимаю, почему она вам понравилась.

    • @AndyPronin
      @AndyPronin  3 місяці тому +1

      А какая лучше? Список из букв?

    • @Vjqifg
      @Vjqifg 3 місяці тому +2

      @@AndyPronin Думаю да. Причём сгенерировать список можно с помощью ord(), а потом просто добавить "ё" в нужное место
      def create_code():
      chr_list = [chr(x) for x in range(1072, 1104)]
      chr_list.insert(6, 'ё')
      abc_dict = {key: value for key, value in enumerate(chr_list, 1)}
      return abc_dict

    • @finemechanic
      @finemechanic 3 місяці тому +3

      @@Vjqifg Явное лучше неявного, магические числа - лучше просто из списка букв.

    • @Hope-h7x
      @Hope-h7x 3 місяці тому

      @@Vjqifg магические числа это очень не ок

    • @Vjqifg
      @Vjqifg 3 місяці тому

      @@Hope-h7x Чем они здесь могут навредить?

  • @bucher6382
    @bucher6382 3 місяці тому +1

    print({i-1071: chr(i) for i in range(1072, 1104)})
    как то так

  • @4got10_man2
    @4got10_man2 3 місяці тому +2

    RUSSIAN_ALPHABET: str = "".join(chr(code) for code in range(ord("а"), ord("я") + 1))
    def encode(text: str) -> list[int | str]:
    """Encodes the text"""
    encoder: dict[str, int] = {
    letter: number for number, letter in enumerate(RUSSIAN_ALPHABET, 1)
    }
    encoded_text = [encoder.get(char, char) for char in text]
    return encoded_text
    def decode(encoded_text: list[int | str]) -> str:
    """Decodes the text"""
    decoder: dict[int, str] = {
    number: letter for number, letter in enumerate(RUSSIAN_ALPHABET, 1)
    }
    decoded_text = "".join(decoder.get(code, code) for code in encoded_text)
    return decoded_text

    • @finemechanic
      @finemechanic 3 місяці тому

      assert len(RUSSIAN_ALPHABET) == 33, "Утечка алфавита"

    • @4got10_man2
      @4got10_man2 3 місяці тому

      @@finemechanic у нас нет буквы ё, точнее она находится отдельно от алфавита. тут уж либо писать руками весь алфавит, либо жить с 32 буквами. но предусмотреть да, стоило

    • @finemechanic
      @finemechanic 3 місяці тому

      ​@@4got10_man2 Я и говорю, алфавит строится с ошибкой.

    • @narkotr4fic843
      @narkotr4fic843 3 місяці тому

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

    • @SimpleMRish
      @SimpleMRish 21 день тому

      Отличное решение! И то что буква ё не кодируется ничего страшного. Просто она как спец. символ отображается как есть в закодированном списке.
      В качестве оптимизации можно всё-таки обернуть получение словаря в функцию и передавать диапазон букв.
      Например, get_encoder_dict('A', 'Z'), get_encoder_dict('а', 'я') и т.д. Тогда решение получится более универсальным.