Модуль 15.4 (Функции как объекты) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Функции как объекты
- Функции в качестве аргументов других функций
- Встроенные функции, принимающие функции в качестве аргументов
- Функции в качестве возвращаемых значений других функций
Публикуем решения на урок 15.4 Функции как объекты.
Что выведет приведенный код?
s1 = ‘python’
s2 = ‘stepicon’
s3 = ‘beegeek’print(min(s1, s2, s3))
print(max(s1, s2, s3))
beegeek
stepicon
Что выведет приведенный код?
s1 = ‘python’
s2 = ‘stepicon’
s3 = ‘beegeek’print(min(s1, s2, s3, key=len))
print(max(s1, s2, s3, key=len))
python
stepicon
Что выведет приведенный код?
def f(x):
return x**2g = f
print(f(3), g(5))
9 25
Что выведет приведенный код?
def f(x):
return x**2def g(x):
return x**3funcs = [f, g]
print(funcs[0](5), funcs[1](5))
25 125
Что выведет приведенный код?
def comparator(pair):
return pair[1]pairs = [(5, 4), (3, 2), (1, 7), (8, 2)]
pairs.sort(key=comparator)
print(pairs)
[(3, 2), (8, 2), (5, 4), (1, 7)]
Что выведет приведенный код?
def comparator(pair):
return pair[0] + pair[1]pairs = [(5, 4), (3, 2), (1, 7), (8, 2)]
pairs.sort(key=comparator, reverse=True)
print(pairs)
[(8, 2), (5, 4), (1, 7), (3, 2)]
Что выведет приведенный код?
words = [‘this’, ‘is’, ‘a’, ‘test’, ‘of’, ‘sorting’]
words.sort(key=len)
print(words)
['a', 'is', 'of', 'this', 'test', 'sorting']
Что выведет приведенный код, если на вход программе подается число, указанное в левом столбце?
def f1(x):
return 2*x+1def f2(x):
return x**2def f3(x):
return -x**2+1def f4(x):
return x-3funcs = [f1, f2, f3, f4]
i = int(input())
print(funcs[i](2))
Дан список
numbers
, содержащий кортежи чисел. Напишите программу, которая с помощью встроенных функцийmin()
иmax()
выводит те кортежи (каждый на отдельной строке), которые имеют минимальное и максимальное среднее арифметическое значение элементов.
def aa(a):
return sum(a[:]) / len(a[:])
numbers = [(10, 10, 10), (30, 45, 56), (81, 39), (1, 2, 3), (12,), (-2, -4, 100), (1, 2, 99), (89, 9, 34), (10, 20, 30, -2), (50, 40, 50), (34, 78, 65), (-5, 90, -1, -5), (1, 2, 3, 4, 5, 6), (-9, 8, 4), (90, 1, -45, -21)]
print(min(numbers, key=aa))
print(max(numbers, key=aa))
Напишите программу, которая сортирует список
points
координат точек плоскости в соответствии с расстоянием от начала координат (точки(0;0)). Программа должна вывести отсортированный список.
def com(n):
return 0.5**(n[0]**2+n[1]**2)
points = [(-1, 1), (5, 6), (12, 0), (4, 3), (0, 1), (-3, 2), (0, 0), (-1, 3), (2, 0), (3, 0), (-9, 1), (3, 6), (8, 8)]
points.sort(key=com, reverse=True)
print(points)
Дан список
numbers
, содержащий кортежи чисел. Напишите программу, которая сортирует и выводит списокnumbers
в соответствии с суммой минимального и максимального элемента кортежа.
numbers = [(10, 10, 10), (30, 45, 56), (81, 80, 39), (1, 2, 3), (12, 45, 67), (-2, -4, 100), (1, 2, 99), (89, 90, 34), (10, 20, 30), (50, 40, 50), (34, 78, 65), (-5, 90, -1)]
func = lambda x: min(x) + max(x)
print(sorted(numbers, key=func))
Список
athletes
содержит сведения о спортсменах в виде кортежей:(имя, возраст, рост, вес)
.Напишите программу сортировки списка спортсменов по указанному полю:
1: по имени;
2: по возрасту;
3: по росту;
4: по весу.
i = int(input())
athletes = [('Дима', 10, 130, 35), ('Тимур', 11, 135, 39), ('Руслан', 9, 140, 33), ('Рустам', 10, 128, 30), ('Амир', 16, 170, 70), ('Рома', 16, 188, 100), ('Матвей', 17, 168, 68), ('Петя', 15, 190, 90)]
srt = sorted(athletes, key=lambda item: item[i - 1])
for entry in srt:
print(*entry)
Напишите программу, которая принимает число и название функции, а выводит результат применения функции к данному числу.
Список возможных функций:
— квадрат: функция принимает число и возвращает его квадрат;
— куб: функция принимает число и возвращает его куб;
— корень: функция принимает число и возвращает корень квадратный из этого числа;
— модуль: функция принимает число и возвращает его модуль;
— синус: функция принимает число (в радианах) и возвращает синус этого числа.
from math import *
def get_res(n, f):
funcs = {'квадрат': n**2,
'куб': n**3,
'корень': n**0.5,
'модуль': abs(n),
'синус': sin(n)}
return funcs[f]
a, b = int(input()), input().lower()
print(get_res(a, b))
На вход программе подается строка натуральных чисел. Из элементов строки формируется список чисел.
Напишите программу сортировки списка чисел в порядке неубывания суммы их цифр. При этом, если два числа имеют одинаковую сумму цифр, следует сохранить их взаиморасположение в начальном списке.
nums = input().split()
def cmp(num):
n = [int(i) for i in num]
return sum(n)
nums.sort(key=cmp)
print(*nums)
На вход программе подается строка натуральных чисел. Из элементов строки формируется список чисел.
Напишите программу сортировки списка чисел в порядке неубывания суммы их цифр. При этом, если у двух чисел одинаковая сумма цифр, их следует вывести в порядке неубывания.
def sum_nums(numstr):
nums = list(map(int, list(numstr)))
return sum(nums), int(numstr)
s = input().split()
print(*sorted(s, key=sum_nums))
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы