Каждому изучающему 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.

Задача 14

Напишите программу, которая выводит чётные числа из заданного списка и останавливается, если встречает число 237.

Задача 15

Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.

Задача 16

Выведите список файлов в указанной директории.

Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2019 год

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать натуральные значения от 1 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит минимум среди элементов массива, не делящихся нацело на 6, а затем заменяет каждый элемент, не делящийся нацело на 6, на число, равное найденному минимуму. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести изменённый массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов: 14 6 11 18 9 24 программа должна вывести следующий массив 9 6 9 18 9 24
Организуем ввод массива заданной длины с клавиатуры. Подробно о работе с массивами в Python
a = []
n=30
for i in range(0, n):
a.append(int(input()))
Введем переменную для определения минимума для числа не делящегося на 6, вначале программы присвоим ей максимально возможное значение
min=10000
В цикле for переберем все элементы массива. С помощью оператора условия If определим делится ли данный элемента на 6 (чтобы элемент не делился на 6 необходимо выполнение условии a[i]%6!=0 )и является ли он меньше текущего минимума(a[i] min=10000
for i in range(0, n):
if a[i]%6!=0 and a[i]
Чтобы заменить все элементы массива не кратные 6 на найденный минимум в новом цикле for перебираем все элементы массива и с помощью оператора If проверяем не делится ли на 6 данный элемент, если делится то заменяем его на min, в этом же цикле и выводим на экран элементы массива
for i in range(0, n):
if a[i]%6!=0:
a[i]=min
print(a[i])
Полная программа на python для задачи 25 из демо версии егэ по информатике за 2019 год
a = []
n=30
for i in range(0, n):
a.append(int(input()))
min=10000
for i in range(0, n):
if a[i]%6!=0 and a[i]
Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2018 год

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки. Например, для массива из шести элементов: 4 115 7 195 25 106 программа должна вывести числа 4 2 7 2 25 106
Организуем ввод массива заданной длины с клавиатуры
a = []
n=30
for i in range(0, n):
a.append(int(input()))
Введем переменную k в которую будем записывать количество элементов массива делящихся на 5 и которые больше 100. Изначально k=0
В цикле for переберем все элементы массива. С помощью оператора условия If определим делится ли данный элемента на 5(чтобы элемент делился на 5, необходимо выполнение условия a[i]%5==0 )и больше ли данный элемент 100 (a[i]>100) Чтобы выполнялись оба условия одновременно , необходимо использовать в условном операторе if логическую операцию and. Если оба условия выполняются, то увеличиваем количество счетчик элементов на 1 (k=k+1)
k=0
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
k=k+1

Чтобы заменить все элементы массива кратные 5 на определенное количество k ,в новом цикле for перебираем все элементы массива и с помощью оператора If проверяем, чтобы данный элемент массива делился на 5 и был больше 100. Если оба условия выполняются, то заменяем данный элемент массива на k.
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
a[i]=k
print(a[i])

Полная программа на python для задачи 25 из демо версии егэ по информатике за 2018 год
a = []
n=30
for i in range(0, n):
a.append(int(input()))
k=0
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
k=k+1
for i in range(0, n):
if (a[i]%5==0 and a[i]>100):
a[i]=k
print(a[i])
Решение на Python задачи 25 на программирование из демоверсии егэ по информатике за 2017 год
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Организуем стандартный ввод массива заданной длины с клавиатуры в python
a = []
n=40
for i in range(0, n):
a.append(int(input()))
Введем переменную k — счетчик нужных нам пар элементов массива
В цикле for в диапазоне от 1 до n-1 будем перебирать пары элементов массива . Пара соседних элементов это a[i] и a[i+1]
Чтобы получить последнюю цифру в десятичной записи числа нужно найти остаток от деления на 10 данного числа. В python для определения остатка числа используется операция %
последняя цифра числа=число % 10
Нам необходимо проверить для каждой пары элементов массива оканчивается ли хотя бы одно число из пары на 2. Чтобы проверить выполнение хотя бы одного условия в операторе if, используется логическая операция or (ИЛИ). Если хотя бы одно условие выполняется, то увеличиваем счетчик пар на 1
k=0
for i in range(1, n-1):
if (a[i]%10==2 or a[i+1]%10==2):
k=k+1
Полная программа на python для задачи 25 из демо версии егэ по информатике за 2017 год
a = []
n=40
for i in range(0, n):
a.append(int(input()))
k=0
for i in range(1, n-1):
if (a[i]%10==2 or a[i+1]%10==2):
k=k+1
print(k)

Полезно почитать по теме решение задач егэ по информатике на массивы