Подборка задач с решениями - 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')