Урок 3
Функции, условные выражения и циклы

Разбираемся с основными составляющими функции в Python: аргументы, тело, возвращаемое значение. Изучаем структуру и синтаксис условного оператора if..elif..else. Учимся писать циклы for и while. Решаем задачи.
Logo Python Course Lesson 3
Урок 3
Функции, условные выражения и циклы
Разбираемся с основными составляющими функции в Python: аргументы, тело, возвращаемое значение. Изучаем структуру и синтаксис условного оператора if..elif..else. Учимся писать циклы for и while. Решаем задачи.

ТЕОРЕТИЧЕСКИЙ БЛОК

В КОНЦЕ УРОКА ЕСТЬ ВИДЕО
One
1

Функция

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

Существуют некоторые правила для создания функций в Python.
  1. Блок функции начинается с ключевого слова def, после которого следуют название функции и круглые скобки ().
  2. Любые аргументы, которые принимает функция, должны находиться внутри этих скобок.
  3. После скобок идет двоеточие : и с новой строки с отступом начинается тело функции.
Python Функция Синтаксис
Функция в Python. Синтаксис.
Т. е. функция определяется следующим образом: def <имя_функции>(<аргументы функции>):.

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

def calc(a, b):
    print(a)
    print(b)
    return a + b
После создания функции, ее можно исполнять вызывая из другой функции или напрямую из оболочки Python. Для вызова функции следует ввести ее имя и добавить скобки.

Например:
Python

calc(7, 19)
Выражение return прекращает выполнение функции и возвращает указанное после выражения значение. Выражение return без аргументов - это то же самое, что и выражение return None. Соответственно, теперь становится возможным, например, присваивать результат выполнения функции какой либо переменной.

Например, создадим переменную sum и присвоим ей значение :
Python

def calc(a, b):
    print(a)
    print(b)
    return a + b

sum = calc(21, 19)
Two
2

Аргументы функции

Вызывая функцию, мы можем передавать ей следующие типы аргументов:
  1. Обязательные аргументы (Required arguments)
  2. Аргументы-ключевые слова (Keyword arguments)
  3. Аргументы по-умолчанию (Default arguments)
  4. Аргументы произвольной длины (Variable-length argumens)
Рассмотрим каждый из типов подробнее.

1. Обязательные аргументы
Если при создании функции мы указали количество передаваемых ей аргументов и их порядок, то и вызывать ее мы должны с тем же количеством аргументов, заданных в нужном порядке.

Например:
Python

# Определим функцию hour_to_sec
# Она переводит часы в секунды
def hour_to_sec(hour, min, sec):
     return hour * 60 * 60 + min * 60 + sec

# Вызовем функцию. Количество и порядок аргументов очень важны!
# Иначе результат вычислений будет неверным
>>> hour_to_sec(0, 5, 50)
350
2. Аргументы-ключевые слова
Аргументы-ключевые слова используются при вызове функции. Благодаря ключевым аргументам, вы можете задавать произвольный (то есть не такой, каким он описан при создании функции) порядок аргументов.

Например:
Python

# Используем ту же самую функцию
def hour_to_sec(hour, min, sec):
     return hour * 60 * 60 + min * 60 + sec

# Хотя в определении первым параметром идут часы,
# мы можем передать секунды в качестве первого аргумента.
# В таком случае мы обязаны указать имя параметра
>>> hour_to_sec(sec=50, hour=0, min=5)
350
3. Аргументы по-умолчанию
Аргумент по умолчанию, это аргумент, значение для которого задано изначально, при создании функции. Если при вызове функции вы не будете передавать данный аргумент, то функция возьмет его значение по-умолчанию.

Например:
Python

# Функция принимает два параметра: имя и возраст
# Параметр age имеет значение по-умолчанию
def person(name, age=25):
     print(name, 'is', age, 'years old')

# Передадим функции оба параметра и посмотрим результат
>>> person('Ivan', 19)
Ivan is 19 years old

# Теперь передадим функции только 1 параметр
# Параметр age примет свое значение по-умолчанию
>>> person('Ivan')
Ivan is 25 years old
4. Аргументы произвольной длины
Иногда возникает ситуация, когда вы заранее не знаете, какое количество аргументов будет необходимо принять функции. В этом случае следует использовать аргументы произвольной длины. Они задаются произвольным именем переменной, перед которой ставится звездочка (*).

Например:
Python

# Определим функцию с произвольным количеством параметров
# Данная функция выводит переданные ей аргументы в консоль
def print_args(*args):
     print(args)

# Вызовем функцию без аргументов
>>> print_args()
()

# Вызовем функцию с 1 аргументом
>>> print_args('Строка')
('Строка')

# Вызовем функцию с 5ю аргументами
>>> print_args(1, 'Строка', 'Еще строка', 38, 4)
(1, 'Строка', 'Еще строка', 38, 4)

Задачи по теме


Функции, их типы, причины применения. Аргументы и параметры, разновидности. Примеры использования и задачи с решениями.

Three
3

Условные операторы

Условная инструкция if-elif-else (оператор ветвления) - основной инструмент выбора в Python. Говоря простым языком, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия. Существует несколько вариаций использования данной инструкции.

1. Условная конструкция if
Команда if в Python работает по той же схеме, что и в других языках программирования. Она содержит в себе логическое условие, и если это условие истинно (равно True) - выполнится блок кода, записанный внутри команды if. Если же логическое условие ложно (равно False), то блок кода записанный внутри команды if пропускается, а выполнение кода переходит на следующую после блока if строчку кода.
Python If Else Синтаксис
Python

# Если число больше нуля, печатаем сообщение с данной информацией
# Если число НЕ больше нуля, то пропускаем содержимое блока if
# Переходим с следующей команде программы
if number > 0:
    print('Число больше нуля')
print('Идем дальше')
2. Конструкция if...else
В конструкцию if может быть добавлена команда else. Она содержит блок кода, который выполняется, если условие в команде if ложно.

Команда else является опциональной, в каждой if - конструкции может быть только одна команда else.

Например:
Python

# Если выражение number > 0 истинно, то печатаем 'Число больше нуля'
# Если выражение number > 0 ложно, то печатаем 'Число меньше либо равно нулю'
if number > 0:
    print('Число больше нуля')
else
    print('Число меньше либо равно нулю')
3. Команда elif
Команда elif позволяет проверить истинность нескольких выражений и в зависимости от результата проверки выполнить нужный блок кода.

Как и команда else, команда elif является опциональной, однако, в отличие от команды else, у одной if-конструкции может существовать произвольное количество команд elif.

Например:
Python

if number > 0:
    print('Число больше 0')
elif number == 0:
    print('Число равно 0')
else
    print('Число меньше 0')
А как же switch..case?
Условные конструкции, это типичная структура для реализации механизма принятия решений, и они существуют в подавляющем большинстве языков программирования. Обратите внимание, что базовый Python не поддерживает конструкцию switch/case, как, например, JavaScript, но ее можно реализовать при помощи if...elif...else конструкции.

Задачи по теме


Особенности и структура условных выражений в Python. Полные и неполные условные выражения, примеры задач с решениями.

Four
4

Проверка истинности в Python

Основные принципы проверки истинности выражений:
  1. Любое число, не равное 0, или непустой объект - истина.
  2. Числа, равные 0, пустые объекты и значение None - ложь.
  3. Операции сравнения применяются к структурам данных рекурсивно.
  4. Операции сравнения возвращают True или False

Логические операторы:

True False
Five
5

Циклы

Python Цикл For While Синтаксис
Циклы While и For в Python. Синтаксис.
Часто возникают ситуации, в которых вам необходимо выполнить блок кода несколько раз. Как правило, команды выполняются одна вслед за другой, но существуют способы зациклить код. Во многих языках программирования для этой цели используются инструкции циклов. В Python существуют следующие два типа цикличных выражений:
  1. Цикл while
  2. Цикл for
.Поговорим о каждом из них более подробно.

1. Цикл while в Python
Инструкция while в Python повторяет указанный блок кода до тех пор, пока указанное в цикле условие будет оставаться истинным. While - один из самых универсальных циклов в Python, поэтому довольно медленный.

Цикл while записывается следующим образом:
Псевдокод

