Архив метки: Python

Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 3

Уровень 2: совместное и параллельное программирование

Дни одноядерных процессоров давно прошли.

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

И иногда вашей программе нужно использовать преимущества этих нескольких ядер для параллельной работы.

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

Но позвольте нам прояснить одну вещь.

Если высокая производительность и увеличенная пропускная способность абсолютно необходимы, Python не будет лучшим языком для поддержки параллельного программирования.

В этой ситуации мы лично предпочли бы вместо его golang (или старый добрый C ).

Но так как это статья о Python, давайте сосредоточимся на Python.

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

Вот некоторые из этих концепций.

 

Взаимное исключение

Если у вас есть данные, которые совместно используются несколькими потоками или процессами, важно синхронизировать доступ к этим общим ресурсам.

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

Взаимное исключение означает, что один поток блокирует дальнейший прогресс других параллельных потоков, которые требуют использования общего ресурса.

 

Замки

Замки являются одной из различных реализаций взаимного исключения.

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

Если поток хочет получить доступ к общему ресурсу, этот поток должен захватить блокировку, прежде чем ему будет предоставлен доступ к этому ресурсу.

И после того, как это сделано с ресурсом, он снимает эту блокировку.

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

Эта простая концепция гарантирует, что не более одного потока может иметь доступ к общему ресурсу одновременно.

 

Тупики

Взаимная блокировка — это когда ваша программа полностью останавливается, потому что некоторые потоки не могут развиваться дальше, потому что они не могут получить блокировку.

Например, представьте, что поток A ожидает в потоке B снятие блокировки. В то же время поток B ожидает в потоке A освобождение еще одной блокировки, которую в данный момент удерживает поток A.

В этой тяжелой ситуации ни поток A, ни поток B не могут развиваться дальше, поэтому ваша программа закрыта!

Вот что такое тупик.

И это случается чаще, чем вы думаете.

Что еще хуже, это также одна из самых сложных проблем для отладки.

 

Состязание

Как мы упоминали ранее, состояние гонки — это ситуация, которая возникает, когда доступ к общему ресурсу не защищен (например, блокировками).

Это может привести к катастрофическим неожиданным результатам.

Посмотрите на этот пример.

import threading

# x это общее значение

x = 0

COUNT = 1000000



def inc():

    global x

    for _ in range(COUNT):

        x += 1



def dec():

    global x

    for _ in range(COUNT):

        x -= 1



t1 = threading.Thread(target=inc)

t2 = threading.Thread(target=dec)

t1.start()

t2.start()

t1.join()

t2.join()



print(x)

 

Вот что делает код выше:

Существует общая глобальная переменная x, которая инициализируется в 0.

Две функции inc и dec работают параллельно. inc () увеличивает значение x 1 миллион раз, тогда как dec () уменьшает значение x 1 миллион раз.

Быстро пройдясь по коду, можно сделать вывод, что конечное значение x должно быть 0 … но так ли это?

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

 $ python3 race.py

158120

 $ python3 race.py

137791

 $ python3 race.py

-150265

 $ python3 race.py

715644

 

Причина, по которой это происходит, заключается в том, что общий ресурс x не защищен (например, блокировками).

 

Параллельное программирование в Python

Только после того, как вы освоитесь с концепциями, рассмотренными выше, вы готовы научиться писать параллельные программы на Python.

Во-первых, вы должны узнать, как определение многопроцессорности в Python отличается от многопоточности. (Кстати, это совершенно не связано с потоками и процессами с точки зрения ОС ).

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

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

Все эти модули предоставляют вам примитивы, необходимые для написания параллельных программ.

 

Начало:

 

Продолжение

 

Продолжение следует…



2020-04-20T17:45:24
Python

Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 2

Уровень 1: объектно-ориентированное программирование

Все в Python является объектом.

Вы либо слышали это, либо вам суждено услышать об этом 🙂

Но подождите минуту, что именно является объектом?

Есть много разных способов, моделей или парадигм для написания компьютерных программ.

Одна из самых популярных парадигм программирования называется объектно-ориентированным программированием (ООП).

В объектно-ориентированном программировании  объект  относится к конкретному экземпляру  класса.

