2. Операторы языка Python¶
Большинство предложений (логических строк) в программах содержат выражения. Простой пример выражения: 2 + 3. Выражение можно разделить на операторы и операнды.
Операторы – это некий функционал, производящий какие-либо действия, который может быть представлен в виде символов, как например +, или специальных зарезервированных слов. Операторы могут производить некоторые действия над данными, и эти данные называются операндами. В нашем случае 2 и 3 – это операнды.
2.1. Базовые операторы¶
далее стоит привести таблицу операторов:
Оператор |
Название |
Объяснение |
Примеры |
„+“ |
Сложение |
Суммирует два объекта |
3 + 5 даст 8; „a“ + „b“ даст „ab“ |
„-„ |
Вычитание |
|
-5.2 даст отрицательное число, а 50 - 24 даст 26. |
„*“ |
Умножение |
|
2 * 3 даст 6. „la“ * 3 даст „lalala“. |
„**“ |
Возведение в степень |
Возвращает число х, возведённое в степень y |
3** 4 даст 81 (т.е. 3 * 3 * 3 * 3) |
/ |
Деление |
Возвращает частное от деления x на y |
4 / 3 даст 1.3333333333333333. |
// |
Целочисленное деление |
Возвращает неполное частное от деления |
4 // 3 даст 1. -4 // 3 даст -2. |
% |
Деление по модулю |
Возвращает остаток от деления |
8 % 3 даст 2. -25.5 % 2.25 даст 1.5. |
<< |
Сдвиг влево |
Сдвигает биты числа влево на заданное количество позиций. (Любое число в памяти компьютера представлено в виде битов - или двоичных чисел, т.е. 0 и 1) |
2 << 2 даст 8. В двоичном виде 2 представляет собой 10. Сдвиг влево на 2 бита даёт 1000, что в десятичном виде означает 8. |
>> |
Сдвиг вправо |
Сдвигает биты числа вправо на заданное число позиций. |
11 >> 1 даст 5. В двоичном виде 11 представляется как 1011, что будучи смещённым на 1 бит вправо, даёт 101, а это, в свою очередь, не что иное как десятичное 5 |
& |
Побитовое И |
Побитовая операция И над числами |
5 & 3 даёт 1. |
„|“ |
Побитовое ИЛИ |
Побитовая операция ИЛИ над числами |
5 | 3 даёт 7 |
^ |
Побитовое ИСКЛЮЧИТЕЛЬНО ИЛИ |
Побитовая операция ИСКЛЮЧИТЕЛЬНО ИЛИ |
5 ^ 3 даёт 6 |
~ |
Побитовое НЕ |
Побитовая операция НЕ для числа x соответствует -(x+1) |
~5 даёт -6. |
< |
Меньше |
Определяет, верно ли, что x меньше y. Все операторы сравнения возвращают True или False [1]. Обратите внимание на заглавные буквы в этих словах. |
Можно составлять произвольные цепочки сравнений: 3 < 5 < 7 даёт True. |
> |
Больше |
Определяет, верно ли, что x больше y |
5 > 3 даёт True. Если оба операнда - числа, то перед сравнением они оба преобразуются к одинаковому типу. В противном случае всегда возвращается False. |
<= |
Меньше или равно |
Определяет, верно ли, что x меньше или равно y |
x = 3; y = 6; x <= y даёт True. |
>= |
Больше или равно |
Определяет, верно ли, что x больше или равно y |
x = 4; y = 3; x >= 3 даёт True. |
== |
Равно |
Проверяет, одинаковы ли объекты |
|
!= |
Не равно |
Проверяет, верно ли, что объекты не равны |
x = 2; y = 3; x != y даёт True. |
not |
Логическое НЕ |
|
x = True; not x даёт False. |
and |
Логическое И |
x and y даёт False, если x равно False , в противном случае возвращает значение y |
x = False; y = True; x and y возвращает False, поскольку x равно False. В этом случае Python не станет проверять значение y,
|
or |
Логическое ИЛИ |
|
x = True; y = False; x or y даёт True. Здесь также может производиться укороченная оценка выражений. |
2.2. Управляющие операторы¶
2.2.1. Условные операторы (if/else)¶
Оператор if используется для проверки условий: если условие верно, выполняется блок выражений (называемый “if-блок”), иначе выполняется другой блок выражений (называемый “else-блок”). Блок “else” является необязательным.
Предупреждение
В языке Python блоки разедяются табами или пробелами
Запомните эмпирическое правило: хотя вы можете использовать для отступов пробелы или табуляции, их смешивание внутри блока обычно не будет удачной идеей применяйте либо то, либо другое. Формально табуляция считается достаточным количеством пробелов, чтобы сместить текущую строку на расстояние, кратное 8, и код будет работать в случае согласованного смешивания табуляций и пробелов. Тем не менее, такой код может быть сложнее изменять. Хуже того, смешивание табуляций и пробелов затрудняет чтение кода целиком, не говоря уже о правилах синтаксиса Python — табуляции в редакторе сменившего вас программиста могут выглядеть сов сем не так, как в вашем редакторе.
Пример использования оператора if
number = 23
guess = int(input('Введите целое число : '))
if guess == number:
print('Поздравляю, вы угадали,') # Здесь начинается новый блок
print('(хотя и не выиграли никакого приза!)') # Здесь заканчивается новый блок
elif guess < number:
print('Нет, загаданное число немного больше этого.') # Ещё один блок
# Внутри блока вы можете выполнять всё, что угодно ...
else:
print('Нет, загаданное число немного меньше этого.')
# чтобы попасть сюда, guess должно быть больше, чем number
print('Завершено')
# Это последнее выражение выполняется всегда после выполнения оператора if
2.2.2. Оператор while¶
Оператор while — самая универсальная конструкция для итераций в языке Python. Выражаясь простыми терминами, он многократно выполняет блок операторов (обыч но с отступом) до тех пор, пока проверка в заголовочной части оценивается как истин ное значение. Это называется “циклом”, потому что управление продолжает возвра щаться к началу оператора, пока проверка не даст ложное значение. Когда результат проверки становится ложным, управление переходит на оператор, следующий после блока while. Совокупный эффект в том, что тело цикла выполняется многократно, пока проверка в заголовочной части дает истинное значение. Если проверка оцени вается в ложное значение с самого начала, тогда тело цикла никогда не выполнится и оператор while пропускается.
В своей самой сложной форме оператор while состоит из строки заголовка с вы ражением проверки, тела с одним или большим количеством оператором с отступами и необязательной части else, которая выполняется, если управление покидает цикл, а оператор break не встретился. Python продолжает оценивать выражение проверки в строке заголовка и выполняет операторы, вложенные в тело цикла, пока проверка не возвратит ложное значение:
number = 23
running = True
while running:
guess = int(input('Введите целое число : '))
if guess == number:
print('Поздравляю, вы угадали.')
running = False # это останавливает цикл while
elif guess < number:
print('Нет, загаданное число немного больше этого.')
else:
print('Нет, загаданное число немного меньше этого.')
else:
print('Цикл while закончен.')
# Здесь можете выполнить всё что вам ещё нужно
print('Завершение.')
2.2.3. Цикл for¶
Оператор for..in также является оператором цикла, который осуществляет итерацию по последовательности объектов, т.е. проходит через каждый элемент в последовательности. Мы узнаем больше о последовательностях в дальнейших главах, а пока просто запомните, что последовательность – это упорядоченный набор элементов.
#Расмотрим несколько примеров
for х in ["spam", "eggs", "ham"]:
print(x, end=' ')
#результатом этого цикла будет строка spam eggs ham
Примечание
оратите мнимание на параметр end=“ „, по умолчанию фукция print() завершает вывод символом конца строки «n», в случае с end=“ „ мы меняем его на пробел. Таким обазом мы выведем сообщения на экран в строку.
for i in range(1, 5):
print(i)
else:
print('Цикл for закончен')
2.2.3.1. Вложенные циклы for¶
Давайте теперь взглянем на цикл for, который сложнее тех, что мы видели до сих пор. В приведенном ниже примере иллюстрируется вложение операторов и конструк ция else цикла for. Имея список объектов (items) и список ключей (tests), код ищет каждый ключ в списке объектов и сообщает о результате поиска:
items = ["ааа", 111, (4, 5), 2.01]
tests = [(4, 5) , 3.14]
for key in tests:
for item in items:
if item — key:
print (key, ’’was found”)
break
else:
print(key, "not found!")
2.2.4. Оператор break¶
Оператор break служит для прерывания[7] цикла, т.е. остановки выполнения команд даже если условие выполнения цикла ещё не приняло значения False или последовательность элементов не закончилась.
Важно отметить, что если циклы for или while прервать оператором break, соответствующие им блоки else выполняться не будут.
while True:
s = input('Введите что-нибудь : ')
if s == 'выход':
break
print('Длина строки:', len(s))
print('Завершение')
2.2.5. Оператор continue¶
Оператор continue используется для указания Python, что необходимо пропустить все оставшиеся команды в текущем блоке цикла и продолжить[9] со следующей итерации цикла.
while True:
s = input('Введите что-нибудь : ')
if s == 'выход':
break
if len(s) < 3:
print('Слишком мало')
continue
print('Введённая строка достаточной длины')
# Разные другие действия здесь...
Ну и в качестве маленького примера давайте нарисуем в консоли Ёлочку :)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''программа рисует в консоли елочку'''
''' *
***
*****
*******
*********
***********
'''
#Пример - 1
for i in range(1, 20, 2): #функция range() указывает начальное значение, конечное значение и шаг.
print('{:^20}'.format('*' * i)) # Печатаем символ выравнивая его по центру
#Пример -2
SPACE = ' '
STRAR = '*'
rows = int(input('Укажите размер ёлочки: '))
spaces = rows-1
stars = 1
for i in range(rows):
print(
(SPACE*spaces) +
(STRAR*stars) +
(SPACE*spaces)
)
stars += 2
spaces -= 1