Разбор тестового задания на PYTHON JUNIOR с окладом 80000 рублей

Поділитися
Вставка
  • Опубліковано 22 лип 2022
  • В этом видео я хотел бы разобрать реализацию тестового задания на языке python для компании Avito. Простое тестовое задание, в котором хотят проверить, насколько кандидат владеет знаниями по работе с базовыми библиотеками.
    Личный телеграмм канал, где публикую личный опыт и советы начинающим разработчикам:
    t.me/+4CvMjNYRaiMwZDky
    Ссылка на решение с кодом:
    github.com/davdeenko/python-t...
    Ссылка на документацию poetry:
    python-poetry.org

КОМЕНТАРІ • 116

  • @pythondevv
    @pythondevv  Рік тому +1

    Телеграмм канал, где я публикую личный опыт и советы начинающим разработчикам:
    t.me/+4CvMjNYRaiMwZDky

  • @nataliepodgainova6582
    @nataliepodgainova6582 Рік тому +5

    Спасибо очень информативно. Очень нужно побольше таких видео

  • @MrHeavy-po2or
    @MrHeavy-po2or Рік тому +20

    офигеть,вот это задачки

  • @danil_tolmachov
    @danil_tolmachov Рік тому +4

    Продолжайте выпускать подобные видео. Очень качественно и информативно)

    • @pythondevv
      @pythondevv  Рік тому

      Спасибо!
      Завтра новое видео)

    • @YGNETATEL_3000
      @YGNETATEL_3000 11 місяців тому

      @@pythondevv отличный демотивирующий ролик !!

  • @MrAdAmGaMeS
    @MrAdAmGaMeS Рік тому +1

    Спасибо тебе, появилось понимание над чем нужно работать

  • @bonjerne4911
    @bonjerne4911 Рік тому +4

    Дмитрий, обязательно пили про асинхронщину!
    Большое спасибо за видео:)

  • @mr.wrangler
    @mr.wrangler Рік тому +1

    Спасибо , познавательно, интересно

  • @podgorniy.r
    @podgorniy.r 11 місяців тому

    Посмотрел с удовольствием, много полезной информации! Планируете в будущем снять видео о асинхронном программировании? К сожалению мало качественного материала на эту тему.

    • @pythondevv
      @pythondevv  11 місяців тому

      Да, точно будет )

  • @belov_dev
    @belov_dev Рік тому +3

    Хорошая подача. Редко пишу комментарии, но тут поддержу видео, качество на уровне, приятно смотреть

  • @kirichenkodv
    @kirichenkodv 9 місяців тому +1

    Ожидал лайв-кодинга, а тут все уже сам решено и объяснение как делал.

  • @user-jo2ux1tm9y
    @user-jo2ux1tm9y 3 місяці тому +1

    братан это ТОП. это то что нужно.
    спасибо тебе огромное.

  • @H1DD
    @H1DD Рік тому +27

    Отличный формат 👍
    Но есть критика:
    1) зачем запутывать джуниоров pyenv, poetry и копанием в натройках IDE. На этом уровне этого не требуется. У джуниоров и так голова пухнет, а тут еще лишняя информация, у многих от этого руки просто опускаются.
    2) 22:53 продолжать работать как ни в чем не бывало при некорректных входных данных это ооооооочень плохая идея. В такой ситуации правильнее выкинуть исключение а-ля raise 'expected square matrix' , а не возвращать пустой список. В реальной разработке не бывает просто функции, это будет частью громадной системы и если что-то пойдет не так, если какой-то из кирпичиков отработал не так как ожидалось, то лучше сразу остановиться. Даже если идти вашим путем, то исполнение странное. Зачем выкидывать ошибку, тут же её ловить и логировать? Почему бы просто сразу не залогировать тогда, зачем кидать её вообще?
    3) 43:55 Логирование на основе HTTP кодов очень скудное. По таким логам ничего понятно не будет, какой в них тогда толк. Я про скудное "Client error"/"server error"

    • @user-uv2mh7qy5h
      @user-uv2mh7qy5h Рік тому

      Там еще похоже 500-ка некорректно обрабатывается. Так как условия 400 500. Т.е. при status = 500 считаем, что все хорошо ...

    • @jirikropocev9911
      @jirikropocev9911 Рік тому

      Ага: сам кинул исключение, сам же его поймал строкой ниже, чтоб залогировать сообщение которое сам же и передал в исключение...

    • @YGNETATEL_3000
      @YGNETATEL_3000 11 місяців тому

      Что то мне плохо стало и температура поднялась во время просмотра

  • @futurepc9363
    @futurepc9363 17 днів тому

    Заметил хорошую литературу. Талиба черный лебедь и разумный инвестор. Шикарный выбор.

  • @VSEMAK
    @VSEMAK Рік тому +4

    Отдельное видео по Poetry - да, пожалуйста

    • @pythondevv
      @pythondevv  Рік тому +6

      Сделаю!

    • @pythondevv
      @pythondevv  Рік тому +1

      Сделал :)
      ua-cam.com/video/1bf41pPVxWU/v-deo.html

  • @twinart795
    @twinart795 Рік тому +11

    Видео огонь! Делай больше таких, начинающим подобный контент очень нужен)
    Видео в большей части просмотрел диагонально, потому что многое знаю и нет смысла детально смотреть. Больше смотрю для дополнительного опыта и чужого взгляда на решение задач. Но так же как ребята уже заметили, местами Ты конкретно начинаешь перегружать молодой мозг, тем же poetry(копанием внутренни ide и настройкой самого poetry).
    Также заметил, может возьмешь на вооружение: так как Ты тут в большей части являешься учителем и примером, учи ребят с 0, чтобы, к примеру, сначала проработать алгоритм, расписать его в голове/на листке(в блокноте), а потом писать код, ведь в программирование главное алгоритм продумать, а потом уже нарисовать его кодом.
    Я хоть являюсь middle/middle+ в python, но меня очень удивило, что в тестовом задании на Джуна от него требуют асинхронность О_о и требования по написанию выходных данных в функциях и прочие мелкие моменты.
    Удачи в развитии канала и контента. Подписка)

    • @black_grizzly
      @black_grizzly Рік тому

      Как щас говорят, что ищут мидла на зп Джуна)
      Соответственно и вопросы для мидла

  • @vladkrolik2700
    @vladkrolik2700 Рік тому +6

    Круто, можно больше таких видео, и где брать такие задачи ?

    • @VadimRadzih
      @VadimRadzih Рік тому +1

      Codewars

    • @pythondevv
      @pythondevv  Рік тому +4

      На самом деле любое тестовое задание это мини проект выполняющий узкую задачу, как тут. Я бы рекомендовал во время обучения сразу же пытаться что-то написать по теме уроков. Что-то реально работающее, например бот в телеграмм или маленькое веб приложение. Тут самый важный этап - чтобы потом кто-то опытный проревьюил это решение и указал на недочеты.
      Так же есть мысли откликнуться на джуниор позиции в разных компания и разобрать больше реальных тестовых, такие как в видео.

    • @vladkrolik2700
      @vladkrolik2700 Рік тому +1

      @@pythondevv хорошая идея по Джуниор вакансий, было бы круто

  • @huihui6805
    @huihui6805 Рік тому +2

    Такое качество записи, но так мало фолловеров... Успехов, парень, отлично снято!

    • @huihui6805
      @huihui6805 Рік тому

      Однако на твоём месте я бы немного поработал. Не хватает тихой музыки из библиотек Ютуба + можно было бы гринвол купить, чтобы камера не отнимала на себя много места

    • @pythondevv
      @pythondevv  Рік тому

      Спасибо! Музыку обычно вставляю, но в этом видео забыл. А что такое гринвол?

    • @nataliiac.2140
      @nataliiac.2140 Рік тому +1

      @@pythondevv гринскрин, который убирает фон, но как по мне итак хорошо. Да и без музыки воспринимается легче, тут на вкус и цвет

    • @travodui
      @travodui Рік тому

      Если на ютубе под видосиками такого характера будет отображаться много просмотров, то я задумаюсь о том, что мы живем в симуляции от какой-то нейросетки на питоне. Люди ведь заинтересованы в развлекательном контенте, а не в практическом образовательном.

    • @borzxoYT
      @borzxoYT Рік тому

      @@pythondevv зеленая ширма на фоне, благодаря которой видно только тебя

  • @user-bs6ou6cq4j
    @user-bs6ou6cq4j Рік тому +3

    Дмитрий, подскажи, на какое время рассчитаны такие задачи во время реальной работы на компанию? Т. Е. От момента, когда задачу определили, до её полного решения ( включая время на поиски решения)

    • @pythondevv
      @pythondevv  Рік тому +1

      Все индивидуально, зависит от задачи, твоего уровня и твоего собственного темпа. В agile (методология разработки) есть понятие story point. Бывают задачи на 1 день, а бывают на 2-3 дня. Обычно, если задача занимает больше 2-3 дней - ее декомпозируют. Так проще следить за прогрессом, особенно у джунов. Такая задача должна занимать 1-2 дня рабочего времени у джуна. Человек с опытом должен решать такое за несколько часов.

  • @fnln1149
    @fnln1149 Рік тому +6

    00:00 Intro.
    00:50 Тестовое задание.
    03:33 Давайте начнём.
    05:00 Настроим интерпретатор (Poetry).
    09:29 Едем дальше. Шаблон решения.
    10:35 Тесты
    11:38 Шаблон решения.
    28:17 Напишем код. aiohttp
    30:32 prepare_matrix
    34:55 test prepare_matrix
    37:14 Логирование
    38:20 travers_matrix
    40:15 get_matrix
    42:20 Catching net errors
    47:07 Про тесты
    47:40 docstrings
    49:32 Запуск кода из терминала
    53:20 Проверка кода статическими анализаторами
    54:32 Завершение
    54:50 Обсуждение решения

    • @blastav
      @blastav Рік тому

      Если ставить эти тайм коды в описание к видео, а не комментом, то ютуб сделает правильное "разделение" блоков видео. Это помогает визуально оценивать структуру видео и быстро искать нужные блоки.

  • @user-jl3wg4gl2v
    @user-jl3wg4gl2v Рік тому +4

    С двойным разворотом и рекурсией красиво, но как додумались для этого, или где-то увидели такое решение? (Интересно бы прочитать ход мыслей которые к нему приводят). У меня (как и у большинства, думаю) довольно длинная функция с ручными проходом, сменой направления и обновлением границ снизу/справа/сверху/слева

    • @pythondevv
      @pythondevv  Рік тому +3

      Привет!
      Давай разберем функцию traverse_matrix по частям:
      1. matrix = list(zip(*matrix[::-1]))
      - эта строчка с использованием функцинаольного подхода.
      - matrix[::-1] разворачивает вненший* список, то есть список строк матрицы, разварачиваем в обратном порядке (с помощью ::-1)
      - с помощью оператора * (звездочка) мы "распаковываем" список чтобы передать его в функцию zip
      - функция zip составляет новые строки матрицы беря каждый элемент из каждого списка превращая в новый список. Получается сначала список сначала из всех нулевых элементов, потом из вторых и так далее. (лучше почитать доку docs.python.org/3.3/library/functions.html#zip)
      - Теперь если вдруматься - то такими действиями мы просто повернули матрицу по часовой стрелке
      2. output.extend(matrix[0][::-1])
      - matrix[0] - берем первую строку, [::-1] - разворачиваем ее
      - Так как мы обходим исходную матрицу против часовой стрелки, нам нужно взять первую строку в обратном порядке в развернутой матрице (развернутой на предыдущем шаге). Если визуализировать, то понятно, что сначала мы поворачиваем матрицу, потом срезаем первую строку, затем переворачиваем эту строку, чтобы получить первую сторону обхода против часовой стрелки исходной матрицы.
      3. traverse_matrix(matrix[1:], output)
      - Вызываем функцию рекурсивно с матрицей без первой строки (потому что мы ее уже добавили в ответ)
      Так же обязательно нужно отметить, что такое решение хорошо работает только на маленьких матрицах. Это так - потому что у него плохая ассимптотика. На каждом шаге рекурсии мы по факту создаем новый объект с новой марицей, выделяем память и тд. Так что ваше решение, если оно не создает матрицу заного может оказаться совсем не хуже в задачах с большими матрицами.

    • @user-jl3wg4gl2v
      @user-jl3wg4gl2v Рік тому +1

      @@pythondevv спасибо за ответ! не, как она работает я понял, разобрав на примере (и про асимптотику тоже подумал, что хоть решение в лоб и длинное, но должно быть эффективнее т.к проходит 1 раз и не создает новых вызовов ф-ции -- про создание объектов не подумал кстати), изначально интересно было (и вопрос был) -- как додуматься до такого решения, не помните какие мысли к нему привели, или увидели его на литкоде когда после сдачи открывается список других решений?

    • @pythondevv
      @pythondevv  Рік тому +3

      @@user-jl3wg4gl2v на самом деле правда решал эту задачу когда-то давно, в своём первом курсе по python на stepik :) Почему заполнил именно это решение?
      Я хотел написать в пару строчек через слайсы, а с помощью них можно разворачивать и отрезать куски списков. Я легко могу срезать первую строку, но мне нужен левый столбец. Поэтому и надо развернуть матрицу. Как-то так я к этому и пришёл.
      А вообще да, если хочется щёлкать такие задачи, литкод и ему подобные сайты - лучший тренажёр.

  • @pylounge
    @pylounge Рік тому

    Подушка в верхнем левом углу топ)

    • @pythondevv
      @pythondevv  Рік тому +1

      Это мерч с внутренней конференции по python в нашей компании. Считай лимитированный товар :) Кстати, у вас классный канал :)

    • @pylounge
      @pylounge Рік тому

      @@pythondevv Спасибо)

  • @kpriemko
    @kpriemko Рік тому +2

    Да, можно по асинхронщине видео, спасибо

  • @stardivari1988
    @stardivari1988 Рік тому

    А я то думал print('Hello world!') и погнали😃

  • @lextuletsky1653
    @lextuletsky1653 Рік тому +1

    А мог бы сделать road map по python для новичка?было бы очень полезно,потому что не нашел на ру ютубе

    • @pythondevv
      @pythondevv  Рік тому +2

      Привет!
      Это будет как раз одно из следующих видео, я уже пишу сценарий для него!

  • @MrLotrus
    @MrLotrus Рік тому +1

    3:50 Или просто в интерпретаторе импортировать this )

  • @user-qk3em5oq8d
    @user-qk3em5oq8d Рік тому

    Матрица - это прямоугольник из чисел , всё таки)

    • @pythondevv
      @pythondevv  Рік тому

      А квадрат, это не прямоугольник? :)

    • @user-qk3em5oq8d
      @user-qk3em5oq8d Рік тому

      @@pythondevv Всякий квадрат то это бесспорно - прямоугольник, но не всяк прямоугольник - квадрат. А матрицы бывают не только n x n размерами, но и m х n. Понимаете о чем я?

    • @pythondevv
      @pythondevv  Рік тому

      @@user-qk3em5oq8d Да, матрицы бывают m*n, этого вроде бы никто не отрицал

  • @aykmadoyan5109
    @aykmadoyan5109 Рік тому +1

    Ребят вопрос, я прохожу курсы по Python на Stepik. Всякие ООП, фреймворки, базы данных ещё не проходил. Что мне необходимо изучить, чтобы решать такие задачи?

    • @pythondevv
      @pythondevv  Рік тому +1

      На самом деле тут ответ простой - начать решать такие задачи. А все, что не понятно надо гуглить)

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

    Я прохожу обучение на курсах,омни уже скоро к концу подходят по пайтон-разработке,но там даже близко нет того,что вы делаете на данном видео. Никакого асинхронного программирования,никаких тестов,никаких матриц. Где и как можно подготовиться хорошо на уровень джуна. Где эти знания получить в достаточном объеме

  • @maths781
    @maths781 Рік тому +1

    Итальянец. Спасибо за видео.

    • @pythondevv
      @pythondevv  Рік тому

      Итальянец??)

    • @maths781
      @maths781 Рік тому

      @@pythondevv в начале руками машете, как итальянцы. Вот и вспомнил про них))

  • @timapigolev1640
    @timapigolev1640 Рік тому

    Где вы находите вакансии на джуниоров? Мне почему-то попадаются вакансии уровнем не ниже миддла.

    • @pythondevv
      @pythondevv  Рік тому

      Добрый день! Да, на джуниор позицию сейчас найти что-то и правда не просто. Надо мониторить рынок. Тут несколько факторов. Хочу записать отдельное видео на эту тему. На senior позиции мне каждую неделю по 2-3 вакансии приходит, при том, что я ничего для этого не делаю.

    • @timapigolev1640
      @timapigolev1640 Рік тому

      @@pythondevv подписался чтоб не пропустить

  • @finimensniper3322
    @finimensniper3322 Рік тому

    А на питоне всегда такие легкие тз для джуна? Просто я как c# unity dev привык видеть вещи на порядок сложнее)

    • @pythondevv
      @pythondevv  Рік тому

      Это одно из самых простых. При этом решение тестового задания не гарантирует трудоустройство. Еще нужно пройти собесед. Если удастся такое тз - это почти гарантированный билет на интервью.

    • @finimensniper3322
      @finimensniper3322 Рік тому

      ​@@pythondevv О, я то думал что это примерно среднее тз. Понятно что прохождение тз это не гарант трудоустройства, его ведь еще должны заревьюить

    • @finimensniper3322
      @finimensniper3322 Рік тому +1

      @Тот самый Андрей Ну учитывая что я щас мидл вполне возможно)

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

    Это на Джуниора? Завязываю с обучением

  • @banzaika
    @banzaika Рік тому +1

    Сяп

  • @ALATIR
    @ALATIR Рік тому +1

    python так сделать, что не красиво не напишешь. а напишешь работать не будет. Задание не сложное вроде)))

  • @canal-lm1to
    @canal-lm1to Місяць тому

    Когда код пишет явно не джун, чтобы показать типа решение тестового для джуна - это не корректно.
    Да можно много чего узнать, и я сразу начал искать poetry, а потом в коментах нашел - что poetry джуну не нужно. А время и главное структура поэтапного изучения потеряна. Да в свое время я бы к этому пришел. Но еще есть что изучать и без него.
    Когда-то смотрел канал по тестированию, где толковый джун начал записывать свое реальное обучение на рабочих проектах. И видно, как он с каждым новым видео больше изучал. То что у него на работе нужно было, а не для галочки, или это понравится дяде, который будет смотреть ваше тестовое.

  • @user-ke7ub7hn9l
    @user-ke7ub7hn9l Рік тому

    Так-с начинаю смотреть видео, начал учить Пайтон 4 дня назад, посмотрим-с, получу я роботу или нет.

    • @pythondevv
      @pythondevv  Рік тому

      успехов!

    • @user-ur3mc6hb5d
      @user-ur3mc6hb5d 10 місяців тому

      Ну как успехи -то?)

    • @user-ke7ub7hn9l
      @user-ke7ub7hn9l 10 місяців тому

      @@user-ur3mc6hb5d даже вспомнить не могу, когда это я учил Пайтон😁

  • @user-cw3jm5sh7d
    @user-cw3jm5sh7d Рік тому

    Народ, кто может подсказать? Где можно найти начинающего программиста для совместного проекта в портфолио?

    • @pythondevv
      @pythondevv  Рік тому +1

      Ответил в телеграмм канале)

  • @TV-ib3cx
    @TV-ib3cx Рік тому

    я задание решил легко, но с тестами поработал плохо. То есть вообще, я тесты не пишу, мне это сложно. Нормально для 16-ти лет?

    • @pythondevv
      @pythondevv  Рік тому

      Для 16 лет это потрясающий результат. Тут взрослые люди на работу так устраиваются, решая такие задания.
      Тесты придётся выучить, без них не написать ни один серьёзный проект

    • @TV-ib3cx
      @TV-ib3cx Рік тому

      @@pythondevv я рад если всё так и есть

  • @DMITRII-ov3dq
    @DMITRII-ov3dq Рік тому

    Дима, сколько тебе лет?

    • @pythondevv
      @pythondevv  Рік тому

      26)

    • @user-xm5bi7oo8o
      @user-xm5bi7oo8o Рік тому

      @@pythondevv Когда начал заниматься? )

    • @pythondevv
      @pythondevv  Рік тому

      В универе :)
      Продакшен опыта чуть больше 4х лет сейчас.

  • @trezzh4
    @trezzh4 Рік тому +1

    Отличное видео. Очень нужное и познавательное. На 5+. Но английский автору можно немного подучить. Улыбнулся от "This function used to get text" и некоторых других ошибок.

    • @elisey7453
      @elisey7453 Рік тому +1

      Можно забить на эти ошибки. В англоязычных компаниях никто не обращает на них внимание и они не мешают общению. Главное чтобы тебя понимал собеседник.

    • @pythondevv
      @pythondevv  Рік тому

      Спасибо за фидбек! На самом деле я уже больше 4х лет работаю в международных компаниях. И совсем не испытываю проблем с коммуникацией, чтением документации и даже презентациями продуктов на английском. При этом я изначально хотел использовать его по минимуму в этом видео, чтобы не нагружать зрителя, чуть переволновался (потому что был сосредоточен на задаче) и допустил такие ошибки с написанием и произношением :)
      На самом деле хочу сделать отдельное видео по поводу английского для программиста. Спойлер - без него ничего не получится :)

  • @aweryc
    @aweryc Рік тому

    Товарищ 5 секунд менял elif на else....
    Ну норм видео в целом конечно.

    • @pythondevv
      @pythondevv  Рік тому +1

      С кем не бывает)

  • @The_Mavrik
    @The_Mavrik Рік тому

    а это точно на джуна?

    • @pythondevv
      @pythondevv  Рік тому

      Точно :)
      Стажер / джун

  • @shikama-
    @shikama- Рік тому +1

    Не думаю что это для джунов...минимум миддл

  • @vasiliy2396
    @vasiliy2396 4 дні тому

    Какое же тупое условие задачи. Получает матрицу и возвращает list[int], что должно содержаться в этом листе хз.

  • @Valiko771603
    @Valiko771603 Рік тому

    Ошибку на = 500 забыл проверить

    • @pythondevv
      @pythondevv  Рік тому

      Только сейчас заметил, что знак равенства там потерял, спасибо :)

  • @shot2420
    @shot2420 11 місяців тому

    Вроде бы и умеешь такое решать, а всё равно, первую работу найти не можешь....

    • @pythondevv
      @pythondevv  11 місяців тому

      Искать работу и уметь работать разные навыки, к сожалению)

    • @shot2420
      @shot2420 11 місяців тому

      @@pythondevv с этим я соглашусь.)

  • @MrMit36rus
    @MrMit36rus Рік тому

    Как же это все криво и через жопу в питоне...

    • @pythondevv
      @pythondevv  Рік тому +2

      На мой взгляд очень даже красиво. А я много на чем умею код писать :)

  • @vova2678
    @vova2678 Рік тому

    Много слов говорит

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n Рік тому

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

    • @pythondevv
      @pythondevv  Рік тому +2

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

  • @jirikropocev9911
    @jirikropocev9911 Рік тому

    Если обычный, нормальный человек прочитает описание функции traverse_matrix (получает матрицу, возвращает traversed matrix и еще какая-то help variable you don't need to provide) то он и будет использовать её как: result = traverse_matrix(matrix, []) будет очень сильно удивлён результатом, ведь функция всегда возвращает None. Внезапно.
    Решение идти в рекурсию очень красивое и остроумное, но упадёт на матрице 100*100, а это не так и много. Я не "играю в Гугл", коллекция в 10К(и даже миллион) элементов вполне рядовой случай в реальной жизни. Еще на каждом шаге рекурсии у вас создаётся новая коллекция, т.е. на матрице 4*4 у нас дополнительно сделали 8 коллекций, на 100*100 будет 200 (а в 1K*1K - две тысячи?), каждая со своей копией (части) данных и все коллекции "живые", потому что в методах, которые в рекурсии. Что быстрее наступит, стек оверфлоу или аут оф мемори я сходу не скажу, но обычный тупой цикл отработал бы на "ура" даже, наверное, на 1000*1000.

    • @pythondevv
      @pythondevv  Рік тому

      Согласен, все верно пишете. Но такое решение я добавил для того, чтобы видео на час не делать. Там еще пара упрощений. И я даже оставлял коммент в видео об этом :)

  • @Hamsters_Rage
    @Hamsters_Rage Рік тому +1

    traverse_matrix - просто жесть. абсолютно нечитабельный код. при это еще и рекурсивный. интересно сработает он вообще с массивном 1000 на 1000 размером например или больше

    • @pythondevv
      @pythondevv  Рік тому

      Я как раз прокомментировал этот момент в видео, пересмотри :)

  • @mr.nom4ik428
    @mr.nom4ik428 Рік тому

    Решение в лямбде написанное за 5 минут , где мои 80к
    s = [
    [10, 20, 30, 40],
    [50, 60, 70, 80],
    [90, 100, 110, 120],
    [130, 140, 150, 160]
    ]
    get_matrix = lambda mat: (lambda out: [mm := lambda m, l: [m := list(zip(*m[::-1])), l.extend(m[0][::-1]), mm(m[1:], l), 0][-1] if m else l, mm(mat, out), out][-1] )([])
    print(get_matrix(s))

    • @pythondevv
      @pythondevv  Рік тому

      С таким бы решением вы бы не прошли у меня интервью :)

  • @user-fk5zn3lv3h
    @user-fk5zn3lv3h Рік тому

    Я не гуру в математике, но матрицы там бывают не только квадратные, в общем случае прямоугольные [m x n] где m != n.

    • @pythondevv
      @pythondevv  Рік тому

      Вроде бы никто с этим не спорит)

    • @user-fk5zn3lv3h
      @user-fk5zn3lv3h Рік тому

      ​@@pythondevv
      01:36 - ' кто не изучал математику: матрица это просто квадрат из цифр'.