
Методички / 2. Функции. Теория
.pdfЗанятие 2. Функции.
Функция – это составная инструкция, которая позволяет принимать данные, выполнять указания или действия и возвращать данные ввода. Функции используются для вычислений и выполнения различных операций, но главный плюс – это многократное выполнение кода.
Например, у нас есть математическая функция f(x) = 3*x +1
Имя функции f(x), которая принимает в себя какие-то исходные данные и затем выполняет с ними действия. В питоне все выглядит похоже: есть имя функции, исходные данные, которые принимает эта функция и указания операций с этими данными.
Синтаксис функций
def имя_функции (параметры):
тело_функции (какое-либо действие)
Задание 2-1:
def hello ():
print (‘Привет, мир!’)
Мы объявили (создали) функцию, дали ей указания, но мы ее еще не вызвали. Для этого нужно указать в теле программы ее имя и параметры, которые мы ей передаем.
def hello ():
print (‘Привет, мир!’)
hello ()
Как говорилось ранее, функции могут вызываться многократно в процессе написания программы, например
def hello ():
print (‘Привет, мир!’)
hello ()
hello ()
hello ()
hello ()
Сейчас функция вызывается 4 раза.
Теперь попробуем использовать функцию для работы с данными. Мы должны научиться пользоваться функциями, чтобы они принимали данные, проводили с ними какие-то операции и выдавали результат.
Задание 2-2. Пользователь вводит 2 целых числа, нужно написать функцию, которая выводит разность этих двух чисел.
def diff(a,b): # объявляем функцию diff (разность) с параметрами а и b, называем их отличными от х и у буквами, чтобы они потом не сталкивались.
return a - b # функция должна выдать результат, т.е. вернуть какое-либо значение, для этого используется оператор return
х = int(input (“Введите 1 число: ”))
у = int(input (“Введите 2 число: ”))
diff(х,у) # вызываем функцию
Но результат не выводится. В чем ошибка? Программа просто запомнила результат, но не распечатала (не вывела на экран). Добавляем print к вызову функции или оператор return.
print(diff(х,у))
Можно пойти другим путем и ввести еще одну переменную, например, z.
def diff(a,b):
return a-b
x= int(input("Введите 1 число:"))
y= int(input("Введите 2 число:"))
z= diff (x,y)
print (z)
Задание 2-3, для самостоятельной работы. Пользователь вводит 2 дробных числа, нужно написать функцию, которая выводит сумму этих двух чисел.
Пример 2. математическая функция f(x) = 3*x +1
У нас есть функция с именем f, которая принимает параметр a (какое-либо число)
def f(a):
return 3*a+1
print (f(5))
Функции в Python могут принимать параметры двух типов: обязательные и необязательные. В нашем примере а – обязательный параметр, т.е. пользователь обязательно должен указать значение а, если этого не сделать программа выдаст ошибку.
Необязательные параметры можно задать сразу оператором присваивания = (по умолчанию). Например:
def f(a=5):
return 3*a+1
print (f())
Это значит, если пользователь ничего не укажет, то программа автоматически посчитает а=5
def f(a=5):
return 3*a+1
print (f(4))
Если указать обязательный параметр при вызове функции, например, 4, то программа подставит в функцию его.
Область видимости переменных
Это часть программы, в пределах которой идентификатор, объявленный как имя некоторой переменной или функции, остаётся связанным с ним, то есть позволяет посредством себя обратиться к ней. Говорят, что идентификатор объекта «виден» в определённом месте программы, если в данном месте по нему можно обратиться к данному объекту. За пределами области видимости тот же самый идентификатор может быть связан с другой переменной или функцией, либо быть свободным (не связанным ни с какой из них).
Иными словами, правила добавления переменных в программу так, чтобы потом можно было их найти и получить их значение, должны определяться четкими границами.
Пример. Мы задаем некоторые переменные a и b, затем вызываем функцию def f(a,b) от переменных a и b, которая просто выводит эти числа. Вызываем ее.
а=5
b=3
def f(a,b):
print (a)
print (b)
f (a,b)
В данном случае мы задали значения a и b заранее, программа выводит эти числа.
Теперь попробуем написать их в теле функции. Предположим, нам не нужно сейчас вызывать функцию, а нужно вызвать переменные, которые мы задали внутри функции.
def f(a,b):
а=5
b=3
print (a)
print (b)
print (a)
print (b)
У нас выдается ошибка, Python не знает, что это за переменные, так как мы их до этого не объявляли. Это значит, что a и b в данном случае будут локальными переменными, их будет видно только внутри функции. Если мы за пределами функции будем использовать эти переменные, Python их не видит.
Если a и b написаны вне функции, то они будут являться глобальными.
В данном случае, чтобы Python увидел переменные, их нужно сделать глобальными.
а=5
b=3
def f(a,b):
а=5
b=3
print (a)
print (b)
print (a)
print (b)
Если есть необходимость использовать и изменять глобальную переменную внутри функции, то необходимо использовать оператор global. Например, мы хотим использовать глобальную переменную а внутри функции.
а=5
b=3
def f():
global а
а=а+2
print (a)
f()
Т.е. при помощи оператора global мы взяли глобальную переменную а, изменили ее внутри функции и вывели ее на экран после изменений. Но стоит помнить, если мы в дальнейшем будем вызывать переменную а, то она будет вызываться измененной.
а=5
b=3
def f():
global а
а=а+2
print (a)
f()
print (a)

