02

Управляющие выражения

Cтруктуры данных: списки

Любые данные в компьютере хранятся ввиде набора байт, однако человеку гораздо проще рабоать с какой-либо абстрактной моделью представляющей данные. Такие модели называются структурами данных, это могут быть примитивы, такие как число или символ, или более сложные структуры данных, состоящие из отдельных примитивов. Структуры данных очень полезны, поскольку позволяют организивать удобную и эффективную работу с данными в зависимости от их вида. Как пример сложно структуры мы уже встречали строки и списки. О последних мы поговорим в этом разделе.

Списки (list) - упорядоченные изменяемые коллекции объектов произвольных типов. К элементу или диапазону элементов списка можно обращаться по номеру (нумерация с нуля). Отрицательный индекс означает, что отсчет ведется с конца списка к началу.

In [5]:
my_list = [] # создание пустого списка
my_list.append('a') # добавление элемента
my_list.append(4)
my_list.append(2.5)
my_list.extend([1, 2, 3]) # добавление списка в конец списка my_list
print(my_list) 
print(my_list[1]) # Выбор элемента с индексом 1, ВНИМАНИЕ нумерация идет с нуля!
print(my_list[1:]) # Срез списка: все элементы от номер 1  включительно до конца
print(my_list[1:3]) # Срез списка
print(my_list[1:5:2]) # Срез списка c шагом 2
print(my_list[::2]) # Элементы списка с четных позиций
print(len(my_list)) # длина списка
['a', 4, 2.5, 1, 2, 3]
4
[4, 2.5, 1, 2, 3]
[4, 2.5]
[4, 1]
['a', 2.5, 2]
6

Если список состоит из сравнимых элементов, то его можно отсортировать.

In [9]:
my_new_list = [-9, 5, 1, 8, -3, 2]
my_new_list.sort()
print(my_new_list)
[-9, -3, 1, 2, 5, 8]

Условия и циклы

Условие if

Для проверки условий используется логический тип (bool), который представлен двумя постоянными значениями False и True. Возможно приведение других типов в логическому с помощью операции bool(x)

In [ ]:
c = True
d = False
print(c, d)
print(type(c), type(d))
print(bool(123))
print(bool('hello'))
print(bool(0))
print(bool(''))
print(bool())

Условный оператор в Pytnon провяряет значение выражения (или переменной), которой является или приводиться к логическому типу. Если выражение после if верно, то блок команд с отступом выполняется, если нет - пропускается.

In [3]:
x = -4
if x > 0:
    print('x is positive')
    
y = 5
if y > 0:
    print('y is positive')
y is positive
In [4]:
a = 5
if a:
    print("Значение переменной a автоматически сконвертировалось к логическом типу")
Значение переменной a автоматически сконвертировалось к логическом типу

Если выражение после if верно, то выполняется первый блок команд, если нет - второй блок.

In [4]:
x = -4
if x > 0:
    print('positive')
else:
    print('negative')
negative

Внутри условных инструкций можно использовать любые инструкции языка Питон, в том числе и условную инструкцию. Получаем вложенное ветвление – после одной развилки в ходе исполнения программы появляется другая развилка. При этом вложенные блоки имеют больший размер отступа (например, 8 пробелов). Писать много вложенных проверок условий является плохой практикой и Python препятсвует ей.

In [5]:
x = 5
y = -2
if x > 0:
    if y > 0:               # x > 0, y > 0
        print("Первая четверть")
    else:                   # x > 0, y < 0
        print("Четвертая четверть")
else:
    if y > 0:               # x < 0, y > 0
        print("Вторая четверть")
    else:                   # x < 0, y < 0
        print("Третья четверть")
Четвертая четверть

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

In [6]:
x = -3
y = 3
if x > 0 and y > 0:
    print("Первая четверть")
elif x > 0 and y < 0:
    print("Четвертая четверть")
elif y > 0:
    print("Вторая четверть")
else:
    print("Третья четверть")
Вторая четверть

Цикл for

В цикле for указывается переменная и множество значений, по которому будет пробегать переменная. Множество значений может быть задано списком, кортежем, строкой или диапазоном.

In [7]:
for i in 1, 2, 3, 'one', 'two', 'three':
    print(i)
1
2
3
one
two
three

Функция range() позволяет вам генерировать ряд чисел в рамках заданного диапазона. Различные способы вызова функции:

  • range(stop)
  • range(start, stop)
  • range(start, stop, step)
In [10]:
for number in range(5):
    print(number)
print('\n')
for number in range(2, 5):
    print(number)
print('\n')  
for number in range(1, 5, 2):
    print(number)
0
1
2
3
4


2
3
4


1
3

Цикл while

Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

In [13]:
i = 1
while i <= 5:
    print(i ** 2)
    i += 1
1
4
9
16
25

Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.

In [15]:
i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print('Цикл окончен, i =', i)
1
2
3
4
5
Цикл окончен, i = 6
In [16]:
i = 1
while i <= 5:
    print(i)
    i += 1
    if i == 3:
        break
else:
    print('Цикл окончен, i =', i)
1
2
In [20]:
i = 0
while i <= 5:
    i += 1
    if i == 3:
        continue
    print(i)
else:
    print('Цикл окончен, i =', i)
1
2
4
5
6
Цикл окончен, i = 6
^Наверх
Вниз