Основы языка программирования Python.

Условные операторы

 

vkrysanov320@gmail.com

Условные операторы

Условные операторы  важная часть любого языка программирования. Они позволяют выполнять команды (или наборы команд) только при наличии определённых условий.
При помощи условных операторов программа может определить, выполняются ли определенные условия, а затем решить, что делать дальше.

Пример из "жизни"

На улице температура

ниже 0°?

Надеть шубу

Надеть куртку

Yes

No

Начало

Конец

Но сначала поговорим про логический тип данных...

Логический тип данных

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

 

 

Например:

  • выражение 4 > 5 является логическим, так как его результатом является либо правда, либо ложь;
  • выражение 4 + 5 не является логическим, так как результатом его выполнения является число.

Тип данных bool

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

В Python имеются две константы с понятными именами True  (от англ. true  истина) и False (от англ. false  ложь), которые можно использовать для непосредственного присвоения логических значений.

Например, переменные a и b, хранящие True и False, соответсвенно:

a = True
b = False
print(a, b)

Операции сравнения

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

  • < — Меньше — условие верно, если первый операнд меньше второго.

  • > — Больше — условие верно, если первый операнд больше второго.

  • <= — Меньше или равно.

  • >= — Больше или равно.

  • == — Равенство. Условие верно, если два операнда равны. Не путайте операцию присваивания значения переменной, обозначаемую в языке Python одиночным знаком «равно», и операцию сравнения (два знака «равно»). Присваивание и сравнение — разные операции.

  • != — Неравенство. Условие верно, если два операнда неравны.

Операции сравнения. Примеры

print(7 == 7)    # Результатом будет True, очевидно это равенство

# а можно положить в переменную значение логического выражения:
a = 7 != 7
print(a)         # Определенно будет False

b = 7 >= 10      # Сравним: 7 больше либо равно 10?
c = 1 <= 1       # 1 меньше либо равно 1?
d = 12.3 > 11    # а тут сравнение строгим знаком
e = 12.3 < 11    # так же, только в другую сторону

print(a, b, c, d)

# а вот выражения посложнее:
print((10/2)**3 == (2/10)**10)

#так же можно объединять в целые цепочки:
x = 10
print(10 < x <= 12)

Сложные логические выражения

Логические выражения типа k >= 1023 являются простыми, так как в них выполняется только одна логическая операция.

Однако, на практике нередко возникает необходимость в более сложных выражениях. Может понадобиться получить ответа «Да» или «Нет» в зависимости от результата выполнения двух простых выражений. Например, «на улице идет снег или дождь», «переменная news больше 12 и меньше 20».

В таких случаях используются специальные операторы, объединяющие два и более простых логических выражения: и (and) и или (or), а так же унарный оператор  не (not).

Оператор and

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

 

Пример:

a = 10
b = 10
print(a >= 10 and b == 10)

Оператор or

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

 

Пример:

a = 10
b = 10
print(a >= 10 or b == 0)

Оператор not

not — это унарный логический оператор — отрицание. Он превращает правду в ложь, а ложь в правду.

 

Пример:

a = 10
print(not(a >= 10))

Задачи

1. Узнайте, является ли выражение ниже отрицательным:

 

 

 

2. А является ли больше 100?

\frac{(-2)^{5^{\sqrt{10\log_2{172}}}}}{\sin{10}}

Решение

1. Узнайте, является ли выражение ниже отрицательным:

 

 

 

2. А является ли больше 100?

\frac{(-2)^{5^{\sqrt{10\log_2{172}}}}}{\sin{10}}
a = ((-2) ** (5 ** (math.sqrt(10 * log2(172))))) / math.sin(10)

# проверяем отрицательно ли:
print(a < 0)

# проверяем больше ли ста:
print(a > 100)

Зачем это всё???

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

 

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

a = 10 + 6
print(a)
b = a - 10
print(b)

Зачем это всё??? (2)

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

 

Конструкция if

if condition:
  instruction_1
  instruction_2
  ...
  instruction_n

После оператора if записывается логическое выражение (condition) — условие. Если это выражение истинно, то выполняются инструкции (instruction), определяемые данным оператором. Выражение является истинным, если его результатом является число не равное нулю, непустой объект, либо логическое True

Конструкция if. Примеры

if True:
  print("hello")    # "hello" напечатается всегда

