Каждому изучающему Python нужно писать код для закрепления. Вашему вниманию предлагаются несколько задач для реализации (не слишком простых (кроме первой) и не слишком сложных).
Для выполнения заданий крайне рекомендуется пройти самоучитель.
Также для этих задач есть репозиторий с тестами и моими решениями (чтобы проверить себя).
Для запуска тестов для вашей функции проще всего будет добавить код из папки с тестами в конец файла с функцией.
А теперь, собственно, задачи:
- Простейшие арифметические операции (1)
- Високосный год (2)
- Квадрат (3)
- Времена года (4)
- Банковский вклад (5)
- Простые числа (6)
- Правильная дата (7)
- XOR-шифрование (8)
- Задача 1
- Задача 2
- Задача 3
- Задача 4
- Задача 5
- Задача 6
- Задача 7
- Задача 8
- Задача 9
- Задача 10
- Задача 11
- Задача 12
- Задача 13
- Начинаем подготовку к изучению Python
- Знакомимся с Python
- Переходим к практике
- Продолжаем изучение: книги о Python по направлениям
Простейшие арифметические операции (1)
Написать функцию arithmetic, принимающую 3 аргумента: первые 2 — числа, третий — операция, которая должна быть произведена над ними. Если третий аргумент +, сложить их; если —, то вычесть; * — умножить; / — разделить (первое на второе). В остальных случаях вернуть строку "Неизвестная операция".
Високосный год (2)
Написать функцию is_year_leap, принимающую 1 аргумент — год, и возвращающую True, если год високосный, и False иначе.
Квадрат (3)
Написать функцию square, принимающую 1 аргумент — сторону квадрата, и возвращающую 3 значения (с помощью кортежа): периметр квадрата, площадь квадрата и диагональ квадрата.
Времена года (4)
Написать функцию season, принимающую 1 аргумент — номер месяца (от 1 до 12), и возвращающую время года, которому этот месяц принадлежит (зима, весна, лето или осень).
Банковский вклад (5)
Пользователь делает вклад в размере a рублей сроком на years лет под 10% годовых (каждый год размер его вклада увеличивается на 10%. Эти деньги прибавляются к сумме вклада, и на них в следующем году тоже будут проценты).
Написать функцию bank, принимающая аргументы a и years, и возвращающую сумму, которая будет на счету пользователя.
Простые числа (6)
Написать функцию is_prime, принимающую 1 аргумент — число от 0 до 1000, и возвращающую True, если оно простое, и False — иначе.
Правильная дата (7)
Написать функцию date, принимающую 3 аргумента — день, месяц и год. Вернуть True, если такая дата есть в нашем календаре, и False иначе.
XOR-шифрование (8)
Написать функцию XOR_cipher, принимающая 2 аргумента: строку, которую нужно зашифровать, и ключ шифрования, которая возвращает строку, зашифрованную путем применения функции XOR (^) над символами строки с ключом. Написать также функцию XOR_uncipher, которая по зашифрованной строке и ключу восстанавливает исходную строку.
Вместе с факультетом Python-разработки GeekUniversity собрали для вас несколько простых задач по Python для обучения и тренировки. Их можно решать в любом порядке.
Обратите внимание, что у любой задачи по программированию может быть несколько способов решения. Чтобы посмотреть добавленный нами вариант решения, кликните по соответствующей кнопке. Все приведённые варианты написаны на Python 3.
Задача 1
Есть список a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] .
Выведите все элементы, которые меньше 5 .
Самый простой вариант, который первым приходит на ум — использовать цикл for :
Также можно воспользоваться функцией filter , которая фильтрует элементы согласно заданному условию:
И, вероятно, наиболее предпочтительный вариант решения этой задачи — списковое включение:
print([elem for elem in a if elem
Задача 2
a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] ;
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] .
Нужно вернуть список, который состоит из элементов, общих для этих двух списков.
И снова мы можем воспользоваться циклом for :
Или функцией filter :
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.
Задача 3
Отсортируйте словарь по значению в порядке возрастания и убывания.
Импортируем нужный модуль и объявляем словарь:
Сортируем в порядке возрастания:
И в порядке убывания:
result = dict ( sorted ( d . items ( ) , key = operator . itemgetter (1 ) , reverse = True ) )
Задача 4
Напишите программу для слияния нескольких словарей в один.
Допустим, вот наши словари:
Объединить их можно вот так:
А можно с помощью «звёздочного» синтаксиса:
О звёздочном синтаксисе можно прочитать в нашей статье.
Задача 5
Найдите три ключа с самыми высокими значениями в словаре my_dict = <‘a’:500, ‘b’:5874, ‘c’: 560,’d’:400, ‘e’:5874, ‘f’: 20>.
Можно воспользоваться функцией sorted :
Аналогичный результат можно получить с помощью функции nlargest из модуля heapq :
Задача 6
Напишите код, который переводит целое число в строку, при том что его можно применить в любой системе счисления.
Второй аргумент функции int отвечает за указание основания системы счисления:
Задача 7
Нужно вывести первые n строк треугольника Паскаля. В этом треугольнике на вершине и по бокам стоят единицы, а каждое число внутри равно сумме двух расположенных над ним чисел.
Задача 8
Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.
Тут всё просто, достаточно сравнить строку с её обратной версией, для чего можно использовать встроенную функцию reversed:
Того же эффекта можно добиться с помощью срезов:
Задача 9
Сделайте так, чтобы число секунд отображалось в виде дни:часы:минуты:секунды .
Задача 10
Вы принимаете от пользователя последовательность чисел, разделённых запятой. Составьте список и кортеж с этими числами.
Задача 11
Выведите первый и последний элемент списка.
Задача 12
Напишите программу, которая принимает имя файла и выводит его расширение. Если расширение у файла определить невозможно, выбросите исключение.
Задача 13
При заданном целом числе n посчитайте n + nn + nnn.
Друзья, забирайте в закладки подборку из 17 книг по Python.
Подборка поможет вам освоить язык программирования с нуля или с минимальными знаниями.
Готовы приступить к изучению Python?
Начинаем подготовку к изучению Python
Если вы не переходите на Python с другого языка программирования, а начинаете с нуля, сначала разберитесь в базовых понятиях разработки. Чтобы читать техническую литература на английском, подтяните уровень языка. В этом помогут книги:
Новички могут легко утонуть в профессиональных понятиях. Эта книга поможет разобраться в терминологии: что такое функции, функциональное и объектно-ориентированное программирование, как структурировать и развернуть программу, как хранить, управлять и обмениваться данными.
Даже если вы хорошо владеете английским, профессиональная терминология может загнать в тупик — потратите время на гугление. Этот учебник с аудиокнигой и интерактивными словарями поможет подтянуть уровень грамматики и пополнить словарный запас техническими терминами.
Учебный курс, который поможет улучшить навыки грамматики, пополнить словарный запас техническими терминами. Фишка книги — она содержит тексты и диаграммы для лучшего понимания материала, словарь современных вычислительных терминов, сокращений и символов.
Знакомимся с Python
Начните изучать язык программирования с теоретических основ — разберитесь в терминах, принципах работы языка. Для этого изучите книги:
Простая книга для введения в Python — автор объясняет основные термины, особенности языка доступным языком. Издание в основном теоретическое, из практики — руководства по созданию нескольких элементарных программ.
Опытный разработчик и преподаватель рассказывает об основных принципах разработки на примерах создания простых игр. После каждой главы автор предлагает проект игры, резюме пройденного материала и задачи для закрепления. После прочтения вы освоите базовые навыки разработки на Python и научитесь применять их на практике.
Переходим к практике
Когда разберетесь в теоретических основах, переходите на книги с практикой — реальными примерами кода, задачами, руководствами по разработке первых простых проектов:
Автор описывает основные типы объектов в Python, порядок их создания и дальнейшей работы с ними, рассказывает об основном процедурном элементе языка — функциях. После каждой главы приводит контрольные вопросы для закрепления материала, а после каждой части — практические упражнения.
Руководство по использованию Python в различных сферах — системном администрировании, создании веб-приложений и графических интерфейсов. Автор рассказывает, как работать с базами данных, программировать сетевые взаимодействия, создавать интерфейсы для сценариев и других задач.
Книга разработчика Лучано Рамальо для тех, кто уже научился писать на языке Python, но еще не использует все его возможности. Автор рассказывает о базовых средствах и библиотеках языка и приводит наглядные примеры, как сделать код короче, понятнее и быстрее.
Пошаговое руководство для новичков, которые хотят освоить язык программирования с нуля. Автор объясняет базовый синтаксис, учит работать с типами данными и переменными, классами и объектами, обрабатывать файлы и исключения.
Эта книга — полноценное руководство по Python, состоящее из четырех частей. Новичкам стоит изучить первую часть книги. Автор просто и понятно рассказывает о механизмах работы Python, как разобраться в основах языка и написать свою первую программу.
Пошаговое руководство, которое поможет освоить язык Python и применять его на практике. Автор рассказывает, как запустить первую программу, описывает переменные, типы данных, идентификаторы и делится другой полезной информацией.
Книга для новичков, которые уже освоили язык Python и хотят программировать лучше. Автор рассказывает, как использовать паттерны программирования, чтобы улучшить код, проводить распараллеливание и компиляцию программ, объясняет принципы высокоуровневого сетевого программирования и графики.
Продолжаем изучение: книги о Python по направлениям
Python можно использовать для решения многих задач — работы с сайтами, веб-приложениями, машинного обучения. Определитесь, в каком направлении хотите развиваться, и начните с профильной литературы:
Автор подробно рассказывает, как писать геоприложения. Вы научитесь получать доступ к геоданным и визуализировать их, читать и записывать данные в векторном и растровом формате, хранить и получать доступ, выполнять геопропространственные расчеты на языке Python.
Руководство, как примененять скрипты Python и веб-API, чтобы собирать и обрабатывать данные с тысяч сайтов. Будет интересна программистам и веб-администраторам, которые хотят изучить работу веб-скраперов, освоить анализ сырых данных и тестирование интерфейса.
Книга для новичков. Авторы доступно для понимания рассказывают, как строить системы машинного обучения, подробно объясняют этапы работы с применением Python и библиотек scikit-learn, NumPy и matplotlib.
Книга о Django — фреймворке для разработки веб-приложений на Python. Авторы рассказывают о компонентах фреймворка и методах работы с ним, приводят примеры применения в разных проектах.
Автор учит работать с популярным фреймворком Flask, приводит пошаговое руководство, как создать приложение социального блогинга. Узнаете возможности фреймворка, научитесь расширять приложения дополнительными технологиями.