while <условие>:
    <выражение>
При этом выражением может быть как одна так и несколько инструкций. Условием может быть любое истинное или не нулевое значение. Выражение будет повторяться, пока условие будет истинным.

Когда условие становится ложным интерпретатор переводит выполнение программы на строку, следующую за циклом. Рассмотрим следующий пример цикла:
Python

apples = 5
# Запускаем цикл
while(apples > 0):
    # Работаем внутри цикла, печатаем сообщение
    print('We have', apples, 'apples')
    # Уменьшаем счетчик на 1
    apples -= 1
# Вышли из цикла
print('We have no apples any more!')
А вот как выглядит результат выполнения:
Терминал - интерактивный режим

>>> count_apples(5)
We have 5 apples
We have 4 apples
We have 3 apples
We have 2 apples
We have 1 apples
We have no apples any more!
Бесконечный цикл
Цикл while становится бесконечным в случае, когда условие цикла никогда не становится ложным. Примером задачи, для реализации которой необходим бесконечный цикл, может быть, например, создание программы "Часы", которая бесконечно будет обновлять и отображать время. Однако, часто бесконечный цикл является ошибкой начинающего программиста, который забыл добавить изменение условия цикла. Например:

num = 1
while num < 10 :

____print('We are still in cycle!')

Не спешите запускать данный цикл, иначе ваша программа начнет бесконечное выполнение.

Задачи по теме


Задачи по циклам в Python: for, while. Синтаксис, особенности выхода из циклов, вложенные циклы.

2. Цикл for в Python

Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например, строке или списку), и во время каждого прохода выполняет тело цикла. Синтаксис данного цикл выглядит следующим образом:
Псевдокод

for <элемент> in <последовательность>:
    <выражение>
Переменной присваивается значение первого элемента последовательности, после чего выполняется выражение(или несколько выражений) внутри цикла. Затем переменной присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы последовательности.

Например:
Python

# Перебираем буквы в строке
word = 'Слово'
for letter in word:
    print(letter)

# Результат выполнения
С
л
о
в
о

# Перебираем элементы списка
shopping_list = ['milk', 'bread', 'cucumber', 'butter']
for element in shopping_list:
    print(element)

# Результат выполнения
milk
bread
cucumber
butter

# Перебираем элементы словаря
# По-умолчанию цикл проходится по ключам словаря
# Значение по ключу получаем самостоятельно seasons[s]
seasons = {1: 'Зима', 2: 'Весна', 3: 'Лето', 4: 'Осень'}
for s in seasons:
    print('Номер сезона:', s)
    print('Название:', seasons[s])

# Результат выполнения
Номер сезона: 1
Название: Зима
Номер сезона: 2
Название: Весна
Номер сезона: 3
Название: Лето
Номер сезона: 4
Название: Осень
Операторы continue и break
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла ( for или while). Пример:

for letter in 'Стол':
____if letter == 'т':
________continue
____print(letter)


Результат выполнения:
С
о
л


Оператор break досрочно прерывает цикл. Пример:

for letter in 'Стол':
____if letter == 'т':
________break
____print(letter)


Результат выполнения:
С
Six
6

Функция range()

range() является универсальной функцией питона для создания списков( list), содержащих арифметическую прогрессию. Чаще всего она используется в циклах for.

Функция range() может принимать от одного до трех аргументов, при этом аргументами должны быть целые числа ( int). Так выглядит стандартный вызов функции range():
Псевдокод

range(старт, стоп, шаг)

# Возвращает список целых чисел в форме
[старт, старт + шаг, старт + шаг*2 ..]
По умолчанию старт равняется нулю, шаг единице.
Примеры использований функции range() :
Python

# Создаем последовательность с шагом 1
>>> for i in range(1, 5):
...     print(i)
1
2
3
4

# Создаем последовательность с шагом 3
>>> for i in range(0, 11, 3):
...     print(i)
0
3
6
9
Таким образом, функция range() позволяет нам генерировать ряд чисел в рамках заданного диапазона. В зависимости от того, как много аргументов вы передаете функции, вы можете решить, где этот ряд чисел начнется и закончится, а также насколько велика разница будет между двумя числами.

