Подборка задач с решениями - 25
- Категория: Python
- Дата публикации: 2022-01-19
- Опубликовано на сайте: Stepik
Задача 1:
Напишите функцию compose(), которая принимает на вход две других одноаргументных функции f и g и возвращает новую функцию. Эта новая функция также должна принимать один аргумент x и применять к нему исходные функции в нужном порядке: для функций f и g порядок применения должен выглядеть, как f(g(x)).
Решение:
Все решения теперь можно найти в сообществе Как войти в IT def compose(f, g): return lambda x: f(g(x))
Задача 2:
Напишите функцию arithmetic_operation(), которая принимает символ одной из четырех арифметических операций +, -, *, / и возвращает функцию двух аргументов для соответствующей операции.
Решение 1:
from operator import * def arithmetic_operation(operation): result = {'+': add, '-': sub, '*': mul, '/': truediv} return result[operation]
Решение 2:
def arithmetic_operation(op): return lambda x, y: eval(f"{x}{op}{y}")
Задача 3:
Дана строка из разделенных пробелами слов в разных регистрах. Напишите программу, которая отсортирует слова независимо от регистра, а затем выведет их. Отсортированные слова должны выводиться на печать в исходном регистре, в каком переданы программе на вход.
Решение:
Все решения теперь можно найти в сообществе Как войти в IT spisok = input().split() new = (sorted(spisok, key=lambda word: word.lower())) print(*new)
Задача 4 - Гематрия слова:
Гематрией слова называется сумма числовых значений входящих в него букв.
Для вычисления гематрии слова в этой задаче:
- переведём слово в верхний регистр;
- числовое значение буквы вычислим как код(буквы) - код(буквы A).
На вход программе подается натуральное число n, а затем n строк английских слов в разных регистрах.
Напишите программу, которая выводит слова в начальном регистре (каждое на отдельной строке) в порядке возрастания их гематрии. Если гематрия слов совпадает, они выводятся в алфавитном (лексикографическом) порядке.
Решение:
Все решения теперь можно найти в сообществе Как войти в IT def gematria(word): return sum(map(lambda c: ord(c.upper()) - ord('A'), word)), word
words = [input() for _ in range(int(input()))] print(*sorted(words, key=gematria), sep='\n')
Задача 5 - Сортировка IP-адресов:
IP-адрес – уникальный числовой идентификатор устройства в компьютерной сети, работающий по протоколу TCP/IP.
В 4-й версии IP-адрес представляет собой 32-битное число. Адрес записывается в виде четырёх десятичных чисел (октетов) со значением от 0 до 255, разделённых точками, например, 192.168.1.2.
Напишите программу, которая считывает IP-адреса и выводит их в порядке возрастания в соответствии с десятичным представлением.
Решение 1:
import ipaddress l = [input() for _ in range(int(input()))] print(*sorted(l, key = ipaddress.ip_address), sep='\n')
Решение 2:
print(*sorted([input() for _ in range(int(input()))], key=lambda x: [*map(int, x.split('.'))]), sep='\n')