Первый слайд презентации: ФУНКЦИИ в Python
Слайд 2
Функция в P ython - объект, принимающий аргументы и возвращающий значение. Обычно функция определяется с помощью инструкции def. Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y. Если инструкции return нет, тогда по умолчанию функция будет возвращать объект None
Слайд 3
Формальные параметры – это локальные переменные необходимые для описания алгоритма функции, они описываются в ее заголовке и используются в собственном разделе операторов. Параметры функции Все что, записывается в скобках сразу после названия функции, называется ее параметрами. Фактические параметры – это набор данных, в обработке которых и заключается предназначение алгоритма. Фактические параметры у подпрограммы могут меняться при каждом вызове, а формальные нет. Другими словами фактические параметры – все то, что указывается в скобках справа от названия функции при ее вызове. В момент вызова формальные параметры заменяются фактическими во всей функции.
Слайд 4
def F(n): if n==1: return 1 if n%2==0: return n+F (n-1) if n>1 and n%2!=0: return 2*F(n-2) print(F(26))
Слайд 5
Переменная, доступ к которой можно получить из любого места в коде, называется глобальной. Другими словами, глобальная переменная, объявленная вне функции, будет доступна внутри нее. Переменная, объявленная внутри определенного блока кода, будет видна только внутри этого же блока — она называется локальной. Локальные и глобальные переменные def sum (): a = 10 # локальные переменные b = 20 c = a + b print ("Сумма:", c) sum () Переменная объявлена внутри функции и может использоваться только в ней.
Слайд 6
Для решения этой проблемы используются глобальные переменные. Теперь взгляните на этот пример с глобальными переменными: a = 20 # определены вне функции b = 10 def sum (): c = a + b # Использование глобальных переменных print ("Сумма:", c) def sub (): d = a - b # Использование глобальных переменных print ("Разница:", d) sum () sub () В этом коде были объявлены две глобальные переменные: a и b. Они используются внутри функций sum () и sub (). Обе возвращают результат при вызове.
Слайд 7
Если определить локальную переменную с тем же именем, то приоритет будет у нее. Посмотрите, как в функции msg это реализовано. def msg (): m = "Привет, как дела?" print (m) msg () m = "Отлично!" # глобальная переменная print (m) Вывод: Привет, как дела? Отлично! Здесь была объявлена локальная переменная с таким же именем, как и у глобальной. Сперва выводится значение локальной, а после этого — глобальной.
Слайд 8
Python предлагает ключевое слово global, которое используется для изменения значения глобальной переменной в функции. Необходим для изменения значения ! Правила использования global Если значение определено на выходе функции, то оно автоматически станет глобальной переменной. Ключевое слово global используется для объявления глобальной переменной внутри функции. Нет необходимости использовать global для объявления глобальной переменной вне функции.
Слайд 9
c = 10 def mul(): c = c * 10 print(c) mul() line 5, in mul c = c * 10 UnboundLocalError : local variable 'c' referenced before assignment Пример без использования глобального ключевого слова Этот код вернул ошибку, потому что была предпринята попытка присвоить значение глобальной переменной. Изменять значение можно только с помощью ключевого слова global. c = 10 def mul (): global c c = c * 10 print ("Значение в функции:", c) mul () print ("Значение вне функции:", c) Здесь переменная c была объявлена в функции mul () с помощью ключевого слова global. Ее значение умножается на 10 и становится равным 100. В процессе работы программы можно увидеть, что изменение значения внутри функции отражается на глобальном значении переменной.
Слайд 10
k=0 def F(n): global k k=k+1 if n>0: F(n-2) F(n-2) F(n//2) return k print(F(6))
Слайд 11
k=0 def F( n ): global k k=k+1 if n > 0: G(n - 1) return k def G( n ): global k k=k+1 if n > 1: F(n - 2) return k print(F(13))
Слайд 12
k=0 def F(n): print( ‘* ’) if n>0: F(n-2) F(n-2) F(n//2) print(F(2)) F(2) * if n>0: F(0) * F(0) * F(1) * if n>0: F(-1) * F(-1) * F(0) * None Рекурсия Рекурсия — это способ организации циклического процесса путем вызова рекурсивной функции. Рекурсивная функция — это функция, которая содержит код вызова самой себя с целью организации циклического процесса. С помощью рекурсивных функций можно с минимальным объемом кода решать некоторые задачи, обойдя использование (объявление) лишних структур данных. Рекурсию можно рассматривать как альтернативу циклам и итерациям.
Слайд 13
(№ 4173) (Е. Джобс) Алгоритм вычисления значения функции F(n), где n – целое число, задан следующими соотношениями: F(0) = 1, F(1) = 3 F(n) = F(n–1) - F(n-2) + 3n, при n > 1. Чему равно значение функции F(40)? В ответе запишите только целое число. from functools import lru_cache @ lru_cache () def F(n): if n==0: return 1 if n==1: return 3 if n>1: return F(n-1)-F(n-2)+3*n print(F(40)) f=[0]*41 for n in range (1,41): if n==0: f[n]=1 if n==1: f[n]=3 if n>1: f[n]= f[n-1]-f[n-2]+3*n print(f[40]) 1 способ: 2 способ:
Слайд 14
(№ 4172) (Е. Джобс) Алгоритм вычисления значения функции F(n), где n – целое число, задан следующими соотношениями: F(n) = n + 3, при n ≤ 3 F(n) = F(n – 2) + n, при n > 3 и четном значении F(n-1), F(n) = F(n – 2) + 2•n, при n > 3 и нечетном значении F(n-1). Определите сумму значений, являющихся результатом вызова функции для значений n в диапазоне [40; 50]. from functools import lru_cache @ lru_cache () def F(n): if n<=3: return n+3 if F(n-1)%2==0 and n>3: return F(n-2)+n if n%2!=0 and n>3: return F(n-2)+2*n s=0 for i in range (40,51): s= s+F ( i ) print(s) s=0 f=[0]*51 for n in range (1,51): if n<=3: f[n]=n+3 if f[n-1]%2==0 and n>3: f[n]=f[n-2]+n if n%2!=0 and n>3: f[n]=f[n-2]+2*n print(sum(f[40:51])) 2 способ: 1 способ: