Задачи по Python, способы сортировки и плохие программисты. Наши лучшие статьи за 2022 год
Мы поговорили с Python-разработчиком Павлом Вавилиным и задали несколько вопросов о профессии. Павел — наставник на курсе по Python. По ходу текста будут его комментарии. А параллельно — наш анализ рынка и обзор зарплат.
???? Полная запись разговора
Python-разработчик — это программист, который решает задачи бизнеса на языке Python: от разработки приложения до визуализации данных.
Почти всегда Python-разработчики — это бэкендеры: то есть те, кто пишет программы для серверов. Например, если есть интернет-магазин, то у него есть «витрина» — это сайт или приложение, им питонист не занимается. А есть «служебное помещение», в котором работают такие элементы:
- Картотека клиентов и их заказов.
- Синхронизация витрины со складом.
- Система рекомендаций товаров клиентам.
- Система определения ближайшего пункта выдачи.
- Система расчёта срока доставки.
- Программа лояльности.
- Алгоритм расчёта скидки.
- Панель управления ассортиментом, скидками и промо.
- Панель управления внутренней рекламой на сайте.
Вот всё это может делать разработчик на Python, если он занимается интернет-магазином.
Ещё Python часто используют в системном администрировании, например для написания скриптов для сервера или для настройки рабочего окружения. В этом случае Python-разработчик будет называться сисадмином или девопсом.
Наконец, Python как технология незаменим в обработке больших данных и их визуализации, но на эту работу обычно нанимают не разработчиков, а дата-сайентистов и аналитиков.
Павел Вавилин:
Здесь хотел бы добавить про деление на джунов, мидлов и сеньоров. Каждый разработчик сам определяет свой уровень — это зависит от наглости и уверенности самого разработчика. В Python-разработке это работает так же: если вы чувствуете, что вы доросли до мидла, то пора заявлять о себе как о мидле. Если тебя признают мидлом — всё, ты мидл. Корочки об уровне не выдают.
Рассказывает Павел:
Из хард-скиллов разработчика — знание базового синтаксиса Python. Второе — уметь пользоваться поисковиком и переводчиком. Поисковик позволяет найти ответ на любой вопрос; переводчик — понять этот ответ.
Другие технологии. Здесь есть замечание: программирование всё-таки не ограничивается одним языком. Язык — это инструмент. В этом смысле чистый Python-разработчик — это какое-то мифическое существо. Для многих задач одного Python мало, поэтому разработчики стремятся изучить другие языки.
Хотя есть направление, когда разработчик становится настолько крутым, что становится незаменимым для компании. Почему бы нет, такой подход тоже возможен.
Главный софт-скилл программиста — лень. Зачем мне делать что-то второй раз? Я это автоматизирую. За меня это может сделать компьютер? Пусть делает.
Важно и уметь общаться с людьми. У многих джунов замечаю такой надлом: вот, я посижу над проблемой в коде несколько часов, но найду ошибку. Но с опытом многие разработчики понимают, что проще подойти и спросить у коллеги, где ошибка, чем сидеть сутки и ломать голову над задачей.
Сначала посмотрим на разные мнения, а в конце сделаем общий вывод. Например, на сайте «ГородРабот» на 2023 год средняя зарплата программиста Python — 119 688 рублей. Это средний показатель всех зарплат Python-разработчиков вне зависимости от уровня:
Медианный показатель — 68 000 рублей. Это зарплата без учёта самых высоких и самых низких зарплат.
А вот на «Хабр Карьере» медианная зарплата — 167 000 рублей, по результатам 333 анкет за первое полугодие 2023-го.
Зарплата сильно различается в зависимости от уровня. В среднем джуну предлагают зарплату 76 000 рублей, мидлу — 176 844 рублей, сеньору — 254 005 рублей.
Павел Вавилин:
Когда-то тысяч 50 мне казалось огромной зарплатой. Потом произошёл неприятный случай на работе, я обиделся и стал искать новые вакансии. Сразу поставил ценник выше, чем был. И так постепенно дорос до зарплаты более 200 тысяч рублей.
Сейчас параллельно с основной работой совмещаю проектную деятельность — это даёт дополнительный заработок. В один момент у меня была большая потребность зарабатывать больше, поэтому пришлось научиться всё совмещать. Совмещаю до сих пор.
По рынку точно не могу сказать, но у среднего Python-разработчика в средней компании со средним чеком зарплата будет около 100 тысяч рублей. Мы редко обсуждаем зарплату с коллегами, поэтому сложно ориентироваться по рынку.
По динамике есть две новости — хорошая и плохая. Хорошая — зарплаты Python-разработчиков остаются на высоком уровне. Плохая — количество вакансий на джуниор-позиции уменьшается.
Сначала про зарплаты. За 2022 год наблюдался незначительный спад. Это было связано с политикой и с резким отъездом разработчиков за рубеж.
За год средняя зарплата упала с 126 000 рублей до 111 500 рублей
В начале 2023 года продолжился небольшой спад. Особенно он заметен в марте — средняя зарплата упала до 88 642 ₽. Но в апреле зарплата выровнялась и вернулась к показателям начала 2022 года.
Это же подтверждают аналитики «Хабра» — зарплата остаётся примерно в одном диапазоне 140 000—160 000 рублей. Для джунов зарплаты — в диапазоне от 60 000 до 80 000 рублей. Причём у джунов более заметный рост в сравнении с 2021 годом.
Значения разные, но динамика одна — деньги в Python-разработке есть.
С вакансиями сложнее, чем с зарплатой. В 2022 году были готовы предложить около 1,5 тысячи вакансий Python-разработчика только в Москве.
Лидерами по количеству вакансий Python-разработчика в России были Москва, Санкт-Петербург и Екатеринбург. С января по май 2023 года предложили около 700 вакансий Python-разработчика в Москве.
При этом удалёнку никто не отменял: можно работать в московской компании, сидя в Пензе, Брянске или Туле.
Компании отмечают, что уровень экспертности разработчиков сильно упал. Квалифицированных специалистов мало, поэтому вакансии мидлов и сеньоров часто пустуют. А разработчиков-джунов много, но не все компании сейчас готовы браться за их обучение.
Это не значит, что работы нет совсем. Но теперь Python-разработчикам нужно потратить больше сил, чтобы найти подходящее место работы.
Павел Вавилин:
Если несколько лет назад был дикий спрос на джунов: многие компании были готовы вкладываться и обучать интернов. В некоторых компаниях были даже бесплатные курсы, по результатам которых они нанимали специалистов. Многих ребят забирали работать за рубеж. Сейчас такого нет.
Мы подобрали вакансии для начинающих Python-разработчиков. Сначала прочитайте комментарий эксперта, а потом изучайте вакансии.
Павел Вавилин:
Кто хочет быстро развиваться, но очень много работать, стоит смотреть вакансии компаний-лидеров: Яндекс, Тинькофф — вам туда. Единственное замечание — нужно понимать, что это будет правда большой труд, но при этом с хорошей отдачей и корпоративными привилегиями.
Я прошёл собеседование на одну из фуллтайм-позиций в Яндексе, но отказался, потому что было более выгодное предложение. А вот на позицию наставника в Практикуме согласился — её можно совмещать с основной работой.
Кто любит неспешную работу и не хочет стрессовать, ищите вакансии у менее раскрученных компаний. Там есть больше времени, чтобы подумать и проанализировать решения.
- Тем, кто хочет быстро развиваться и быстро получать отдачу:
- Тем, кто хочет спокойно развиваться и меньше стрессовать:
- Нужно ли знать английский Python-разработчику?
Не обязательно, зависит от задач и от места работы. Если вы работаете в иностранной компании, то английский нужен для общения. Ещё английский нужен, чтобы изучать документацию. Но если что — есть переводчики.
Как правильно произносить: «питон-разработчик» или «пайтон-разработчик»?
Это то же самое, что спросить, как правильно произносить API: «апи» или «эй-пи-ай». Зависит от того, как у вас принято. Если вы собираетесь работать в компании с сотрудниками из разных стран, то лучше произносить «пайтон».
Как относитесь к тому, что разработчики часто меняют компании?
Это тренд, который идёт на пользу самим разработчикам. Им приходится решать разные задачи у разных работодателей. Так расширяется кругозор и функционал.
Правда, что Python — уже прошлый век и нужно учить Go?
Иногда студенты мне говорят: «Ну вот, на Go так много вакансий, зачем я пошёл на Python». В этот момент я им говорю, что на Go редко ищут начинающих специалистов, а на Python — чаще.
Попробовать бесплатно
Что должен знать junior Python-разработчик, чтобы найти работу
В статье обозреваем рынок труда джуниор-разработчиков на Python в 2023 году, разбираем типичные ошибки кандидатов при поиске работы и рассказываем, как Хекслет помогает повысить шансы на оффер.
В написании статьи принимал участие Грегори Салиба, действующий Python-разработчик и наставник подготовительного курса по Python, а также команда Хекслета:
- Екатерина Савченко, карьерный консультант
- Анна Автономова, специалист по обучению
- Алиса Воробьева, тимлид Карьерного трека.
Что сейчас происходит на рынке труда Python-разработчиков
Согласно индексу и , в июне 2023 года Python занимает первое место в списке самых популярных языков программирования. Его используют в очень многих сферах: веб-разработка, машинное обучение, DevOps, тестирование, разработка десктопных приложений, геймдев. И также Python отличается простым синтаксисом.
По калькулятора зарплат Хабр Карьеры, заработная плата джуниор Python- разработчика не изменилась в разрезе первого и второго полугодия 2022 года и составила в среднем 70 000 рублей.
Во многом из-за всех перечисленных достоинств Python считается одним из самых перспективных языков для изучения, и мы на Хекслете тоже можем подтвердить высокий интерес к нему.
Однако у такой популярности есть и минусы — сегодня все больше программистов ищут работу именно на Python.
Рынок перестал быть «рынком кандидата»: теперь работодатели диктуют правила игры, выбирая лучших, подготовленных специалистов.
На одну вакансию джуниор Python-разработчика приходит от 200 до 400 откликов. Такая конкуренция вынуждает кандидатов активно бороться за то, чтобы быть замеченным.
https://www.youtube.com/watch?v=WBaL7ANQbzQ\u0026pp=ygWbAdCX0LDQtNCw0YfQuCDQv9C-IFB5dGhvbiwg0YHQv9C-0YHQvtCx0Ysg0YHQvtGA0YLQuNGA0L7QstC60Lgg0Lgg0L_Qu9C-0YXQuNC1INC_0YDQvtCz0YDQsNC80LzQuNGB0YLRiy4g0J3QsNGI0Lgg0LvRg9GH0YjQuNC1INGB0YLQsNGC0YzQuCDQt9CwIDIwMjIg0LPQvtC0
Все эти изменения требуют развития новых компетенций и гибких навыков у кандидатов. В статье расскажем, как Хекслет помогает программистам правильно позиционировать себя на рынке, у каких разработчиков есть более высокие шансы найти работу и как питонистам соответствовать требованиям работодателей.
Получите профессию «Python-разработчик» за 10 месяцев! Python-разработчик занимается разработкой серверной части сайта, которая отвечает за логику и базы данных. Погрузитесь в практику с первого дня на Хекслете. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.
Как Хекслет помогает джуниор-разработчикам повысить шансы на оффер
Еще пару-тройку лет назад от джуна требовали самый минимум — нужно было только знание языка программирования, а также готовность к работе в команде. Сейчас же требования ужесточились, и чтобы им соответствовать, необходимо прокачиваться более серьезно.
Мы на Хекслете даем несколько рекомендаций студентам, которые проходят наши профессии и курсы. Чтобы повысить свои шансы на оффер, им необходимо выполнить следующие шаги:
Получить необходимые хард скиллы, пройдя всю профессию на Хекслете
Разработчики с хорошей технической базой знаний ценились всегда, и особенно — сейчас. Понимая это, наши инженеры-программисты постоянно обновляют и улучшают учебные программы под запросы работодателей.
Поучаствовать в опенсорсе для получения первого продакшен-опыта
Продакшен-опыт — это опыт работы над реальным проектом, которым пользуются люди. Раньше джуниору было легко устроиться на работу без такого опыта, но сейчас он необходим, чтобы заинтересовать работодателя.
Опенсорс — это проекты с открытым исходным кодом, в разработке и развитии которых может принять участие все желающие: как самые начинающие разработчики, так и программисты с опытом. У Хекслета есть множество опенсорс-проектов — полный список мы раскрываем в нашем гайде «Как участвовать в жизни Хекслета».
Пройти программу Карьерного трека
Карьерный трек — это программа, на которой Хекслет помогает написать хорошее сопроводительное письмо, правильно подать свой опыт в резюме.
Мы также проводим тестовые интервью с наставниками, чтобы, опять же, студенты могли избавиться от волнений и стресса перед реальными собеседованиями.
Кроме того, они получают обратную связь от интервьюера, узнают свои сильные стороны и прорабатывают слабые.
Прорешать как можно больше тестовых заданий
У нас в открытом доступе есть с тестовыми от разных компаний, который мы наполняем уже 11 лет. Прорешивание заданий оттуда помогает набить руку и снимает стресс при прохождении реальных тестов на собеседованиях.
Из инженера-электрика и альпиниста — в бэкенд-разработчики. Мой путь в программирование
Ошибки джунов, которые мешают им трудоустроиться
Многие джуниоры сейчас боятся, что их поиск работы затянется надолго или вовсе ни к чему не приведет. К сожалению, такое действительно может произойти. Но только в следующих случаях.
Разработчик не прокачивает хард скиллы после обучения
Первая ошибка кандидатов — окончить профессию и думать, что на этом можно забыть об обучении. На самом деле получать новые навыки нужно каждый день, особенно с учетом текущей ситуации на рынке. IT — это та профессия, в которой никак нельзя переставать учиться. Все меняется, появляются новые технологии, библиотеки, поэтому нужно оставаться в тренде.
Важно также самому мониторить вакансии, следить за требованиями работодателей и быть готовым к непрерывному совершенствованию своих знаний.
У кандидата нет четкого представления, как искать работу
Залог успешного трудоустройства — это целеполагание и мотивация. Сейчас особенно легко потерять нужный настрой на поиск работы. Но важно уметь собраться и сконцентрироваться на том, что поиск работы — это своеобразный проект, который нужно выполнить. Поставить себе цель: найти работу, неважно за один или три месяца, используя все свои профессиональные знания.
https://www.youtube.com/watch?v=WBaL7ANQbzQ\u0026pp=YAHIAQE%3D
Мы на Карьерном треке не только готовим к трудоустройству, но и помогаем ставить цели. Подсказываем, как разбить на этапы проект под названием «Получение своей первой работы в IT». Студенты учатся прокачивать свои хард и софт скиллы и выстраивать стратегию по поиску работы, что в современных реалиях является очень ценным и нужным навыком.
Мы помогаем джуниорам выработать нужный настрой. Предупреждаем, что получить работу сейчас нелегко, но даем для этого все необходимые инструменты — консультации по составлению сопроводительного письма, резюме и портфолио. Помогаем не отступать от своей основной цели — найти работу.
Как я 10 лет проектировал мосты, а в 33 года стал Python-разработчиком в банке
Разработчик бездумно откликается на все вакансии подряд
Как правило, тяжелее всего трудоустроиться кандидатам, которые откликаются на все вакансии подряд, не пишут сопроводительные письма и думают, что возьмут количеством. Это не всегда работает, учитывая нынешнюю ситуацию на рынке: поиск работы таким способом может затянуться, а разработчик, скорее всего, выгорит и опустит руки.
Гораздо успешнее трудоустраиваются люди, которые вчитываются в требования вакансий, выбирают компании и команды своей мечты и анализируют причины отказов. Поэтому важно четко понимать, на какие вакансии стоит и не стоит откликаться, а также как грамотно подать себя при отклике.
Кандидат сам тормозит поиск работы или не выполняет рекомендации по трудоустройству
Поиск работы — это тоже работа. Если человек захотел получить сложный технический навык или профессию, то он должен быть готов к тому, чтобы активно заниматься новым делом. В том числе — и искать работу. Этот процесс должен быть системой, а не стихийными и бездумными откликами на вакансии.
Вся наша работа на Хекслете направлена на то, чтобы человек нашел работу: мы даем все необходимые инструменты для этого. Например, учим писать грамотное и интересное сопроводительное письмо, помогаем создать сильное резюме, даем советы по оформлению профиля на GitHub, LinkedIn, Хабр Карьере. Также мы рекомендуем студентов на стажировки и открытые вакансии в компании-партнеры.
Но несмотря на все это, сам кандидат не должен забывать, что поиск работы — труд обоюдный. Студенту нужно самостоятельно обрабатывать наши рекомендации по резюме и портфолио, искать компании, в которых хочется работать. И только тогда можно будет прийти к своей цели — найти работу.
Несколько советов джуниорам по трудоустройству от Python-разработчика
Сейчас сложность вопросов на собеседованиях, которые задаются джунам, можно приравнять к сложности вопросов мидлам два-три года назад. Работодатели заинтересованы в том, чтобы проводить серьезные отборы и выбирать более квалифицированных сотрудников.
Чтобы противостоять огромной конкуренции, я советую проделать следующие шаги:
- Решайте — они помогут выработать программистское мышление. А еще хорошо проговаривать решение задач вслух — на собеседовании это только в плюс, работодатель проследит за ходом вашей мысли.
- Пишите свои проекты. Даже если они не полностью рабочие, с неполноценной архитектурой — ничего страшного. Главное — показать, что вы работали с тем стеком, который от вас требуют, и что у вас есть тому подтверждение на GitHub.
- Не отказывайтесь от стажировок, даже от неоплачиваемых. Стажировки — это ваш шанс показать свой уровень, запомниться коллегам и произвести хорошее впечатление на работодателя. Недавно один из моих студентов как раз прошел двухнедельную практику, показал на ней хорошие результаты. И в итоге его взяли программистом в штат.
Однажды я проснулась с мыслью: «Хочу писать бэкенд!»: история Python-разработчицы
Да, на рынке труда сейчас много кандидатов, которые составляют большую конкуренцию. Придется принять факт, что сейчас нужно делать больше усилий, чем другие. Поиск работы — это обыкновенный конкурс, где ты показываешь, насколько хорош.
Один из моих советов, который я обычно даю студентам — не думайте о том, что как только вы выучите Python, сразу поедете работать у моря на Бали.
Помните, что вы должны, а точнее обязаны ежедневно заниматься разработкой, даже если у вас есть отвращение к этому.
Чем больше вы будете набивать руку на задачках, тем быстрее вы дойдете до той точки, когда скажете: «Ого, а у меня недурно получается, — или, — Я уже стал намного лучше писать код».
Итог
Вакансии теперь более челленджовые, но главное, что меньше их не становится. Поэтому самое важное сейчас — не опускать руки, набираться продакшен-опыта, изучать рынок и грамотно подавать себя.
Как бы банально это ни звучало — верьте в себя и свои силы. Когда на собеседование приходит уставший человек с потухшими глазами, продать себя ему гораздо сложнее. Если вы получили профессию Python-раработчика, значит вы прошли долгий путь, развили сложный технический навык, наработали портфолио и резюме, где отражен весь ваш труд — гордитесь собой.
Не забывайте про свою цель — оффер. Теперь вы знаете, как именно этот оффер можно получить.
Получите профессию «Python-разработчик» за 10 месяцев! Python-разработчик занимается разработкой серверной части сайта, которая отвечает за логику и базы данных. Погрузитесь в практику с первого дня на Хекслете. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.
Лучший алгоритм решения задач по программированию на Python
По-прежнему актуальны споры о фактической пользе таких веб-сайтов по Python-программированию, как Codewars или Leetcode, и их роли в развитии профессиональных навыков разработчиков. Но несмотря на это, многие все равно прибегают к их помощи для подготовки к собеседованиям, улучшения своего мастерства и/или просто забавы ради. Так или иначе, но этим ресурсам определенно найдется место в жизни любого программиста Python или специалиста по данным.
В этой статье вам предлагается максимально эффективный подход к проработке вопросов по Python-программированию. Мы сформулируем относительно простую задачу, разработаем план с применением псевдокода и решим ее разными способами, начиная с самого простого.
Задача: написать функцию, принимающую одно целочисленное значение и возвращающую сумму целых чисел от 0 до этого значения включительно. При использовании нецелочисленного значения функция должна возвращать 0.
Итак, при передаче функции числа 5 она вернет сумму целых чисел от 0 до 5 или (0+1+2+3+4+5), которая равняется 15. Если передаваемое значение относится к другому типу, отличному от целого числа, такому как строка или число с плавающей точкой и т. д., функция вернет 0.
На первом этапе необходимо решить задачу, используя псевдокод. Он позволит спланировать действия без оглядки на синтаксис.
Попробуем что-нибудь в таком роде:
def add(num):
# если num целое число, то
# складываем числа от 0 до num и возвращаем сумму
# если num не является целым числом, то возвращаем 0
Sample inputs/outputs:
# input: 5, output: 15
# input: 'and', output: 0
Мы определили функцию add, принимающую значение num. Внутри нее в виде комментариев схематично прописываются шаги.
Если передаваемое функции значение является целым числом, то мы складываем числа от 0 до этого значения включительно и затем возвращаем сумму. Если же оно не принадлежит к типу целых чисел — просто возвращаем 0.
После этого прописываем несколько примеров конкретных входных данных для получения желаемого вывода.
Распишем подробнее следующий шаг псевдокода:
# складываем числа от 0 до num и возвращаем сумму
Это можно сделать несколькими способами. Как будет выглядеть псевдокод, если мы попробуем выполнить этот шаг с помощью цикла for?
def add(num):
# если num целое число, то
# создаем переменную sum и присваиваем ей значение 0
# используем цикл for и перебираем числа от 0 до num
# обновляем значение sum, добавляя к нему num
# возвращаем sum
# если num не является целым числом, то возвращаем 0
Теперь постараемся справиться с задачей на основе разработанного плана!
С помощью цикла for задача решается следующим образом:
def add(num):
# если num целое число, то
if type(num) == int:
# создаем переменную sum и присваиваем ей значение 0
sum = 0
# используем цикл for и перебираем числа от 0 до num
for x in range(num+1):
# обновляем значение sum
sum += x
# возвращаем sum
return sum
# если num не является целым числом, то возвращаем 0 else:
return 0
Проанализируем этот код.
Сначала с помощью функции type проверяем, является ли передаваемое значение num целым числом.
if type(num) == int:
Если тип — целое число, создаем переменную sumи присваиваем ей значение 0.
sum = 0
Затем с помощью цикла for и функции range перебираем целые числа от 0 до входного значения.
Обратите внимание, что функция range создает одноименный итерируемый объект, который начинается с 0 (если не указано конкретное начальное значение) и переходит к числу, меньшему, чем завершающее цикл значение (поскольку оно единственно возможное).
Следовательно, к этому значению нужно прибавить 1 (num+1), так как требуется сложить все целые числа от 0 до num включительно.
range(start, stop[, step])
Функция range создает итерируемый объект range, что позволяет перебирать в нем элементы в цикле for, прибавляя каждое число или xк переменнойsum.
for x in range(num+1):sum += x
По завершению итераций функция возвращает sum.
return sum
И наконец, если передаваемое функции значение не является целым числом, возвращаем 0.
else: return 0
Вариант кода без комментариев.
def add(num):
if type(num) == int:
sum = 0
for x in range(num+1):
sum += x
return sum
else:
return 0
Протестировав функцию add, получаем правильные результаты.
add(5)
# 15
add('and')
# 0
Избранный способ отлично справляется с данной задачей по программированию. Код выполняет свое назначение, легко читаем и работает должным образом.
Но, предприняв попытку найти другие варианты достижения поставленной цели, мы извлечем для себя больше пользы, поскольку освежим знания Python и прокачаем навыки решения проблемных ситуаций.
Эти приемы могут быть более или менее пайтонические, но в любом случае это интересный и полезный опыт поиска разных подходов к одной и той же задаче.
Итак, приступаем к новому способу решения.
Функция reduce принимает итерируемый объект и приводит его к единичному суммарному значению. У нее может быть 3 аргумента, два из которых являются обязательными: функция с 2 аргументами и итерируемый объект.
Вместо цикла for воспользуемся reduce для нахождения суммы итерируемого объекта и решения поставленной задачи.
from functools import reducedef
add(num):
if type(num) == int:
return reduce(lambda x,y: x+y, range(num+1))else:
return 0
Лямбда-функция служит в качестве аргумента, а объект range используется как итерируемый объект. Reduce() приводит range к единичному суммарному значению sum, которое мы возвращаем.
С помощью тернарных операторов можно еще больше сократить код, оформив инструкцию if/else в одну строку следующим образом:
x if C else y
С — это условие, которое проверяется в первую очередь. Если оно True, то вычисляется x, иначе — y, после чего возвращаются соответствующие значения.
В коде это можно реализовать так:
def add(num):return reduce(lambda x,y: x+y, range(num+1)) if type(num) == int else 0
Благодаря всем этим изменениям нам удалось сократить код внутри функции до одной строки. Возможно, это не самый читаемый и пайтонический способ решения, но тем не менее он способствует развитию навыков программирования за счет обдумывания разных подходов к одной и той же проблеме.
Далее разберем еще один способ.
Он состоит в применении встроенной функции Python — sum(). Она принимает итерируемый объект и возвращает сумму его элементов. Возможен вариант с передачей начального значения, если его первично требуется добавить к элементам.
sum(iterable, start)
Опробуем эту функцию в деле:
def add(num):
return sum(range(num+1)) if type(num) == int else 0
Вероятно, это самый лучший способ справиться с задачей, поскольку код одновременно и максимально компактный, и легко читаемый. Кроме того, можно не сомневаться в его отличной производительности.
В данной статье мы продемонстрировали, что решение задачи по Python разными способами улучшает навыки программирования за счет пополнения копилки знаний. Сформулировав задачу, мы рассмотрели этапы ее решения.
Сначала наметили последовательность действий с помощью псевдокода, после чего реализовали задуманное разными способами, используя сначала цикл for, а затем функцию reduce. Применение тернарных операторов позволило еще больше подсократить код и при этом сохранить его читаемость.
И наконец, благодаря встроенной функции sum наряду с тернарными операторами мы нашли наиболее лаконичный и пайтонический способ решения поставленной задачи.
- Читайте нас в Telegram, VK и Яндекс.Дзен
- Перевод статьи Luay Matalka: Best Way to Solve Python Coding Question
Сменился самый популярный в мире язык программирования
15 Августа 2022 15:40 15 Авг 2022 15:40 |
Python достиг первого места в рейтинге языков программирования Tiobe, продемонстрировав лучшие результаты за все время существования этого индекса популярности. В августе 2022 г. программисты интересовались Python чаще, чем C, C++ или Java. Любимый многими разработчиками Rust затерялся в третьем десятке.
Python возглавил августовский рейтинг популярности языков программирования компании Tiobe. По этому критерию он обошел язык C, который лидировал в августе 2021 г., а теперь опустился на вторую позицию.
Аналитики Tiobe утверждают, что в августе 2022 г. Python набрал очередные 2% и его итоговый рейтинг составил 15,42%. Это наивысший показатель Python за все время участия в рейтинге. Его составители подчеркивают универсальность языка – он подходит для решения едва ли не любой задачи.
Исключением являются встраиваемые системы с высочайшими требованиями к безопасности, для которых Python не подходит ввиду использования динамической типизации и медлительности (подразумевается относительно низкая скорость исполнения инструкций интерпретатором).
Здесь по-прежнему котируются «быстрые» C и C++, популярность которых, к слову, в августе 2022 г. тоже возросла: +2,03% и +2,81% относительно августа 2021 г. соответственно.
Однако если C при этом одну позицию в рейтинге утратил, C++ четвертую строчку за собой сохранил.
Самые популярные языки программирования в августе 2022 г. по версии Tiobe. Нажмите на изображение для его увеличения
Институт инженеров электротехники и электроники (Institute of Electrical and Electronics Engineers, IEEE) в 2020 г. и 2021 г. назвал Python самым популярным языком программирования. Разработчики, владеющие им, по оценке IEEE, пользовались наибольшим спросом среди работодателей. В топ-5 также вошли Java, C, C++ и JavaScript.
Последний неожиданно оказался максимально востребован в Великобритании. Как ранее писал CNews, треть открытых вакансий разработчиков ПО туманного Альбиона на начало августа 2022 г. содержат пункт обязательном знании JavaScript.
Взлеты и падения
Впервые Python стал «языком месяца» по версии Tiobe в октябре 2021 г. и пока с этим статусом не расставался.
Компания также признавала Python «языком года» в 2021, 2020, 2018, 2010 и 2007 гг. Подобный статус закрепляется за языком программирования, который продемонстрировал наибольший прирост популярности за год в относительных значениях.
Если август 2022 г. стал лучшим месяцем для Python за все время составления рейтинга Tiobe, то худшим оказался февраль 2003 г. Впервые за всю историю существования рейтинга Python имеет шанс стать наиболее популярным языком по итогам года.
Прочие перестановки
Августовский рейтинг Tiobe не может похвастать большим числом изменений. Позиции с третьей по седьмую в августе 2022 г. не отличаются от таковых в августе 2021 г. Там расположились (в порядке убывания популярности): Java, C++, C#, Visual Basic и JavaScript. На одну позицию улучшил свое положение Ассемблер (Assembly Language), переместившись с девятой строчки на восьмую (+0,14%).
Стоит также отметить ухудшение показателей (-0,8%) PHP, который в актуальной версии рейтинга Tiobe оказался на пороге вылета из первой десятки. В спину ему дышит Swift, прибавивший 0,3% и поднявшийся сразу на пять строчек.
Названный программистами в августе 2021 г. «самым любимым» язык Rust в нынешней версии рейтинга оказался в третьем десятке – на 22 месте, уступив Scratch, Perl, Fortran и Ruby.
Как составляется рейтинг
Алгоритмы поиска и сортировки
- Выбирать/находить способы оптимизации и ускорения решений задач
- Оценивать сложность алгоритмов по времени и по памяти
- Комбинировать простые конструкции языка для построения сложных алгоритмов
- Разберетесь в основных алгоритмах поиска и сортировки. Поймете их преимущества и недостатки
- Находить сильные (преимущества) и слабые (недостатки) стороны алгоритмов
- Успешно проходить собеседования, на которых вас будут мучить алгоритмами
- Применять поиска и сортировки на реальных практических заданиях
Хочешь получить бесплатную консультацию?
Пиши слово «Консультация» по ссылке https://t.me/ironprogrammpro_bot
Если вы не можете оплатить курс в рублях напишите в Telegram или на электронную почту iodzeranov@mail.ru.
Курс можно купить в рамках курса Алгоритмы и структуры данных со скидкой.
Принципы, лежащие в основе алгоритмов и структур данных, актуальны для любого стека технологий. Они не устаревают. Знание и понимание этих принципов помогает разработчикам писать более эффективный и аккуратный код.
Курс формирует базовые знания в работе с алгоритмами поиска и сортировки данных. Позволяет освоить навыки необходимые для анализа программ.
Алгоритмы в явном виде используются в узких направлениях разработки, где время выполнения и затрачиваемая память играют важнейшую роль:
- Разработка программ для самолетов и вертолетов
- Разработка программ для торговли на бирже
- Разработка баз данных
- Разработка систем, где важна каждая миллисекунда
А неявно алгоритмы используются ВЕЗДЕ: в готовых библиотеках, в базах данных и в готовых технологиях. За любым вызовом готового метода стоит готовый алгоритм. Следовательно, важно понимать оптимальность выполнения любого метода.
Цель курса — обучить основам алгоритмического программирования, привить практические навыки решения задач с помощью базовых алгоритмов, сформировать правильное представление о времени работы и эффективности различных алгоритмов.
Алгоритмическое мышление — крутой навык, который никогда не оставит без интересных проектов
Вы получите фундаментальные знания и научитесь решать реальные задачи с помощью алгоритмов. Сможете устроиться в любую компанию и участвовать в сложных высокооплачиваемых проектах.
Курс поможет вам получить востребованный навык и повысить свою ценность на рынке
Технологические компании ценят сотрудников с алгоритмическим мышлением.
Часто задаваемые вопросы:
Подойдет ли мне курс
Есть бесплатная часть с теорией и задачами, которая поможет ответить на этот вопрос. Если вы решите, что курс не для вас — это тоже положительный результат.
На каком языке программирования проходит обучение?
Теория — без привязки к языку программирования. Примеры реализации алгоритмов даны на C# и Python.
Решать и сдавать практические задания можно на любом языке программирования.
Как и когда я буду учиться?
У курса нет даты старта — вы можете начинать его прохождение в ЛЮБОЙ МОМЕНТ. Курс можно проходить сколько угодно: можно растянуть его на год, можно пройти за месяц, цена курса при этом не изменится. У нас нет подписок по месяцам: после покупки курс ваш навсегда.
Что делать, если я не справлюсь с нагрузкой?
Если вы чего-то не понимаете в материале — задавайте вопросы в х, преподаватель отвечает на них каждый день: он приведёт более подробное объяснение, больше примеров — вы точно всё поймёте. Главное — не стесняться! Если вы всё-таки очень стесняетесь — ученики курса и преподаватель общаются между собой в телеграмм (ссылка внутри курса). Здесь можно делиться всем, а не только обсуждать материал. Взаимная мотивация и дух товарищества не дадут вам забросить подготовку =) После курса меня возьмут работать в Яндекс?
Поддержка при поиске работы будет, но гарантий трудоустройства в Яндекс НЕ будет. Многое зависит от вас самих: наличие подходящего опыта для вакантных позиций, желание сменить работу и упорство в прохождении всех этапов.
Начните учиться бесплатно
Вводная часть включает в себя несколько уроков и задач для закрепления, нет ограничений по времени.
Поступай на курс и расширяй свой арсенал практических инструментов в работе с кодом!
- Для тех, кто готовится к собеседованиям в IT сфере. Посмотрите по-новому на знакомые алгоритмы, освежите знания.
- Для программистов, заинтересованных в оптимизации своего кода. Повысите свой профессиональный уровень. Сможете участвовать в сложных проектах, связанных с высоко нагруженными системами и обработкой больших объёмов данных. Повысите вероятность повышения зарплаты
- Для тех, кто заинтересован в развитии алгоритмического мышления, позволяющего реализовывать сложные программные проекты
- Для тех, кто занимается спортивным программированием. Сможете применять алгоритмы для решения олимпиадных задач.
- Для студентов младших курсов, которые хотят подтянуть или освоить дисциплину «Алгоритмы и структуры данных»
- Для тех, кто хочет расширить кругозор
Знание основ программирования. Никаких предварительных знаний структур данных не требуется, всё расскажем с нуля.
Вы смотрите видео, читаете конспект, а затем выполняете задачи по пройденным темам. Решения будут проверяться автоматической системой, поэтому вы будете получать быструю обратную связь. Если у вас возникнут проблемы, команда курса даст советы и подсказки.