Подводя итог занятия:
Оператор return - используется в функциях для возвращения данных после выполнения работы самой функции
Оператор global - позволяет изменять изнутри функции значение глобальной переменной
Практическое задание 2-5. Составить функцию, которая принимает на вход массу тела (в килограммах) и рост (в метрах), и возвращает индекс массы тела.
Рабочая формула ИМТ = вес/(рост)^2
def bmi(a,b):
return a / b ** 2
weight = int(input ("Введите вес: ")) height = float(input ("Введите рост: ")) z = bmi (weight, height)
print ("Индекс массы тела =", z)
Теперь введем условия: ИМТ меньше 18,5 – недостаточная масса тела, 18,5-25 – нормальная масса тела, 25-30 – избыточная масса тела, больше 30 – ожирение.
def bmi(a,b):
return a / b ** 2
weight = int(input ("Введите вес: ")) height = float(input ("Введите рост: ")) z = bmi (weight, height)
if z < 18.5:
description = "недостаточная масса тела" elif z < 25:
description = "нормальная масса тела" elif z < 30:
description = "избыточная масса тела"
else:
description = "ожирение" print("bmi=", z, description)
Задание 2-6, для самостоятельной работы. Рассчитать ЧСС по формуле ЧСС = 60/(R-R). Ввести условия: от 60 до 90 в минуту - норма. более 90 в минуту - тахикардия, менее 60 в минуту – брадикардия. Где R-R (длительность интервала, секунд) - одно не целое число (параметр функции).
Информативно (значения показателей):
Длительность |
ЧСС в минуту |
|
Длительность |
ЧСС в минуту |
интервала R-R, с |
|
|
интервала R-R, с |
|
|
|
|
|
|
1,50 |
40 |
|
0,85 |
70 |
1,40 |
43 |
|
0,80 |
75 |
1,30 |
46 |
|
0,75 |
80 |
1,25 |
48 |
|
0,70 |
86 |
1,20 |
50 |
|
0,65 |
82 |
1,15 |
52 |
|
0,60 |
100 |
1,10 |
54 |
|
0,55 |
109 |
1,05 |
57 |
|
0,50 |
120 |
1,00 |
60 |
|
0,45 |
133 |
0,95 |
63 |
|
0,40 |
150 |
0,90 |
66 |
|
0,35 |
172 |
|
|
|
|
|