Решение задач на языке 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]

А можно привести оба списка к множествам и найти их пересечение:

Читайте также:  Mct 10 лицензионный ключ

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.

На сайте "Решение задач по программированию. Языки Pascal, Basic, КуМир, C, Python" опубликованы задачи по структурному программированию с пояснением к ним и решением на указанных языках программирования.

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

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

Владельцем ресурса, автором поясняющего текста, составителем части алгоритмов решения задач является Шапошникова Светлана Вячеславовна (plustilino). Большинство задач по программированию в школьном курсе решается относительно стандартными и известными способами.

Авторами комментариев являются авторы комментариев.

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

Об используемых языках программирования

Выбор языков программирования для решения задач обусловлен их популярностью в образовательных учреждениях, использованием в ГИА и ЕГЭ.

Каждый язык программирования может существовать в различных версиях и диалектах. Также могут использоваться различные среды программирования. При решении задач мы использовали следующие языки/среды/компиляторы:

  • FreePascal,
  • Basic-256,
  • С (компилятор gcc) в GNU/Linux,
  • КуМир последних версий,
  • Python версии 3.x.

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

Читайте также:  Канал серийного искания это

Языки программирования Basic-256 и тот, что "живет" в среде КуМир (вероятно тот самый "школьный алгоритмический") — это исключительно учебные языки, поставляемые с удобными средами программирования. Установив одно приложение, вы получаете полноценную среду программирования, в котором пишете программу, нажимаете кнопку и тут же видите результат исполнения программы. Кроме того, обе среды (Basic-256 и КуМир) содержат встроенную возможность программирования графики, что дает простор для разнообразного обучения программированию и преподаванию в более младшем школьном возрасте.

Однако поскольку оба языка учебные, они имеют ряд ограничений. Например, ни в том ни в другом нет возможности форматированного вывода. В КуМир отсутствуют битовые операции. Кроме того сам синтаксис языков не совсем удобен. Только ленивый не ругал Basic в том числе и из-за неочевидности конструкций. В КуМир же постоянно приходится переключаться с русской раскладки на английскую и обратно. На наш взгляд использование русских команд в сокращенной форме слов также теряет очевидность для детей, как и английские команды. То есть выигрыш в облегчении при знакомстве с конструкциями структурного программирования минимален.

На наш взгляд Basic-256 можно использовать при преподавании программирования в 5-7 классах, т. к. язык достаточно прост в синтаксисе (не надо писать никаких лишних скобок и слов), в нем только два простых типа данных — числа и строки. Данный язык хорош, чтобы познакомить с такими понятиями как логические выражения, ветвления в программе, циклы, массивы, развить логическое мышление и творческие способности, разнообразить кругозор, дать представление о том, что такое программирование. Писать на Basic решения более-менее сложных алгоритмов неудобно, да и не нужно в этом возрасте.

Несмотря на то, что Pascal позиционируется также как учебный язык, он в отличие от Basic и КуМир более соответствует практическим языкам. При этом его большим плюсом для обучения является отсутствие всего лишнего, что ненадобно при изучении алгоритмики (структурного программирования). Т.е. никакие специфические особенности языка не будет отвлекать (ну если не считать нагромождений begin-end, уменьшающих читабельность программы). Паскаль позволяет изучать программирование шаг за шагом, а не погружаться сразу в несколько парадигм.

На наш взгляд Pascal хорош как первый язык программирования, если знакомство с программированием начинается в 8-10 классах. В этом возрасте обучающиеся уже знакомы с различными типами чисел и операциями над ними, более внимательны к деталям (не забудут про точку с запятой), способны понять более сложные и объемные конструкции. Если вы планируете не ограничиваться только ветвлениями и циклами, а также требуется изучить подпрограммы, структуры данных (записи) и ООП, то вам не нужно смотреть в сторону Basic (даже если что-то и есть там), изучайте Pascal.

