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

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

КОМЕНТАРІ • 45

  • @user-uv6to4km3v
    @user-uv6to4km3v 2 місяці тому +12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @КонстантинКурилов-з9е

    А нельзя просто для каждой задачи сделать свой словарь? Для полученя списка номеров букв из слова 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])

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

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

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

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

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

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

  • @АлексейСергиевский-в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  2 місяці тому

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

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

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

    • @okoeochka32
      @okoeochka32 2 дні тому

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

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

    Печалька😢

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

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

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

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

  • @imadna5810
    @imadna5810 20 днів тому

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

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

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

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

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

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

      @@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 2 місяці тому +2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 2 місяці тому

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

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

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

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

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

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

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