Класс — это как план состояния и действий, которые может выполнять объект.

Например, в Python класс Person может выглядеть примерно так.

class Person:

  def __init__(self, name, age):

    self.name = name

    self.age = age

  

  def get_name(self):

    return self.name

 

Объявленный выше класс описывает состояние и действия любого объекта Person.

Например, любой объект Person будет иметь имя и возраст. Эти два поля определяют состояние объекта.

В терминологии ООП имя и возраст называются атрибутами объекта.

Вы также можете вызвать get_name () для любого объекта Person, чтобы вернуть имя человека.

Мы называем get_name как метод.

Этот метод, в дополнении к любым другим методам , которые мы определяем, что определяет объект действия.

Другими слова, объект Python имеет атрибуты и методы, которые определены в объекте класса.

Вот как создать объект Person

>>> p = Person('Alice', 22)

>>> p.get_name()

'Alice'

 

Объектно-ориентированное программирование по сути является одним из способов структурирования и проектирования вашего кода.

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

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

 

Шаг 1: Изучите концепции ООП

Как мы упоминали ранее, ООП — это парадигма программирования, способ структурирования и проектирования вашего кода.

Концепции ООП не являются эксклюзивными для Python, поэтому концепции, которые вы изучите, легко перейдут на любой другой язык программирования.

Некоторыми примерами этих концепций являются наследование, инкапсуляция и полиморфизм.

Поэтому убедитесь, что вы понимаете эти концепции на абстрактном уровне, прежде чем переходить к ООП на Python.

 

Шаг 2: Узнайте о классах и объектах Python

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

Осваивайте классы и создавайте объекты.

Напишите классы, которые наследуются от других классов, и исследуйте атрибуты и методы созданных объектов.

 

Шаг 3: Решить проблемы Python, используя ООП

Это важный шаг.

На этом этапе вы хотите узнать, как использовать ООП для разработки и структурирования вашего кода.

И на самом деле этот шаг — скорее искусство, чем наука. Это означает, что единственный способ поправиться — это практика, практика и больше практики.

Снова продолжайте решать больше проблем, используя Python, но попробуйте структурировать ваши решения объектно-ориентированным способом.

Чем больше вы практикуетесь, тем больше вы будете чувствовать себя комфортно с ООП.

 

Начало: Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 1

Продолжение:



2020-04-18T11:17:56
Python

Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 1

Python — очень популярный язык.

Это также один из языков, который мы рекомендуем для начинающих.

Но как вы изучаете этот язык?

Лучший способ выучить Python — это понять общую картину всего, что вам нужно выучить, прежде чем погрузиться и начать учиться.

В этой серии статей мы делим путь изучения Python на 6 уровней. Более подробный онлайн-курс по программированию на Python 3  можно пройти в Shultais Education. С 2019 года курс «читается» студентам Московского университета экономики и права им. Витте на специальностях «Прикладная информатика» и «Бизнес-информатика».

Каждый уровень охватывает подмножество языка, который вам необходимо освоить, прежде чем перейти к следующему.

Наши статьи посвящены тому, чтобы вы были компетентным и всесторонним программистом, чтобы вы могли легко устроиться на работу в любую техническую компанию, которую вы выберете.

Но не волнуйтесь, вам не нужно пройти весь путь до уровня 6, чтобы получить свою первую работу.

Давайте начнем.

 

Уровень 0: Начало

Это уровень, с которого вы начинаете, если вы абсолютный новичок.

И под абсолютным новичком мы имеем в виду кого-то, кто никогда ранее не программировал на Python или любом другом языке программирования в этом отношении.

Если вы переходите с другого языка программирования, вам следует перейти к уровню 1.

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

Это означает, что эти понятия не являются действительно исключительными для Python, но могут быть распространены и на другие языки программирования.

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

Итак, каковы некоторые из этих общих концепций программирования, о которых мы говорим?

Некоторые из этих фундаментальных понятий — это переменные, типы данных, операции, функции, условные выражения и циклы.

Если вы понимаете, что это за понятия, переходите к уровню 1.

В противном случае позвольте мне дать вам очень краткое введение о том, что означают эти понятия.

 

Переменные

