Python задания для обучения. Задачи по программированию. Где размять руки? Что такое docstring в Python

Сколько на самом деле существует языков программирования? Их насчитывается несколько десятков. Они разработаны под различные задачи, на любой вкус, размер и цвет. Почему я выбрал именно этот язык? Python способен выполнять очень широкий круг задач, начиная от простого скрипта до создания целых сайтов. Python для начинающих достаточно прост, лаконичен и удобен в изучении.

Из этой статьи вы узнаете:

Привет, привет! На связи Гридин Семён. Наконец — то, я добрался до основной тематики этого блога, программирование интеллектуальных систем с помощью языка Python. Я долго шёл к этому, готовился. И вот, я готов писать вам интересные статьи и изучать глубоко эту тему.

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

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

Тогда начну свою повесть))...

Возможности языка программирования Python

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

Чем же может быть полезен Python?

  1. Работа с xml/html файлами
  2. Работа с http запросами
  3. GUI (графический интерфейс)
  4. Создание веб-сценариев
  5. Работа с FTP
  6. Работа с изображениями, аудио и видео файлами
  7. Робототехника (применение одноплатных компьютеров)
  8. Программирование математических и научных вычислений

И тому подобное. Python способен выполнять львиную долю рутинных задач.

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

В этой статье мы рассмотрим с вами программирование Python с нуля.

Для того чтобы у вас работала программа на определённом устройстве, неважно какая ОС — windows, linux, RaspbianOS, MacOS. Важно, чтобы у вас находился интерпретатор, который будет понимать команды и выполнять.

Делаем следующим образом, скачиваем IDE python c официального источника .

Знакомство с интерпретатором

Итак интерпретатор обрабатывает текстовый код программы. Существует интерактивный режим среды разработки. Можно запустить несколькими способами:

  1. Из обычной командной строки сmd — введите команду python ;
  2. C рабочего стола (ярлык);
  3. С помощью меню Пуск — Python IDLE;

Вам откроется это окошечко:

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

Для Arduino тоже есть своя программная оболочка . Почитайте.

С чего начать обучение python? Давайте попробуем написать первую программу?

Создание первой программы

Программа на языке Python — это обычный текстовый файл с написанным кодом. Расширение этого файла.py. Запустить программу можно, указав соответствующее имя в командной строке. Напишем с вами простейшую стандартную программу «Hello world!».

Задача такая — вывести на экран "Hello world!". Запускаем NotePad.

Пишем следующий код:

Python

print ("Hello world!!!")

print ("Hello world!!!" )

И сохраняем в папку соблюдая путь C:\MyScripts . Рекомендую все проекты скидывать в эту папку.

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

По поводу книг. На самом деле, хоть язык и прост в плане создания кода, но очень много нюансов и различных библиотек для реализации гигантского спектра задач.

Лучшая книга по python для начинающих по праву считается самоучитель Майка МакГрата. Исчерпывающее руководство по составлению кода на языке Питон.

Извините за качество фото, по другому не получается. Остальные книги пока не рекомендую покупать, так как они на самом деле громоздкие и объёмные. Для базиса достаточно будет и МакГрата.

Ребят, на этом у меня всё, если у вас есть какие-то вопросы, вы всегда можете мне написать. Подписывайтесь на новости блога. Рассылайте друзьям. Спасибо за внимание.

С уважением, Гридин Семён

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

Здесь можно найти список из более чем 100 идей для проектов , которые вы можете реализовать. Список предназначен для Python, но идеи можно выполнить и в других языках. В нём есть и не совсем серьёзные проекты, и хорошие упражнения для практики. Список крайне рекомендуется к ознакомлению и выполнению новичкам.

А здесь вы найдёте список из 49 клонов игр , которые вы можете написать. Выбор зависит от уровня сложности.

Хотите создать что-то новое? Посмотрите Idea Machine и The Internet Wishlist , где люди публикуют свои пожелания по программам, которые они хотели бы увидеть.

Если хотите практических упражнений, то пройдитесь по данному списку сайтов/ресурсов:

Общие упражнения:

  • Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование (на любом языке).
  • Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
  • Rosalind – это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
  • Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
  • codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
  • Ruby Quiz – серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.
  • - подборка задач на логику и программирование, к каждой есть подробный разбор решения.

Задачи из олимпиад по программированию:

  • UVa Online Judge – коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
  • TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
  • CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
  • Timus – то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
  • SPOJ – похож на UVA, с огромным числом языков программирования на выбор.
  • USACO содержит несколько задач на алгоритмы с руководством по их решению.

Под определённые языки:

  • Для Prolog, Lisp и подобных языков посетите

Python 3 - это современный язык, на котором просто и приятно писать программы.

Для печати значений в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Вот программа, которая делает несколько вычислений:

Print(5 + 10) print(3 * 7, (17 - 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш - это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело # это как операция div в других языках print(37 % 3) # процент считает остаток от деления нацело # это как операция mod в других языках

Для ввода данных в программу мы используем функцию input() . Она считывает одну строку.

Вот программа, которая считывает имя пользователя и приветствует его:

Пётр print("Как вас зовут?") name = input() # считываем строку и кладём её в переменную name print("Здравствуйте, " + name + "!")

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

Попробуем написать программу, которая считывает два числа и выводит их сумму. Для этого считаем два числа и сохраним их в переменные a и b , пользуясь оператором присваивания = . Слева от оператора присваивания в программах на Питоне ставится имя переменной - например, строка из латинских букв. Справа от оператора присваивания ставится любое выражение. Имя станет указывать на результат вычисления выражения. Проиграйте эту программу и посмотрите на результаты её работы:

5 7 a = input() b = input() s = a + b print(s)

Мы видим, что программа выводит 57 , хотя в реальной жизни 5 + 7 будет 12 . Это произошло потому, что Питон в третьей строчке «сложил» две строки, а не два числа. В Питоне две строки складываются так: к первой строке приписывается вторая.

Обратите внимание, что в визуализаторе содержимое переменных a и b заключено в кавычки. Это означает, что в a и b лежат строки, а не числа.

В Питоне все данные называются объектами. Число 2 представляется объектом «число 2», строка "hello" – это объект «строка "hello" ».

Каждый объект относится к какому-то типу. Строки хранятся в объектах типа str , целые числа хранятся в объектах типа int , дробные числа (вещественные числа) - в объектах типа float . Тип объекта определяет, какие действия можно делать с объектами этого типа. Например, если в переменных first и second лежат объекты типа int , то их можно перемножить, а если в них лежат объекты типа str , то их перемножить нельзя:

First = 5 second = 7 print(first * second) first = "5" second = "7" print(first * second)

Чтобы преобразовать строку из цифр в целое число, воспользуемся функцией int() . Например, int("23") вернет число 23 .

Вот пример правильной программы, которая считывает два числа и выводит их сумму:

5 7 a = int(input()) b = int(input()) s = a + b print(s)

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

Но Python популярен не только потому что он популярен. Его легко учить, читается он как псевдо-код и он очень динамичный. Однако, изучение нового языка может оказаться довольно проблематичным занятием, найдя правильное место для обучения и людей от которых можно узнать новую информацию, вы решите половину поставленной задачи. Наш путеводитель поможет вам в этом. Это будет ваш надёжный план, который облегчит изучение Python, сделает процесс обучение весёлым и интересным.

Задание 1: начните с основ

На момент написание этой статьи, существует две основные версии Python: Python 2.7 и Python 3.2. Какую версию вы выберете для изучение не так важно, так как различия будут минимальными-особенно для новичка. Но вам стоит знать, что Python 2 поддерживает больше сторонних библиотек, в то время, как Python 3 в основном фокусируется на разработчиках работающих над улучшением языка. Выбор остаётся за вами, если код из какого-либо туториала работает не так как задумано, убедитесь, что вы используете подходящую версию Python из этого туториала.

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

Вы не найдёте лучший источник информации, чем официальная документация на сайте python.org. Тем не менее, если вы хотите начать сразу отсюда, это может оказаться плохой идей.

Контент здесь является более техническим, чем wikibooks, что в свою очередь окажется полезным позднее, по мере продвижения в изучении языка. Для новичка содержание может показаться сложным и это окажется препятствием в изучении этого простого и красивого языка.

Для начинающих самым заметным отличием Python 2 от Python 3 скорее всего будет возможность в Python 2 использовать print без скобок. Скобки в Python 3 обязательны, на этом пожалуй всё.

Задание 2: туториалы и скринкасты

Плейлист NewBoston всегда замечательный и вы можете изучить множество языков. "Bucky" отличный инструктор, его интересно слушать, так как он нашёл баланс между быть смешным и информативным, то что он пытается донести всегда легко воспринимается. Я рекомендую ознакомиться с любым из его плейлистов-особенно с плейлистом Python. Не нужно обладать какими-либо знаниями в программировании, после просмотра его видео туториалов у вас появиться прочное понимания языка.

Nettuts+ Python с нуля

Неплохим введением в язык Python будет курс Giles Lavelle. Как и в случае с серией от TheNewBoston, Lavelle подразумевает, что у вас нет опыта в программировании.

Если вы хотите увидеть реальные приложения или хотите понять веб-разработку на Python, эта серия подойдёт, как нельзя кстати.

В этом скринкасте вы создадите динамический веб-сайт с нуля, используя Python фреймворк Django.

Скринкаст по Python от ShowMeDo

StackOverflow известен не только новичками, ошибками и проблемами.

ShowMeDo обладает огромным каталогом видео относящихся к Python. Хотя может показаться, что на сайте не самый лучший пользовательский интерфейс, там находится огромный набор полезных видео, как информация для новичков, так и продвинутые методы использования Python. Вам обязательно стоит ознакомиться с этим сайтом.

Создайте Python бота, который может играть в веб-игры

В этом туториале вы познакомитесь со специфичным материалом, я не рекомендую его абсолютным новичкам. Однако я думаю его стоит упомянуть. В данном уроке, Chris Kiehl покажет как создать очень интересного Python бота, который будет играть в простую игру для вас. Туториал покажет вам мощь Python; он может пригодиться для решения повседневных задач, которые можно применить для управления вашим компьютером.

Задание 3: бесплатные электронные книги

Хорошая книга несомненно является надёжным помощником во время изучения чего-либо нового, вокруг языка Python образовалось потрясающее и дружелюбное сообщество, в следствии чего можно найти большой выбор бесплатных электронных книг. Ниже вы увидите небольшой список лучших книг. Можно скачать бесплатную электронную версию каждой из них или купить печатное издание (или пожертвовать) если хотите поддержать автора, я уверен они это оценят.

Learn Python the Hard Way

Несмотря на название книги - "Не простой подход изучения Python", изучение Python всё также является простым занятием-как это и должно быть! В данной книге, Zed A. Shaw даёт вам полное и подробное руководство, с задачами и примерами с помощью которых вы можете проверить свои силы в программировании. Книга написана неформальным языком, однако описывает детально множество подробностей, тем самым у вас не возникнет трудностей при её прочтении и результат не заставит себя ждать.

Think Python: How to Think Like a Computer Scientist

Вы не найдёте лучший источник информации, чем официальная python.org документация.

Как гласит подзаголовок, "Думать, как программист", здесь вы найдёте много теоретического материала. Возможно новички могут расстроится и книга покажется им сложной, но поверьте мне, она стоит того чтобы её прочитали, тут вы найдёте информацию о теории алгоритмов и концепциях высокого уровня.

Invent With Python

Если вас больше интересует практическая часть, создание своей игры, будет действительно полезным опытом! В этой книге, Al Sweigart предполагает, что вы не обладаете уверенным знанием Python и помогает создать вам игру. Несмотря на то что эта книга о разработке игр, она также вполне подойдёт полным новичкам. Позднее в этой статье, я упомянул похожую книгу, однако для неё требуется уверенное владение Python. Если вы чувствуете, что хорошо знаете язык, того другая книга окажется более информативным источником для вас.

The Django Book

В том случае, если хотите научиться веб-разработке на Python, вероятнее всего вы будете использовать фреймворк Django. Вы можете быть не знакомы с фреймворком Django, однако должны отлично разбираться в Python, для прочтения этой книги. Информация в ней незаменима для любого начинающего веб-разработчика.

Книги по Python

Если всех вышеперечисленных книг недостаточно или вас интересует специфичная тема, перейдите по этой ссылке. Ребята с python.org создали обширный список книг, отсортировали их по сложности и тематике.

Задание 4: познакомьтесь с StackOverflow

Тысячи разработчиков испытали те же самые проблемы, с которым вам придется столкнуться лицом к лицу. StackOverflow великолепный источник информации, где любой разработчик может найти решение своей проблемы. Когда вы столкнётесь с очередным багом и у вас не будет идей как его исправить, ищите ответ на StackOverflow. Скорее всего там, уже есть информация, как другие люди решают аналогичную задачу.

Но StackOverflow известен не только новичками, ошибками и проблемами; на этом сайте полно очень умных людей, готовых помочь - учитесь у них!

Большинства хитростей и советов, которые вы здесь найдёте, нет ни в одном из туториалов, они будут очень полезны продвинутым пользователям или пользователем со средним уровнем знаний Python.

Задание 5: проект Euler


Project Euler (произносится ‘Oil-er", запомните это, чтобы не ударить в грязь лицом, в будущем) один из моих любимых веб-сайтов. После создания аккаунта, вы можете принять участие и решить примерно 400 заданий, на этом веб-сайте. Каждое задания на 50 процентов математика, на 50 процентов программирование, на мой взгляд, самый правильный подход изучения каждого из этих предметов.

Задания начинаются с простых, чтобы проверить ваш уровень знаний языка, после чего сложность будет возрастать, в последствии появятся задачи, которые не сможет решить, даже опытный программист. В конце-концов, вам придётся найти самый эффективный алгоритм - на тот случай если у вас нет времени, ждать несколько часов на вычисление правильного ответа.

Ничто не сможет сделать вас превосходным программистом быстрее, чем поиск самого эффективного решения задач на Project Euler.

Когда вам удастся получить решение очередной проблемы, для вас откроется страница форума, где люди обсуждают решения и идеи друг с другом, касательно этой задачи. Большинство этих решения будут на языке Python. Это тот самый ключ, который поможет значительно улучшить способности программирования. Если кто-то нашёл более быстрое решение, не бойтесь потратить время и проанализируйте его, тем самым вы сможете понять какие моменты стоит переработать. Со временем, вы начнёте понимать все хитрости и навык владения языком Python улучшиться, результат не заставит себя ждать.

В дополнению к этому, есть несколько информативных блогов, где можно найти решение задач по Python на Project Euler. Если застряли на какой-нибудь задаче, ничего страшного если вы ознакомитесь с решением других разработчиков, самое главное научиться чему-то новому от них. Вот два моих любимых блога:

Задание 6: создайте игру

Помимо создания своей игры, лишь несколько вещей могут приносить удовольствие.

Помимо создания своей игры, лишь несколько вещей могут приносить удовольствие. Это может оказаться довольно крутой кривой во время процесса обучения, но это точно того стоит. PyGame самая известная библиотека для разработки игр на Python, и вам не составит труда найти бесплатные туториалы о ней. Ниже самые лучшие из них.

Официальная PyGame документация

Как и в случае с туториалами по Python, разработчики PyGame сделали документацию - введение. В материале полно технической терминологии, на случай если хотите приступить сразу к разработке игр. Однако, как всегда, документация для разработчиков, будет самым лучшим источником информации; поэтому я и рекомендую этот сайт.

Invent With Python (With PyGame)

Бесплатная электронная книга от AI Sweigart знакомит читателя с библиотекой PyGame, даже если вы ничего не знаете об этой библиотеки, после прочтения вы будете в состоянии сделать пару игр. Простые игры, будут отличным фундаментом, для создания собственного проекта, если у вас есть желание. Sweigart предоставляет подробные комментарии к своему коду, чтобы помочь в процессе обучения.

Это очередной плейлист от TheNewBoston. Отличное введение в PyGame. Опять же можно быть незнакомым с этой библиотекой, читая книгу вы начнёте разбираться в PyGame, однако в отличии от InventWithPython вы не будете делать полноценную игру.

Задание 7: изучите популярные библиотеки и инструменты

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

PyPy

Если у вас возникнет желание собрать информацию с HTML старниц... BeautifulSoup сделает всё необходимое и сэкономит огромное количество времени.

Выполняя дествия, которые требуют много ресурсов процессора и вам кажется, что Python потребляет эти ресурсы, PyPy придёт на помощь. PyPy альтернативный компилятор для Python, который может ускорить вычисление.

NumPy + SciPy

Данные библиотеки обычно используются вместе (SciPy зависит от NumPy). Если вам предстоит выполнить работу связанную с математическими вычислениями или научными исследованиями, эти библиотеки послужат отличным помощником. NumPy и SciPy расширяют математические функции и возможности Python, в следствии чего значительно ускорят решение поставленных задач.

BeautifulSoup

BeautifulSoup просто потрясающий. Сбор информации с HTML страниц может оказаться довольно утомительным занятием и вас ждёт много разочарования. BeautifulSoup сделает всё за вас и сэкономит огромное количество времени. Очень рекомендую эту библиотеку, с ней интересно работать.

Python Image Library

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

Django

Как я уже упоминал в этой статье, если вас интересует веб-разработка, ваш выбор - фреймворк Django. Это самый популярный фреймворк на Python и по нему существует огромное количество обучающих ресурсов.

Задание 8: примите участие в проектах с открытым исходным кодом

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

Поэтому проекты с открытым исходным кодом настолько популярны. Github и Bitbucket веб-сайты откуда вам стоит начать. Не волнуйтесь, в том случае если люди будут критиковать ваш код, вы не должны вносить вклад в эти проекты, незамедлительно. Всегда можно работать на отдельной ветке этого проекта, разобраться как он устроен и делать с ним всё что угодно. Если вдруг вы найдёте моменты, которые следует улучшить, отлично! Сделайте это и отправьте ваши улучшения. Проекты с открытым исходным кодом для этого и существуют.

Заключение

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

  • Цель 1 - помочь ссылками, материалами, тем, кто соберется изучать программирование и первым языком возьмет Python. Показать, что это не так сложно, как кажется.
  • Цель 2 - собрать в комментариях ссылки на полезные и интересные материалы по этой теме.

0. А получится ли у меня?

С самого начала я сомневался в том, что у меня получится сделать что-то большее чем Hello World. Мне казалось, что программирование это сверх сложно и сверх магия. К тому же есть работа, хобби, семья, что будет отвлекаться от полноценного изучения.

Зря боялся и вам не советую. Программирование наверное никогда не станет моей основной профессией, но это отличный способ творческой реализации. Это шахматы и Civilization в одном флаконе.

Все проще чем кажется и гораздо интереснее.

1. Литература

Марк Лутц “Программирование на Python” - его советуют читать на многих форумах и курсах. Мне он показался излишне подробным и нагруженным для новичка. Читать много, программировать мало. Гораздо полезнее его читать после овладевания Python минимума.

Марк Саммерфилд “Программирование на Python 3” - динамично, с отличными примерами и заданиями. Без излишнего углубления, которое только все усложняет в начале. Я рекомендую начать именно с этой книги, она поможет быстро вникнуть, не пугая сложностями.

Все остальные книги оказались мене полезными и информативными. Вообще, хорошую литературу по этой теме трудно просто так взять и купить в магазине или в цифровой версии.

2. Что читать в интернете

http://pythonworld.ru/ - простым и понятным языком рассказывается об азах языка, часто использовал, как шпаргалку.

Еще через два месяца я смог создать свое первое приложение на Django. Но главное, что теперь у меня достаточно знания для самостоятельного развития и обучения. Самое трудное - это добраться до этой точки.

Еще через месяц я подключился к двум проектам на GitHub и принимаю в них участие. Задачи решаю конечно пока простые, но взамен получаю советы и обучение.

Теги: обучение python, обучение программированию

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то