ПРАКТИЧЕСКИЙ БЛОК

One
1

Что такое IDE?

IDE (или интегрированная среда разработки) — это программа, предназначенная для разработки программного обеспечения. Как следует из названия, IDE объединяет несколько инструментов, специально предназначенных для разработки. Эти инструменты обычно включают:
  1. Редактор, предназначенный для работы с кодом (например, подсветка синтаксиса и автодополнение)
  2. Инструменты сборки, выполнения и отладки
  3. Определённую форму системы управления версиями.
Большинство IDE поддерживают множество языков программирования и имеют много функций, из-за чего могут быть большими, занимать много времени для загрузки и установки и требуют глубоких знаний для правильного использования.

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

Итак, что нам нужно от среды разработки? Набор функций разных сред может отличаться, но есть набор базовых вещей, упрощающих программирование:
  1. Сохранение файлов.
  2. Запуск кода из среды.
  3. Поддержка отладки, т. е. возможности пошагового выполнения кода.
  4. Подсветка синтаксиса.
  5. Автоматическое форматирование кода.
Two
2

PyCharm

Одной из лучших полнофункциональных IDE, предназначенных именно для Python, является PyCharm. Существует как бесплатный open-source (Community), так и платный (Professional) варианты IDE. PyCharm доступен на Windows, Mac OS X и Linux.

PyCharm «из коробки» поддерживает разработку на Python напрямую — откройте новый файл и начинайте писать код. Вы можете запускать и отлаживать код прямо из PyCharm. Кроме того, в IDE есть поддержка проектов и системы управления версиями.
PyCharm Logo
Преимущества использования PyCharm: это среда разработки для Python с поддержкой всего и вся и хорошим коммьюнити. В ней «из коробки» можно редактировать, запускать и отлаживать Python-код.

Недостатки: PyCharm может медленно загружаться, а настройки по умолчанию, возможно, придётся подкорректировать для существующих проектов.
Three
3

Установка PyCharm

PyCharm Window
Как установить PyCharm? Легко! Выполняем несколько простых шагов:
  1. Скачиваем установочный файл с официального сайта. Обратите внимание, что качать надо бесплатную Community версию. Ссылка на страницу для скачивания: https://www.jetbrains.com/pycharm...
  2. Запустите установочный файл и следуйте инструкциям.
Демонстрацию установки PyCharm смотрите ниже в записи:
Хронометраж
00:25 Установка IDE PyCharm(Windows)
03:30 Настройка и запуск первой программы(Windows)
07:00 Установка IDE PyCharm(MacOS)
08:00 Настройка и запуск первой программы(MacOS)
Four
4

Разбираем задачи

Мы с вами изучили, как работать с условными выражениями и циклами в Python. Также выяснили, что для работы нам понадобится IDE PyCharm и получили инструкции по ее установке. Теперь пришло время воспользоваться нашими новыми знаниями и инструментами.

Приводим вам небольшой список задачек для тренировки:
Подробный разбор решения задач:
Хронометраж
00:40 Синтаксис функции
04:40 Отладка программы(Debug)
09:35 Точка входа в программу
12:00 Задача 1
18:40 Задача 2
27:10 Задача 3
Five
5

Домашнее задание

Предлагаем вам выполнить следующие действия:
1. Установить PyCharm(см. инструкцию по установке PyCharm в соответствующем пункте практической части урока)
2. Написать 2 небольших программы в качестве решения к следующим задачам:
Задача 1
Дан список lst = [11, 5, 8, 32, 15, 3, 20, 132, 21, 4, 555, 9, 20].
Необходимо вывести элементы, которые одновременно 1) меньше 30 и 2) делятся на 3 без остатка. Все остальные элементы списка необходимо просуммировать и вывести конечный результат.
Задача 2
Написать функцию month_to_season(), которая принимает 1 аргумент - номер месяца - и возвращает название сезона, к которому относится этот месяц.
Например, передаем 2, на выходе получаем 'Зима'.
Делитесь возможными решениями задач в комментариях. Также предлагаем вам к рассмотрению и изучению наши варианты решений и соответствующие комментарии к каждому из заданий.
Как вам материал?

Читайте также