Переменные по сути являются хранилищем данных в вашей программе.

Точнее, это способ дать имя для данных для последующего использования.

Давайте посмотрим на пример.

# переменные

msg = "Hello World!"

print(msg)

# здесь код выведет на экран Hello World!

 

В приведенном выше фрагменте Python мы определяем переменную msg, в которой хранится значение Hello World!

Это позволяет нам позже напечатать Hello World! на экране, просто используя имя переменной, которая хранит это значение, вместо того, чтобы вводить значение Hello World! каждый раз, когда мы хотим использовать это.

 

Типы данных

Мы говорили о переменных как хранилище данных, теперь давайте поговорим о данных.

В Python данные имеют типы.

Например, в приведенном выше фрагменте кода данные Hello World! имеет определенный тип, который Python (и другие языки программирования) называют строкой.

Строка это просто последовательность символов.

Но строки не единственный тип данных в Python, также есть целые числа, числа с плавающей запятой, логические значения, списки, кортежи и словари.

К концу уровня 0 вы должны освоить эти типы данных и понять, когда (и как) использовать их в своей программе.

 

Операции

Операции — это то, как вы манипулируете и изменяете данные в вашей программе.

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

Это просто жизненный цикл любой программы.

В Python и во всех языках программирования существуют как минимум арифметические , сравнительные и логические операции.

# пример арифметической операции

x = 5 + 2



# пример операции сравнения

y = 3 > 4



# пример логической операции

z = True or False

 

Условия

Чтобы написать любую полезную программу, вам почти всегда понадобится возможность проверять условия и соответственно изменять поведение программы.

Условные операторы, использующие if , if else или elsif else, дают вам эту возможность.

Вот пример оператора if-else в Python.

>>> if 3 > 5:

...   print('3 больше 5')

... else:

...   print('3 меньше 5')

...

3 меньше 5

 

Функции

Функция по сути является блоком кода Python, который запускается только при вызове.

Вы можете передавать параметры в функцию в качестве входных данных, а функция может возвращать данные в качестве выходных данных.

В Python вы определяете функцию, используя ключевое слово def.

Вот пример программы hello world, использующей функцию say_hello

def say_hello(msg):

  # это и есть функция

  # msg это входной параметр

  print(f'hello {msg}')



# вызов функции say_hello

say_hello('world')



# вывод:

# hello world

 

Так что это был пример фундаментальных понятий, которые вы должны изучить на этом уровне.

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

Если вы хотите быть хорошим программистом, вам не только необходимо читать книги или посещаете курсы по Python 3, вам нужно попрактиковаться в решении проблем и начать решать простые проблемы с помощью Python.

Мы не можем не подчеркнуть важность овладения уровнем 0.

Причина в том, что этот уровень закладывает основы и фундаментальные концепции не только для освоения Python, но и для освоения любого другого языка программирования.

Так что, хотя это уровень 0, не принимайте это всерьез.

 

Продолжение:



2020-04-17T14:13:46
Python

Диапазон в Python

Тип range в Python генерирует последовательность целых чисел, определяя начальную и конечную точку диапазона. Обычно используется с циклом for в Python для итерации по последовательности чисел.

range() работает по-разному в Python 2 и 3.

В Python 2 есть две функции, которые позволяют генерировать последовательность целых чисел, rangeи xrange. Эти функции очень похожи, главное отличие в том, что range возвращает список и xrange возвращает объект xrange.

В Python 3 функция xrange была удалена, а функция range ведет себя подобно xrange в Python 2. range в Python 3 — это не функция, а тип, представляющий неизменяемую последовательность чисел.

В этой статье мы рассмотрим основы типа range в Python 3.

 

Синтаксис range() в Python

range принимает следующие формы:

range(stop)

range(start, stop[, step])


Аргументы, предоставляемые range, должны быть целыми числами. Плавающие числа и другие типы не допускаются.

range принимает один обязательный и два необязательных аргумента. Он возвращает объект диапазона, который представляет данный диапазон, и генерирует числа по запросу.

 

range(stop) в Python

Когда предоставлен только один аргумент, range возвращает последовательность чисел, увеличивается на 1, начиная с 0 и заканчивая — 1.

