Академия Eduson

Функции. Основные концепции программирования

 Функции как объекты

 Что выведет приведенный код?:

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**2

g = f
print(f(3), g(5))

 Ответ:     9;   25

 Что выведет приведенный код?:

def f(x):
    return x**2

def g(x):
    return x**3

funcs = [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)]

 Что выведет приведенный код?:

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+1

def f2(x):
    return x**2

def f3(x):
    return -x**2+1

def f4(x):
    return x-3

funcs = [f1, f2, f3, f4]
i = int(input())

print(funcs[i](2))

 Ответ: 

  • 0       5;
  • 1       4;
  • 2      -3;
  • 3      -1;
  • 4      ошибка во время выполнения

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

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)]

def f(l):
    return sum(l) / len(l)

a = min(numbers, key=f)
b = max(numbers, key=f)

print(a)
print(b)

 Напишите программу, которая сортирует список points координат точек плоскости в соответствии с расстоянием от начала координат (точки (0;0)). Программа должна вывести отсортированный список.

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)]

def f(s):
    return (s[0]**2 + s[1]**2)**0.5

print(sorted(points, key=f))

 Дан список 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)]

def f(mm):
    return min(mm) + max(mm)

numbers.sort(key=f)

print(numbers)

 Список athletes содержит сведения о спортсменах в виде кортежей: (имя, возраст, рост, вес). Напишите программу сортировки списка спортсменов по указанному полю:

  • 1: по имени;
  • 2: по возрасту;
  • 3: по росту;
  • 4: по весу.
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)]

def name(a):
    return a[0]

def age(a):
    return a[1]

def height(a):
    return a[2]

def weight(a):
    return a[3]

cd = {1 : name, 2: age, 3 : height, 4: weight}

x = int(input())

for rez in sorted(athletes, key=cd[x]):
    print(*rez)

 Напишите программу, которая принимает число и название функции, а выводит результат применения функции к данному числу.
 Список возможных функций:

  • квадрат: функция принимает число и возвращает его квадрат;
  • куб: функция принимает число и возвращает его куб;
  • корень: функция принимает число и возвращает корень квадратный из этого числа;
  • модуль: функция принимает число и возвращает его модуль;
  • синус: функция принимает число (в радианах) и возвращает синус этого числа.
import math

def kvad(x):
    return x**2

def kub(x):
    return x**3

def sq(x):
    return x**0.5

def mod(x):
    return abs(x)

def sn(x):
    return math.sin(x)

cm = {'квадрат' : kvad, 'куб' : kub, 'корень' : sq, 'модуль' : mod, 'синус' : sn}

x = int(input())
func = input()

print(cm[func](x))

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

def f(x):
    x = [int(i) for i in str(x)]
    return sum(x)

x = input().split()

print(*sorted(x, key=f))

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

def f(x):
    x = [int(i) for i in str(x)]
    return sum(x)

b = sorted([int(i) for i in input().split()])

print(*sorted(b, key=f))