Ранее была задача вычисления числа сочетаний из n элементов по k, для чего необходимо вычисление факториалов трех величин: n, k и n-k. Для этого можно сделать три цикла, что приводит к увеличению размера программы за счет трехкратного повторения похожего кода. Вместо этого лучше сделать одну функцию, вычисляющую факториал любого данного числа n и трижды использовать эту функцию в своей программе. Соответствующая функция может выглядеть так:
def factorial(n): f = 1 for i in range ( 2 , n + 1 ): f * = i return f |
Этот текст должен идти в начале программы, вернее, до того места,
где мы захотим воспользоваться функцией factorial
.
Первая строчка этого примера является описанием нашей функции.
factorial
— идентификатор, то есть имя нашей функции.
После идентификатора в круглых скобках идет список параметров,
которые получает наша функция. Список состоит из перечисленных через запятую
идентификаторов параметров. В нашем случае список состоит из одной величины n
.
В конце строки ставится двоеточие.
Далее идет тело функции, оформленное в виде блока, то есть с отступом.
Внутри функции вычисляется значение факториала числа n
и оно сохраняется в переменной f
. Функция завершается инструкцией return f
,
которая завершает работу функции и возвращает значение переменной f
.
Инструкция return
может встречаться в произвольном месте функции, ее исполнение
завершает работу функции и возвращает указанное значение в место вызова.
Если функция не возвращает значения, то инструкция return
используется без возвращаемого значения, также в функциях, не возвращающих значения,
инструкция return
может отсутствовать.
Теперь мы можем использовать нашу функцию несколько раз.
В этом примере мы трижды вызываем функцию factorial
для вычисления трех факториалов:
factorial(n)
, factorial(k)
, factorial(n-k)
.
n = int ( input ()) k = int ( input ()) print (factorial(n) / / (factorial(k) * factorial(n - k))) |
Мы также можем, например, объявить функцию binomial
, которая принимает два целочисленных параметра
n
и k
и вычисляет число сочетаний из n
по k
:
def binomial(n, k) return factorial(n) / / (factorial(k) * factorial(n - k)) |
Тогда в нашей основной программе мы можем вызвать функцию binomial
для нахождения числа сочетаний:
print (binomial(n, k)) |
Вернемся к задаче нахождения наибольшего из двух или трех чисел. Функцию нахождения максимума из двух чисел можно написать так:
def max (a, b): if a > b: return a else : return b |
Теперь мы можем реализовать функцию max3
, находящую максимум трех чисел:
def max3(a, b, c): return max ( max (a, b), c) |
Функция max3
дважды вызывает функцию max
для двух чисел:
сначала, чтобы найти максимум из a
и b
, потом чтобы найти максимум из этой
величины и c
.