Подборка задач с решениями - 23

  • Категория: Python
  • Дата публикации: 2022-01-17
  • Опубликовано на сайте: Stepik

Задача 1:

Напишите функцию is_num, используя синтаксис анонимных функций, которая принимает строковый аргумент и возвращает значение True, если переданный аргумент является числом (целым или вещественным) и False в противном случае.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT is_num = lambda x: x.lstrip("-").replace(".", "", 1).isdecimal()

Задача 2:

Напишите программу, которая с помощью встроенных функций filter() и sorted() выводит слова из списка words, имеющие длину ровно 6 символов. Слова следует вывести в алфавитном порядке на одной строке, разделив символом пробела.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

words = ['beverage', 'monday', 'abroad', 'bias', 'abuse', 'abolish', 'abuse', 'abuse', 'bid', 'wednesday', 'able', 'betray', 'accident', 'abduct', 'bigot', 'bet', 'abandon', 'besides', 'access', 'friday', 'bestow', 'abound', 'absent', 'beware', 'abundant', 'abnormal', 'aboard', 'about', 'accelerate', 'abort', 'thursday', 'tuesday', 'sunday', 'berth', 'beyond', 'benevolent', 'abate', 'abide', 'bicycle', 'beside', 'accept', 'berry', 'bewilder', 'abrupt', 'saturday', 'accessory', 'absorb']
result = list(filter(lambda x: len(x) == 6, words))
print(*sorted(result))

Задача 3:

Напишите программу, которая с помощью встроенных функций map() и filter() удаляет из списка numbers все нечетные элементы, большие 47, а все четные элементы нацело делит на два (целочисленное деление – //). Полученные числа следует вывести на одной строке, разделив символом пробела и сохранив исходный порядок.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

numbers = [46, 61, 34, 17, 56, 26, 93, 1, 3, 82, 71, 37, 80, 27, 77, 94, 34, 100, 36, 81, 33, 81, 66, 83, 41, 80, 80, 93, 40, 34, 32, 16, 5, 16, 40, 93, 36, 65, 8, 19, 8, 75, 66, 21, 72, 32, 41, 59, 35, 64, 49, 78, 83, 27, 57, 53, 43, 35, 48, 17, 19, 40, 90, 57, 77, 56, 80, 95, 90, 27, 26, 6, 4, 23, 52, 39, 63, 74, 15, 66, 29, 88, 94, 37, 44, 2, 38, 36, 32, 49, 5, 33, 60, 94, 89, 8, 36, 94, 46, 33]

print(*map(lambda y: y >> (~y & 1), filter(lambda x: ~x & 1 or x < 48, numbers)))

Задача 4:

Список data содержит информацию о численности населения некоторых штатов США. Напишите программу сортировки по убыванию списка data на основании последнего символа в названии штата. Затем распечатайте элементы этого списка, каждый на новой строке в формате:

<название штата>: <численность населения>

Vermont: 626299
Massachusetts: 7029917

...

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

Примечание 2. Используйте анонимную функцию в качестве критерия сортировки.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

data = [(19542209, 'New York') ,(4887871, 'Alabama'), (1420491, 'Hawaii'), (626299, 'Vermont'), (1805832, 'West Virginia'), (39865590, 'California'), (11799448, 'Ohio'), (10711908, 'Georgia'), (10077331, 'Michigan'), (10439388, 'Virginia'), (7705281, 'Washington'), (7151502, 'Arizona'), (7029917, 'Massachusetts'), (6910840, 'Tennessee')]
print(*map(lambda r: f'{r[1]}: {r[0]}', sorted(data, key=lambda r: r[1][-1], reverse=True)), sep='\n')

Задача 5:

Список data содержит слова на русском языке. Напишите программу его сортировки по возрастанию длины слов, а затем в лексикографическом порядке. Отсортированные слова следует вывести на одной строке, разделив символом пробела.

Примечание 1. Используйте анонимную функцию в качестве критерия сортировки.

Примечание 2. Если длина слов совпадает, сортировать нужно в лексикографическом порядке.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

data = ['год', 'человек', 'время', 'дело', 'жизнь', 'день', 'рука', 'раз', 'работа', 'слово', 'место', 'лицо', 'друг', 'глаз', 'вопрос', 'дом', 'сторона', 'страна', 'мир', 'случай', 'голова', 'ребенок', 'сила', 'конец', 'вид', 'система', 'часть', 'город', 'отношение', 'женщина', 'деньги']

print(*sorted(data, key=lambda x: (len(x), x)))

Задача 6:

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

Примечание 1. Для решения задачи используйте анонимную функцию и необязательный аргумент key функции max().

Примечание 2. Обратите внимание, что сравнивать числа и строки нельзя.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

mixed_list = ['tuesday', 'abroad', 'abuse', 'beside', 'monday', 'abate', 'accessory', 'absorb', 1384878, 'sunday', 'about', 454805, 'saturday', 'abort', 2121919, 2552839, 977970, 1772933, 1564063, 'abduct', 901271, 2680434, 'bicycle', 'accelerate', 1109147, 942908, 'berry', 433507, 'bias', 'bestow', 1875665, 'besides', 'bewilder', 1586517, 375290, 1503450, 2713047, 'abnormal', 2286106, 242192, 701049, 2866491, 'benevolent', 'bigot', 'abuse', 'abrupt', 343772, 'able', 2135748, 690280, 686008, 'beyond', 2415643, 'aboard', 'bet', 859105, 'accident', 2223166, 894187, 146564, 1251748, 2851543, 1619426, 2263113, 1618068, 'berth', 'abolish', 'beware', 2618492, 1555062, 'access', 'absent', 'abundant', 2950603, 'betray', 'beverage', 'abide', 'abandon', 2284251, 'wednesday', 2709698, 'thursday', 810387, 'friday', 2576799, 2213552, 1599022, 'accept', 'abuse', 'abound', 1352953, 'bid', 1805326, 1499197, 2241159, 605320, 2347441]

num_list = (list(filter(lambda x: type(x) is int, mixed_list)))
print(max(num_list))

Задача 7:

Список mixed_list содержит целочисленные и строковые значения. Напишите программу его сортировки по неубыванию значений элементов, при этом числа должны следовать до строк. Элементы отсортированного списка выведите на одной строке, разделив символом пробела.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

mixed_list = ['beside', 48, 'accelerate', 28, 'beware', 'absorb', 'besides', 'berry', 15, 65, 'abate', 'thursday', 76, 70, 94, 35, 36, 'berth', 41, 'abnormal', 'bicycle', 'bid', 'sunday', 'saturday', 87, 'bigot', 41, 'abort', 13, 60, 'friday', 26, 13, 'accident', 'access', 40, 26, 20, 75, 13, 40, 67, 12, 'abuse', 78, 10, 80, 'accessory', 20, 'bewilder', 'benevolent', 'bet', 64, 38, 65, 51, 95, 'abduct', 37, 98, 99, 14, 'abandon', 'accept', 46, 'abide', 'beyond', 19, 'about', 76, 26, 'abound', 12, 95, 'wednesday', 'abundant', 'abrupt', 'aboard', 50, 89, 'tuesday', 66, 'bestow', 'absent', 76, 46, 'betray', 47, 'able', 11]

print(*sorted(mixed_list, key=str))

Задача 8:

В цветовой схеме RGB цвета задаются с помощью трех компонентов:

  • R — интенсивность красной составляющей цвета;
  • G — интенсивность зеленой составляющей цвета;
  • B — интенсивность синей составляющей цвета.

Противоположные цвета задаются как RGB и (255-R)(255-G)(255-B). Считается, что такие цвета хорошо гармонируют друг с другом.

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

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

print(*list(map(lambda x: 255-x, list(map(int, input().split())))))

Задача 9:

На вход программе на первой строке подаются коэффициенты многочлена, разделенные символом пробела и целое число x на второй строке. Напишите программу, которая вычисляет значение указанного многочлена при заданном значении x.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT from functools import reduce s, x = input(), int(input()) print(reduce(lambda p, a: p * x + int(a), s.split(), 0))

Задача 10:

Функция ignore_command() принимает на вход один строковый аргумент command – команда, которую нужно проверить,

и возвращает значение True, если в команде содержится подстрока из списка ignore и False – если нет.

def ignore_command(command):
    ignore = ['alias', 'configuration', 'ip', 'sql', 'select', 'update', 'exec', 'del', 'truncate']

    for word in ignore:
        if word in command:
            return True
    return False

Перепишите функцию ignore_command(), чтобы она использовала встроенные функции all()/any(), сохранив при этом ее функционал.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT def ignore_command(command): ignore = ['alias', 'configuration', 'ip', 'sql', 'select', 'update', 'exec', 'del', 'truncate'] return any(map(lambda x: x in command, ignore))

Задача 11:

Используя параллельную итерацию сразу по трем спискам countries, capitals и population выведите информацию о стране в формате:

is the capital of , population equal people.

Moscow is the capital of Russia, population equal 145934462 people.
New York is the capital of USA, population equal 331002651 people.

...

Для каждой страны информацию выводить на отдельной строке.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT

countries = ['Russia', 'USA', 'UK', 'Germany', 'France', 'India']
capitals = ['Moscow', 'New York', 'London', 'Berlin', 'Paris', 'Delhi']
population = [145_934_462, 331_002_651, 80_345_321, 67_886_011, 65_273_511, 1_380_004_385]
for capitals, countries, population in zip(capitals, countries, population):
    print(f'{capitals} is the capital of {countries}, population equal {population} people.')

Задача 12:

На вход программе подаются три строки текста с вещественными числами, значениями абсцисс (x), ординат (y) и аппликат (z) точек трехмерной плоскости. Напишите программу для проверки расположения всех точек с введенными координатами внутри либо на поверхности шара с центром в начале координат и радиусом R=2.

Решение:

Все решения теперь можно найти в сообществе Как войти в IT abscissas = [float(i) for i in input().split()] ordinates = [float(i) for i in input().split()] applicates = [float(i) for i in input().split()]

print(all(map(lambda x: x[0]**2 + x[1]**2 + x[2]**2 <= 4, zip(abscissas, ordinates, applicates))))