Блог Портфолио Контакты Python уроки

Функции

👈 перейти ко всем урокам

Содержание урока

Функция — это алгоритм, составленный на языке программирования и имеющий уникальное имя.

В уроке мы узнаем:

  1. узнаете, как создать собственную функцию и использовать её в программе;
  2. узнаете, как вернуть из функции результат её работы;
  3. оптимизируете рутинную работу с помощью функций.

Работа с функциями

Функция: это именованный набор команд программы, который может быть вызван из другой части программы.

Формальное определение и устройство функции:

значение = имя_функции(аргумент1, аргумент2, …)

Некоторые особенности:

Функция не возвращает значение в явном виде:

имя_функции(аргумент)

print(print('Hello!'))

>> Hello!
>> None

print() печатает результат работы print(), который не определён.

Функция возвращает значение:

результат = имя_функции(аргумент)

print(len('poiuytr'))

>> 7

print() печатает результат работы len() — целое число.

Создание собственных функций

Процесс создания функции называется объявлением функции.

Чтобы объявить функцию, нужно:

  1. указать оператор def;
  2. написать имя функции, перечислить параметры и поставить двоеточие;
  3. программно описать работу функции.

Обратите внимание!

При объявлении функции перечисляются переменные-параметры. Значения присваиваются им позже в момент вызова функции.

При вызове функции в неё передаются аргументы, т. е. конкретные значения (даже если они скрываются за переменными).

Пример функции

Функция для приветствия пользователя:

def hello(user_name): # пример функции
     print('Здравствуйте, ' + user_name +'!')

name = input('Введите имя:')
hello(name) # аргумент, передаваемый в функцию

Решим задачу №1

Задача №1. Написать программу для печати фирменных этикеток центра для тетрадей учеников. В этикетке должны быть название центра и поля «Имя», «Курс», «Группа». Запросите ввод числа этикеток и напечатайте их, как на картинке.

def print_label(name):
    print('ЦЕНТР УСПЕХ')
    print('Имя: ____')
    print('Курс: ____')
    print('Группа: ______')

print('Автомат для печати этикеток')
amount = int(input('Число учеников:'))
for i in range(amount):
    name = input('Имя ученика:')
    print_label(name)
print('Готово! Заберите этикетки.')

Решим задачу №2

Задача №2. Напишите программу, считающую средний балл ученика. Программа должна запрашивать ввод имени ученика и его оценок и печатать посчитанный средний балл в формате: «<Имя> — средний балл — <Балл>».

def average_grade(name):
    grade = input('Оценка (off-остановить ввод):')
    summa = 0
    total = 0
    while grade != 'off':
        summa += int(grade)
        total += 1
        grade = input('Оценка (off-остановить ввод):')
    print(name, '- средний балл -', summa/total)

amount = int(input('Число учеников:'))
for i in range(amount):
    name = input('Имя ученика:')
    average_grade(name)

Вопросы для самопроверки:

  1. Возвращает ли функция average_grade() значение явным образом? Если да, то какое?
  2. Что напечатает программа, если запросить вывод среднего балла ученика Ивана с оценками 4, 3, 4, 5?
  3. Вернитесь к предыдущему слайду и покажите аргументы функции average_grade() и её параметры.

Локальная область видимости

Интерпретатор Python связывает переменную с местом, в котором она используется.
Объявленные программистом функцииявляютсясамостоятельными блоками программы ссобственными переменными.

>> name 'average' in not defined # означает что переменная average не найдена

Оператор return

Чтобы получить (вернуть) из функции значение, нужно использовать оператор return.

Это значение можно присвоить переменной в основной части программы.

Рассмотрим задачу №3

Задача. В центре проводилась олимпиада по географии.

Напишите функцию, запрашивающую имя ученика и балл и возвращающую строку: «Ученик(-ца) <имя> — <награда>».

def get_result(score):
    if score >= 50 and score < 100:
        result = 'диплом III степени'
    elif score >= 100 and score < 200:
        result = 'диплом II степени'
    elif score >= 200:
        result = 'диплом I степени'
    else:
        result = 'благодарственное письмо'
    return result

name = input('Имя ученика:')
score = int(input('Набранный балл:'))
result = get_result(score)
print(name, '-', result)
if result == 'диплом I степени':
    print('Подарок — сертификат в книжный магазин')

Попробуй ответить на вопросы самостоятельно:

  1. Что напечатает программа, если запросить результат участия в конкурсе для ученицы Алисы, набравшей 190 баллов?
  2. Покажите в написанной программе имя функции, аргументы функции, возвращаемое значение.
  3. Какой оператор возвращает результат работы функции в основную часть программы?