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]. Обратите внимание на заглавные буквы в этих словах.

5 < 3 даст False, а 3 < 5 даст True.

Можно составлять произвольные цепочки сравнений: 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 = 2; x == y даёт True. x = „str“; y = „stR“;

x == y даёт False. x = „str“; y = „str“; x == y даёт True.

!=

Не равно

Проверяет, верно ли, что объекты не равны

x = 2; y = 3; x != y даёт True.

not

Логическое НЕ

Если x равно True, оператор вернёт False.

Если же x равно False, получим True.

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,

так как уже знает, что левая часть выражения ‘and’ равняется False,

что подразумевает, что и всё выражение в целом будет равно False, независимо от значений всех остальных операндов. Это называется укороченной оценкой булевых (логических) выражений.

or

Логическое ИЛИ

Если x равно True, в результате получим True,

в противном случае получим значение y

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