Основные управляющие конструкции python

Основные конструкции

Сейчас мы совсем реактивно пройдёмся по самым основным управляющим конструкциям. Гет реди.

if

Ну, вы все знаете условный оператор, так ведь?

if age  18: print('Никаких тебе сигарет. Ишь чего удумал!') else: print('Вам синий или красный?') 

Есть ещё elif , их можно сделать много в одном операторе. Это такой аналог switch из других языков.

for

Цикл. Вместо сишного варианта с init, cond и loop выражениями, тут просто итерация по коллекции:

for user in users: print user 

Иногда надо не пройтись по списку, а выполнить одну и ту же операцию много раз. Тогда хорошо подходит функция range. Она возвращает целые числа в заданном промежутке, поэтому в цикле её можно использовать так:

for level_num in range(10): user.levelup() # пользователь получит десять уровней. Читер! 

А вот break и continue делают то же, что в Паскале и Сях. break прерывает выполнение цикла, continue завершает текущую итерацию и переходит к следующей.

Ещё у цикла есть else , но про него почти никто не знает. Как он работает можно посмотреть в официальной документации.

def

Начало объявления функции. После него идёт название, потом – аргументы функции в скобках, двоеточие и тело функции с отступом:

def get_square(value): return value ** 2 

То, что после return – это возвращаемое значение функции.

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

print(get_square(2)) # 4 print(get_square(6)) # 36 print(get_square('ыыы')) # всё сломается 

А вот пример посложнее, из исходников Девмана. Получает пользователя по айди в Слаке:

def _get_user_by_slack_id(slack_user_id): user_email = get_slack_email_for_user(slack_user_id) return User.objects.filter(email__iexact=user_email).first() 

(вот почему емейл необходим)

range

Функция очень полезная, поэтому про неё отдельно. range генерирует целые числа в заданном диапазоне. Например:

range(10) # 0..9 range(5, 10) # 5..9 range(5, 10, 2) # [5, 7, 9] (от пяти до девяти с шагом два) 

Фишка этой функции заключается в том, что она не создаёт список со всеми числами. Вместо этого он вернёт объект, который будет возвращать элементы как только они нужны, по одному. Поэтому код range(9999999999999) не съест всю память. Этот хитрый объект (Sequence ABC, но об этом потом) можно превратить в список явно:

pass

Блок, который ничего не делает:

for i in range(20): pass # 20 раз сделать ничего. Очень полезно! 

Часто используется в начальном коде для заданий: в финальной версии вместо pass должен быть настоящий код.

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Источник

2. Операторы языка Python¶

Большинство предложений (логических строк) в программах содержат выражения. Простой пример выражения: 2 + 3. Выражение можно разделить на операторы и операнды.

Операторы – это некий функционал, производящий какие-либо действия, который может быть представлен в виде символов, как например +, или специальных зарезервированных слов. Операторы могут производить некоторые действия над данными, и эти данные называются операндами. В нашем случае 2 и 3 – это операнды.

2.1. Базовые операторы¶

далее стоит привести таблицу операторов:

отсутствует, он считается равным нулю

-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.

Возвращает неполное частное от деления

Возвращает остаток от деления

8 % 3 даст 2. -25.5 % 2.25 даст 1.5.

Сдвигает биты числа влево на заданное количество позиций. (Любое число в памяти компьютера представлено в виде битов — или двоичных чисел, т.е. 0 и 1)

Сдвигает биты числа вправо на заданное число позиций.

11 >> 1 даст 5. В двоичном виде 11 представляется как 1011, что будучи смещённым на 1 бит вправо, даёт 101, а это, в свою очередь, не что иное как десятичное 5

Побитовая операция И над числами

Побитовая операция ИЛИ над числами

Побитовое ИСКЛЮЧИТЕЛЬНО ИЛИ

Побитовая операция ИСКЛЮЧИТЕЛЬНО ИЛИ

Побитовая операция НЕ для числа x соответствует -(x+1)

Определяет, верно ли, что x меньше y. Все операторы сравнения возвращают True или False [1]. Обратите внимание на заглавные буквы в этих словах.

Можно составлять произвольные цепочки сравнений: 3 < 5 < 7 даёт True.

Определяет, верно ли, что x больше y

5 > 3 даёт True. Если оба операнда — числа, то перед сравнением они оба преобразуются к одинаковому типу. В противном случае всегда возвращается False.

Определяет, верно ли, что x меньше или равно y

Определяет, верно ли, что x больше или равно y

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

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

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

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

x and y даёт False, если x равно False , в противном случае возвращает значение y

x = False; y = True; x and y возвращает False, поскольку x равно False. В этом случае Python не станет проверять значение y,

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

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

в противном случае получим значение 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(' '.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 

© Copyright 2020, Oleg Kishinskii Revision 87b11443 .

Versions latest Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Источник

Читайте также:  Html is high level language
Оцените статью