Вот тип диапазона в действии:

for i in range(5):

    print(i)


 

Сгенерированная последовательность чисел начинается с 0 и заканчивается на 4 (5-1):

0

1

2

3

4


 

Если аргумент равен 0 или отрицательное целое число, range возвращает пустую последовательность:

print(list(range(-5)))


 

Мы конвертируем объект range в список, потому что range выполняет ленивую оценку целочисленной последовательности. На выходе получается пустой список:

[]


 

range(start, stop) в Python

Когда предусмотрены два аргумента, range возвращает последовательность чисел, увеличивается на 1, начиная с start к stop — 1.

Вот пример:

for i in range(3, 5):

    print(i)


 

3

4


 

Аргумент stop должен быть больше start. В противном случае последовательность будет пуста:

print(list(range(5, 3)))


 

[]


 

Вы можете использовать положительные и отрицательные целые числа в качестве аргументов:

print(list(range(-5, -3)))


 

[-5, -4]


 

print(list(range(-3, 0)))


 

[-3, -2, -1]


 

range(start, stop, step) в Python

Когда задано три аргумента, range возвращает последовательность чисел, увеличиваются или уменьшаются на step, начиная с start к stop — 1.

Если step положительный, range возвращает последовательность, которая увеличивается:

for i in range(0, 26, 5):

    print(i)


 

0

5

10

15

20

25


 

При увеличении аргумента stop должен быть больше чем start. В противном случае последовательность пуста.

Если step отрицательный, то range возвращает последовательность, которая уменьшается:

for i in range(20, 4, -5):

    print(i)


 

20

15

10

5


 

При уменьшении аргумента stop должен быть меньше чем start. В противном случае последовательность пуста.

Если step равно 0, вызывается исключение ValueError:

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: range() arg 3 must not be zero


 

Вывод

Тип range в Python позволяет генерировать последовательность целых чисел. В основном используется в циклах for в Python.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-02-29T16:33:12
Python

Основы Python. Как печатать на Python?

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

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

Итак, в этой статье мы объясним, как напечатать что-то на Python, и перечислим некоторые распространенные ошибки, которых вы можете избежать.

 

Как печатать на Python

По сути, это то, как вы вызываете функцию печати в Python:

print()

 

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

Например, если вы хотите отобразить текст, вам нужно передать строковое значение. Вот как это выглядит:

print ("Я программист")

 

Как видите, вы должны будете передавать строковые значения в кавычках (обычно одинарные или двойные).

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

Согласно технической документации, синтаксис для использования функции печати:

 print(*objects, sep=' ', end='n', file=sys.stdout, flush=True)

 

Здесь возможные параметры/аргументы:

  • *objects  — Вы можете иметь еще один объект
  • sep = » — относится к параметру разделителя
  • end = ‘ n’ — относится к конечному параметру
  • file = sys.stdout — файл в режиме записи, который печатает строку внутри него
  • flush = True — помогает очистить внутренний буфер

Ну, вот как вы печатаете что-то на Python — легко, правда?

Однако вам придется быть немного более осторожным при передаче аргументов различных типов (или объектов). Ниже мы приведем несколько примеров, чтобы вы могли больше узнать об этом.

 

1. Передача объектов с функцией print

Давайте рассмотрим простой пример:

a = 2

print ("Значение а равно", a)

 

Выход для этого будет:

Значение а равно 2

 

Аналогично, вы можете расширить ту же программу другой переменной и распечатать ее, используя функцию печати следующим образом:

a = 2

print ("Значение а равно", a)

b = a

print ("a =",b,"= b")

 

Выход будет такой:

Значение а равно 2

a = 2 = b

 

Здесь, в приведенном выше примере, вы можете заметить, что при разделении объектов, которые вы передаете, в функции печати с помощью (запятая), которая автоматически добавляет пробел в выводе, также известный как функция мягкого пространства.

Но что, если вам не нужно пространство между ними или вы хотите отформатировать вывод — что еще вы можете сделать?

Не беспокойтесь, вы можете использовать разделитель и конечный параметр для достижения этой цели. Давайте посмотрим на это ниже.

 

2. Печать с использованием разделителя в Python

Аргумент separator ( sep = ‘separator’ ) в Python помогает форматировать вывод и потенциально удалять функцию программного пространства, как упомянуто выше.

Вот что вы должны сделать:

a = 2

print ("Значение а равно",a,sep='')

 

Таким образом, когда вы добавляете sep = » в качестве другого аргумента в функции печати, он отключает функцию программного пространства и вывод будет выглядеть следующим образом:

Значение а равно2

 

Как вы можете заметить, после строки и цифры 2 нет места.

Разделители также могут пригодиться для печати дат, вот как это можно сделать:

print('14','02','2020', sep='-')

 

Выход для этого будет:

14-02-2020

 

Полезно, правда? Точно так же вы можете использовать параметр разделителя для дальнейшего форматирования вывода. Теперь, в дополнение к разделителю, вы также можете использовать параметр end, чтобы напечатать следующий вывод в новой строке.

 

3. Печать с использованием разделителя и конечного параметра

Стоит отметить, что параметр end помогает указать, что печатать в конце. Другими словами, он вводит новую строку для следующего вывода.

Вот пример кода для этого:

print('14','02','2020', sep='-', end='nnn')

print("Привет!")

 

Как вы можете заметить, мы добавили три новые строки в конце первого вывода. Итак, вывод выглядит так:

12-02-2020





Привет!

 

Позвольте нам попробовать что-то еще вместо добавления трех новых строк. Взглянем:

print('14','02','2020', sep='-', end='nto the future')

print("Привет!")

 

Вывод будет такой:

14-02-2020

в будущееПривет!

Как вы можете заметить, мы добавили новую строку после того, как напечатана дата, а затем следующий вывод продолжается в той же строке.

 

4. Печать с параметром файла

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

print("Это пример строки", file = sourceFile)

 

Вы также можете добавить аргумент flush = True к приведенному выше коду перед закрытием файла — если вы этого хотите. Но это не обязательно.

 

Итог

Мы что-то здесь пропустили? Или вы исследовали что-то интересное при использовании функции print в Python? Позвольте нам знать в комментариях ниже.



2020-02-14T15:29:44
Python

Заявление if..else в Python

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

В этой статье мы рассмотрим основы утверждения if в Python.

 

Заявление if в Python

Самая основная форма утверждения if в Python выглядит следующим образом:

if EXPRESSION:

  STATEMENT


Заявление if начинается с ключевого слова if, за которым следует условное выражение.

За EXPRESSION должно следовать двоеточие : . Если EXPRESSION имеет значение True, то STATEMENT запускается на выполнение. Если EXPRESSION возвращает False, ничего не происходит, игнорируется STATEMENT. STATEMENT может быть любым утверждением, включая множественные утверждения или дополнительные вложенные утверждения if. Чтобы не выполнять операторы, используйте оператор pass.

Блок STATEMENT начинается с углублением и концами с первой линией отступа. Большинство людей предпочитают использовать отступы с 4 или 2 пробелами. Официальное руководство по стилю для кода Python рекомендует использовать 4 пробела на уровень отступа и избегать смешивания использования табуляции и пробелов для отступа.

Давайте рассмотрим следующий пример сценария, который проверяет, больше ли заданное число больше 5.

number = int(input('Введите число: '))



if number > 5:

    print(number, ' больше 5.')


Сохраните код в файле и запустите его из командной строки:

python test.py

 

Скрипт предложит вам ввести номер. Например, если вы введете 10, условное выражение оценивается как True(10 больше 5), будет выполнена функция print.

10 больше 5.


 

Python поддерживает стандартные операции сравнения:

  • a == b- Верно, если a и b равны.
  • a != b- Правда если a и b не равны.
  • a > b- Верно, если a больше чем b.
  • a >= b- Верно, если a равно или больше чем b.
  • a < b- Правда, если a меньше, чем b.
  • a <= b- Верно, если a равно или меньше b.

Вы также можете использовать ключевое слово in, чтобы проверить, присутствует ли значение (строка, список, кортеж, словарь и т. д.):

s = 'andreyex'

if 'ey' in s:

    print('True.')


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

d = {'a': 2, 'b': 4}

if 'a' in d:

    print('True.')


При использовании в словаре ключевое слово in проверяет, имеет ли словарь определенный ключ.

Чтобы отменить условное выражение, используйте логический оператор not:

number = int(input('Ввести число: '))



if not number < 5:

    print(number, ' меньше 5.')


 

Утверждение if..else

Оператор if..else вычисляет условие и выполняет один из двух операторов в зависимости от результата.

Оператор if..else в Python принимает следующую форму:

if EXPRESSION:

    STATEMENT1

else:

    STATEMENT2


Если EXPRESSION возвращает True, STATEMENT1 будет выполнено. В противном случае, если EXPRESSION возвращает False, будет выполнен STATEMENT2. Вы можете иметь только одно предложение else в заявлении.

Ключевое слово else должно заканчиваться двоеточием : и быть на тот же уровне отступа, что и соответствующее ключевое слово if.

Давайте добавим предложение else в предыдущий пример сценария:

number = int(input('Ввести число: '))



if number > 5:

    print(number, ' больше 5.')

else:

    print(number, ' равно или меньше 5.')


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

 

Утверждение if..elif..else

Ключевое слово elif является аббревиатурой else if.

Оператор if..elif..else в Python принимает следующую форму:

if EXPRESSION1:

    STATEMENT1

elif: EXPRESSION2:

    STATEMENT2

else:

    STATEMENT3


 

Если EXPRESSION1 возвращает True, будет выполнено STATEMENTS1. Если EXPRESSION2 возвращает True, будет выполнен STATEMENTS2. Если ни одно из выражений не соответствует True, выполняется STATEMENTS3.

Ключевое слово elif должно заканчиваться двоеточием : и быть на тот же уровне отступа, что и соответствующее ключевое слово if. Вы можете иметь одно или несколько предложений elif в заявлении. Предложение else не является обязательным. Если предложение else не используется и все выражения оцениваются False, ни одно из операторов не будет выполнено.

Условия оцениваются последовательно. Как только условие возвращается True, остальные условия не выполняются, и управление программой переходит к концу оператора if.

Давайте добавим предложение elif к предыдущему сценарию:

number = int(input('Ввести число: '))



if number > 5:

    print(number, ' больше чем 5.')

elif number < 5:

    print(number, ' меньше 5.')

else:

    print(number, ' равно 5.')


 

В отличие от большинства языков программирования, Python не имеет операторов switchили case. Последовательность нескольких elifоператоров может использоваться в качестве замены switch или case.

 

Вложенные операторы if

Python позволяет вам вкладывать оператор if в оператор if. Как правило, вы всегда должны избегать чрезмерного отступа и пытаться использовать elif вместо вложенных операторов if.

Следующий скрипт предложит вам ввести три числа и напечатает наибольшее число среди чисел.

number1 = int(input('Введите первое число: '))

number2 = int(input('Введите второе число: '))

number3 = int(input('Введите третье число: '))



if number1 > number2:

    if number1 > number3:

        print(number1, 'это самое большое число.')

    else:

        print(number3, 'это самое большое число.')

else:

    if number2 > number3:

        print(number2, 'это самое большое число.')

    else:

        print(number3, 'это самое большое число.')


 

Вот как будет выглядеть вывод:

Введите первое число: 455 

Введите второе число: 567

Введите третье число: 354

567 это самое большое число.


 

Несколько условий

Логические orи andоператоры позволяют комбинировать несколько условий в выражениях if.

Вот еще одна версия скрипта для печати наибольшего числа среди трех чисел. В этой версии вместо вложенных операторов if мы будем использовать логический andоператор и elif.

number1 = int(input('Введите первое число: '))

number2 = int(input('Введите второе число: '))

number3 = int(input('Введите третье число: '))



if number1 > number2 and number1 > number3:

    print(number1, 'это самое большое число.')

elif number2 > number3 and number2 > number3:

    print(number2, 'это самое большое число.')

else:

    print(number3, 'это самое большое число.')


 

Вывод

Заявления if, if..else и if..elif..else позволяют контролировать поток выполнения Python, оценивая данные условия.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-02-11T09:49:03
Python