Язык C (Си) — это практический язык в том смысле, что его используют в профессиональном программировании. Он адаптирован для решения конкретных задач, а не для обучения. В языке Си существует много специфических особенностей, часто связанных с тем, что язык не является в полном смысле высокоуровневым. Большое место в Си занимают указатели и ссылки. Поэтому изучать Си и при этом оставлять без внимания ссылочный механизм, это значит не изучать Си, а просто использовать его для преподавания алгоритмики. Понять, что такое указатели, как хранятся данные в памяти компьютера и др. способен далеко не каждый старшеклассник. Поэтому мы бы рекомендовали язык Си для изучения только в старшем школьном возрасте, если знакомство с программированием произошло ранее с использованием другого (какого-либо учебного) языка.

Читайте также:  Лада веста постоянный плюс

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

Особенности Python позволяют использовать его и для обучения структурному программированию, и для обучения ООП, и для изучения создания программ с графическим интерфейсом, и для изучения Web-программирования и многого другого. На основе Python уместно разрабатывать последовательные курсы по программированию. Например, в первый год вы изучаете структурное программирование на Python, на втором — ООП, на третьем — создание GUI, на четвертом — рассматриваете возможности различных библиотек (т.е. осознаете сферы применения программирования).

В странах Запада и США популярна детская среда программирования Scratch, для более старшего возраста часто используется язык Java. Данный выбор становится понятен, если учесть, что в этих странах образование преимущественно сводится к обучению тому, что имеет непосредственное практическое значение.

Об уровнях сложности задач

На данном сайте мы условно относим любую задачу к одному из трех уровней сложности (простому, среднему и сложному) и понимаем под этим следующее.

Простая задача не содержит в себе сложной логики и не предполагает знаний по математике и другим предметам, которые изучаются примерно с 8-го класса. Поэтому простые задачи доступны для понимания обучающимся 5-7 классов, либо для того, чтобы они стали понятны, требуется минимум пояснений.

Задача средней сложности может содержать в себе более сложную логику, т. е. вложенные конструкции (условие в цикле, вложенный цикл), функции, сложные выражения и др. Также если задача требует от обучающегося знаний по математике и другим предметам, которые изучаются в 7-8 классе и старше, то даже если ее логика проста, она также будет отнесена к задачам средней сложности. Отсюда не следует, что средние задачи не предназначены для 5-7 классов. Однако для их решения скорее всего потребуются дополнительные разъяснения, более детальный разбор алгоритма решения.

Сложные задачи предполагают неоднозначный алгоритм решения, сложные логические конструкции, относительно длинный код программы. Это задачи близкие по сложности к олимпиадным и к задачам C3-C4 ЕГЭ по информатике, а также все виды сортировок.

Темы, их содержание и последовательность

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

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

  1. Линейные алгоритмы
  2. Ветвления
  3. Циклы
  4. Вложенные циклы
  5. Массивы (списки)
  6. Матрицы
  7. Строки
  8. Структуры данных (записи, словари)
  9. Функции
  10. Файлы
Ссылка на основную публикацию
Ревит или ревет как правильно
Это выражение употребляется чаще всего в просторечии, то есть в бытовой сниженной речи. Оно означает «очень сильно, неистово кричать, плакать»....
Программы для составления расписания в колледже
Экспресс-расписание Колледж Полная «Экспресс-расписание» Колледж – программа для автоматизации составления расписания учебных занятий (уроков) в колледжах, техникумах, училищах и профессиональных...
Пропал звук в адоб премьер про
После установки «обновления» Adobe Premiere Pro CC 2015.3 вновь всплыла массово проблема с «пропаданием» звука у MTS и т.п. видеофайлов,...
Режим скрытой записи в ultraiso
Внимание! Обновляя программное обеспечение самостоятельно, вы рискуете привести его в неработоспособное состояние. В результате этих действий устройство может быть снято...
Adblock detector