|
1 | | -Кроме арифметических операций в математике есть операции сравнения, например, `5 > 4` или `3 < 1`. Они есть и в программировании. Допустим, когда мы заходим на сайт, введенные логин и пароль сравниваются с теми, какие есть в базе. Если они есть, нас пускают внутрь — аутентифицируют. В этом уроке разберем операции сравнения. |
| 1 | +Кроме арифметических операций в математике есть операции сравнения, например, `5 > 4` или `3 < 1`. Они есть и в программировании. Сравнения часто применяются в реальных задачах, связанных с числами. Например, когда мы оформляем покупку в интернет-магазине, система проверяет: хватает ли у пользователя денег на счёте, чтобы оплатить товар. Если сумма на счёте больше или равна цене товара, заказ подтверждается. Если меньше — появляется сообщение, что средств недостаточно. |
2 | 2 |
|
3 | | -Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для этого используется обычное равно `=`, но в программировании такое встречается редко. |
| 3 | +## Сравнение в программировании |
4 | 4 |
|
5 | | -Во многих языках символ `=` используется, чтобы присвоить переменным значения. Поэтому в Python сравнивают с помощью `==`. |
| 5 | +Начнем с примера в котором сравнивается два числа: |
| 6 | + |
| 7 | +```python |
| 8 | +print(5 > 4) # => True |
| 9 | +print(4 > 4) # => False |
| 10 | +``` |
| 11 | + |
| 12 | +Результатом сравнения является значение типа `bool`. У это типа есть всего два возможных варианта `True` и `False`. Причем обратите внимание, это не строки. Их можно использовать напрямую: |
| 13 | + |
| 14 | +```python |
| 15 | +print(True) |
| 16 | +print(False) |
| 17 | +``` |
| 18 | + |
| 19 | +На практике, их редко так используют, но на их основе строится логика поведения программы. Мы с этим сталкиваемся буквально каждый день когда вводим пинкоды и пароли, когда выполняем какие-то действия, результатом которых могут быть разные варианты. Все эти варианты прописаны внутри программы в виде условных выражений: *если так то делай раз, если по-другому, то делай два*. |
6 | 20 |
|
7 | 21 | Список операций сравнения: |
8 | 22 |
|
|
13 | 27 | * `==` — равно |
14 | 28 | * `!=` — не равно |
15 | 29 |
|
16 | | -Эти операции применяются не только к числам. Например, с помощью оператора равенства можно сравнить строки: `password == text` — это сравнение идентичности строк, которые записаны в разных переменных. |
17 | | - |
18 | | -Логическая операция типа `5 > 4` или `password == text` — это выражение. Его результат — специальное значение `True` («истина») или `False` («ложь»). Это новый для нас тип данных — `bool`. |
| 30 | +Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для этого используется обычное равно `=`, но в программировании символ `=`, чаще всего, используется, чтобы присвоить переменным значения. Поэтому в Python сравнивают с помощью `==`. Несколько примеров: |
19 | 31 |
|
20 | 32 | ```python |
21 | | -result = 5 > 4 |
22 | | -print(result) # => True |
23 | | -print('one' != 'one') # => False |
| 33 | +print(5 >= 3) # => True |
| 34 | +print(7 < 0) # => False |
| 35 | +print(5 > 5) # => False |
| 36 | +print(5 >= 5) # => True |
| 37 | +print(2 == 5) # => True |
| 38 | +print(2 != 5) # => True |
24 | 39 | ``` |
25 | 40 |
|
26 | | -Наряду со строками (`str`) и целыми и рациональными числами, **тип `bool` (булев)** — это один из примитивных типов данных в Python. |
27 | | - |
28 | | -Попробуем написать простую функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до года: |
| 41 | +Когда в сравнении используют конкретные значения, то эта операция кажется бесмысленной, мы и так знаем ее результат сравнения и он всегда один и тот же, потому что если 3 больше 2, то это не меняется. Но все меняется, когда значения могут меняться. Попробуем написать простую функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до двух лет (два не включается): |
29 | 42 |
|
30 | 43 | ```python |
31 | | -def is_infant(age): |
32 | | - return age < 1 |
| 44 | +def is_infant(age: int) -> bool: |
| 45 | + return age < 2 |
33 | 46 |
|
34 | 47 | print(is_infant(3)) # => False |
| 48 | +print(is_infant(2)) # => False |
| 49 | +print(is_infant(1)) # => True |
| 50 | +print(is_infant(0)) # => True |
35 | 51 | ``` |
36 | 52 |
|
37 | | -Любая операция — это выражение, поэтому единственной строчкой функции пишем «вернуть то значение, которое получится в результате сравнения `age < 1`». В зависимости от того, какой аргумент пришел, сравнение будет истинным (`True`) или ложным (`False`), а `return` вернет этот результат. |
38 | | - |
39 | | -А теперь проверим ребенка, которому полгода: |
| 53 | +Когда функции возвращают результат сравнения, они обычно отвечают на вопрос «да» или «нет». Такие функции называют **предикатами**. Их легко узнать по тому, что они возвращают логическое значение `True` или `False`. Часто в их названии есть вопрос или утверждение, которое можно проверить (`is', 'has`, `can`). Вот функция, проверяющая, является ли число чётным: |
40 | 54 |
|
41 | 55 | ```python |
42 | | -print(is_infant(0.5)) # => True |
43 | | -``` |
| 56 | +def is_negative(number: int) -> bool: |
| 57 | + # Проверяем остаток от деления |
| 58 | + return number < 0 |
44 | 59 |
|
45 | | -Результат операции `True`. Значит, ребенок действительно младенец. |
| 60 | +print(is_negative(-5)) # => True |
| 61 | +print(is_negative(7)) # => False |
| 62 | +``` |
0 commit comments