a = 3

if a == 3:
  print("qq1")      # a равно 3, --- значит напечатается

if a < 1:           # а как тут?
  print("qq2")

Конструкция if. Блок-схема

a = 3
if a > 10:           
  print("больше")

print("вне if")

Обратите внимание на отступы!

Конструкция if-else

if condition:
  instruction_a1
  instruction_a2
  ...
  instruction_an
else:
  instruction_b1
  instruction_b2
  ...
  instruction_bm

Бывают случаи, когда необходимо предусмотреть альтернативный вариант выполнения программы. Т.е. при истинном условии нужно выполнить один набор инструкций, при ложном — другой. Для этого используется конструкция if-else:

Конструкция if-else. Примеры

a = 3
if a > 2:
  print("H")
else:
  print("L")

Если a > 2, то печатаем «H», в противном случае — «L».

В данном случае a = 3, а

следовательно напечатается «H».

Конструкция if-elif-else

if condition_1:
  instruction_a1
  instruction_a2
  ...
elif condition_2:
  instruction_b1
  instruction_b2
  ...
...
elif condition_l:
  instruction_h1
  instruction_h2
  ...
else:
  instruction_j1
  instruction_j2
  ...

Для реализации выбора из нескольких альтернатив можно использовать конструкцию if-elif-else:

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

Конструкция if-elif-else. Примеры

Вычислим значение данного выражения, при различных x:

\mathrm{sign}(x) = \begin{cases} 1, \text{ если } x > 0;\\ 0, \text{ если } x = 0;\\ -1, \text{ если } x < 0. \end{cases}
x = float(input())

if x > 0:
  print(1)
elif x == 0:
  print(0)
elif x < 0:
  print(-1)

Конструкция if-elif-else. Замечание

Все elif будут проверяться последовательно: от первого к последнему. Если условие написано плохо, например как тут:

x = 11
if x > 10:
  print(10)
elif x == 11:
  print(11)

Видно, что программа будет «проваливаться» только в первое условие, когда x > 10, второе условие тоже истинно, но программа минует его, так как уже выполнила инструкции первого условия. Поэтому при составлении условных выражений следует учитывать это.

Ещё один маленький момент...

Приведение к логическому типу данных в Python осуществляется с помощью функции bool():

a = 1
bool(a)

Другие моменты:

  • Если преобразовать логическое True к типу int, то получится 1, а преобразование False даст 0.
  • При обратном преобразовании число 0 преобразуется в False, а любое ненулевое число в True.
  • При преобразовании str в bool пустая строка преобразовывается в False, а любая непу- стая строка в True.

Задачи

1. Написать программу, которая определяет попадает ли заданная точка в промежуток [3;15) (необходимые данные должны вводиться с клавиатуры с помощью input()).

 

2. Написать программу, которая определяет попадает ли точка в об- ласть, ограниченную функциями 𝑓(𝑥) =    и 𝑔(𝑥) = 𝑥 (необходимые данные должны вводиться с клавиатуры с помощью input()).

 

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

x^2
F(A; B; C) = \neg (\neg A \vee B \wedge C)

Решение (1)

Написать программу, которая определяет попадает ли заданная точка в промежуток [3;15) (необходимые данные должны вводиться с клавиатуры с помощью input()).

 

Вот как это выглядит на числовой прямой:

Код программы:

x = int(input("Введите x -> "))

if x >= 3 and x < 15:             # можно и так: 3 <= x < 15
  print(x, "попадает в [3; 15)")
else:
  print(x, "не попадает в [3; 15)")

Решение (2)

Написать программу, которая определяет попадает ли точка в область, ограниченную функциями 𝑓(𝑥) =    и 𝑔(𝑥) = 𝑥 (необходимые данные должны вводиться с клавиатуры с помощью input()).

 

 

 

Код программы:

x = float(input("Введите координату x -> "))
y = float(input("Введите координату y -> "))

if y >= x**2 and y <= x:
  print("Попадает")
else:
  print("Не попадает")
x^2

Справа  графики данных функций и искомая область (для наглядности).

Решение (3)

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

 

 

 

Код программы:

a = bool(input())
b = bool(input())
c = bool(input())

f = not(not a or b and c)

print(f)
F(A; B; C) = \neg (\neg A \vee B \wedge C)
Made with Slides.com