Условный оператор — это оператор, который позволяет выполнять определенный участок кода, если указанное условие истинно (т.е. равно True).
if (условное выражение):
код
код
Очень важно, чтобы код, который должен быть выполнен, при истинном условии, был отделен 4 пробелами, от основного кода.
Разберем работу if на примере:
a = 1
if a > 0:
print('Условие верно!')
#Условие верно!
Мы присвоили переменной a
единицу, далее создали условие:
Если a
больше нуля, то выполняем инструкции, т.е. печатаем Условие верно!
.
Т.к. 1 больше 0, значим условие истинно и равно True
, то мы увидели выполнение функции print
.
Если же условие не будет выполняться и вернется False
, то все инструкции внутри этого блока пропускаются:
Иногда нужно иметь альтернативный вариант выполнения программы, если условие верно выполняем один кусок программы, в противном случае выполняется другая часть.
Для этого случая и используется необязательный оператор else
:
a = 1
if a < 0:
print('Отрицательное число')
else:
print('Положительное число')
#Положительное число
Работает эта конструкция так:
Если выражение истинно, выполняем инструкции, иначе — выполняем другие инструкции.
Но бывают и такие моменты, когда нужно проверить не одно, а сразу несколько условий.
В этом случае удобно использовать оператор elif
.
a = 1
if a < 0:
print('Отрицательное число')
elif a > 0:
print('Положительное число')
else:
print('Ноль')
#Положительное число
Операторов elif
может быть сколько угодно, все они будут проверяться по очереди, пока условие не станет истинным или не дойдет черед до оператора else
.
Но перебарщивать с этим тоже не стоит, если в вашем коде более 5 elif
, то возможно стоит пересмотреть алгоритм выполнения программы.
Python позволяет записывать условия и в одну строку, в таком формате:
<инструкции если True> if <условие> else <инструкции если False>
Возьмем код, записанный стандартным способом:
a = 1
if a < 0:
print('Отрицательное число')
else:
print('Положительное число')
#Положительное число
И запишем его в одну строку:
a = 1
print('Отрицательное число') if a < 0 else print('Положительное число')
#Положительное число
Все работает правильно. Однако, на мой взгляд читаемость условия в одну строку сильно уступает стандартному способу. Особенно, если условий будет больше.
Можно без проблем размещать одни условия внутри других. Ограничений по этому поводу нет.
Для примера напишем код, который будет переводить 100 бальную оценку в 5 бальную:
points = 75
if points >= 90:
print(5)
else:
if points >= 80:
print(4)
else:
if points >= 70:
print(3)
else:
if points >= 60:
print(2)
else:
print(1)
#3
Как видно, не очень удобно читать, гораздо проще так:
points = 75
if points >= 90:
print(5)
elif points >= 80:
print(4)
elif points >= 70:
print(3)
elif points >= 60:
print(2)
else:
print(1)
#3
В Python есть 6 основных операторов сравнения.
Выражение | Описание |
if x > 5 | если x больше 5 |
if x < 5 | если x меньше 5 |
if x >= 5 | если x больше либо равен 5 |
if x <= 5 | если x меньше либо равен 5 |
if x == 5 | если x равен 5 |
if x != 5 | если x не равен 5 |
x = 5
y = 5
if x < y:
print(f'{x} меньше чем {y}')
if x > y:
print(f'{x} больше чем {y}')
if x == y:
print(f'{x} равно {y}')
if x != y:
print(f'{x} не равно {y}')
#5 равно 5
Также Python предоставляет возможность сравнивать не только 2 переменных между собой, но и строить цепочки сравнений:
x = 5
if 1 <= x <= 10:
print('Верно')
#Верно
a = 5
b = 5
c = 5
if a == b == c:
print('числа равны')
#числа равны
Логические операторы используются, когда в условном операторе несколько условий.
Рассмотрим, как работает каждый логический оператор на примерах.
Служит для объединения условий, означает, что инструкции будут выполняться, только если все части условий будут истинны.
Таблица истинности для оператора and:
a | b | a and b |
False | False | False |
False | True | False |
True | False | False |
True | True | True |
Для примера, напишем код, который проверяет, является ли число четным и что оно больше 10:
Для того чтобы определить четное число используем остаток от деления a % 2
, если остаток от деления равен 0, то число четное.
Второе условие a > 10
будет просто проверять, что наше число больше 10.
И объединим эти два условия с помощью оператора and
.
Теперь, мы получим ответ ‘YES’, если оба условия будут True
, если хоть одно из двух условий будет False
, то мы получим ответ ‘NO’:
a = 12
if a % 2 == 0 and a > 10:
print('YES')
else:
print('NO')
#YES
a = 8
if a % 2 == 0 and a > 10:
print('YES')
else:
print('NO')
#NO
a = 223
if a % 2 == 0 and a > 10:
print('YES')
else:
print('NO')
#NO
Стоит заметить, что количество операторов and
может быть любым.
Служит для объединения условий, означает, что инструкции будут выполняться, если хотя бы одно из условий будет истинно.
Таблица истинности для оператора or:
a | b | a or b |
False | False | False |
False | True | True |
True | False | True |
True | True | True |
Напишем код, который проверят переменную и если она равна 10 или 20, то выводит соответствующее сообщение.
a = 20
if a == 10 or a == 20:
print('YES')
else:
print('NO')
#YES
a = 10
if a == 10 or a == 20:
print('YES')
else:
print('NO')
#YES
a = 1
if a == 10 or a == 20:
print('YES')
else:
print('NO')
#NO
Оператор not
позволяет заменить на противоположный результат логического выражения.
Таблица истинности для оператора not:
a | not a |
False | True |
True | False |
Для примера напишем код, который проверяет длину пароля и если длина больше 10 символов, то выводит соответствующее сообщение.
passw = 'jtu4i5ud3f4wg43w'
if not (len(passw) < 10):
print('YES')
else:
print('NO')
#YES
Условие в этом случае можно прочитать так: если длина пароля не меньше 10.
Этот код будет делать то же самое:
passw = 'jtu4i5ud3f4wg43w'
if len(passw) > 10:
print('YES')
else:
print('NO')
#YES
Здесь условие читается так: если длина пароля больше 10.
Как и у арифметических операций, у логических тоже есть свой приоритет выполнения:
Если нужно изменить очередность, то нужно использовать скобки, так же, как и с арифметическими операциями.
Содержание: