Skip to content

Commit 656539f

Browse files
committed
update
Signed-off-by: Kirill Mokevnin <mokevnin@gmail.com>
1 parent 751b1ec commit 656539f

33 files changed

Lines changed: 156 additions & 344 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
def is_pensioner(age):
1+
def is_pensioner(age: int) -> bool:
22
return age >= 60

modules/45-logic/10-bool-type/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Напишите функцию `is_pensioner()`, которая принимает возраст в качестве единственного аргумента и проверяет, является ли этот возраст пенсионным. Пенсионным считается возраст 60 лет и больше.
32

43
Примеры вызова:
Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1-
Кроме арифметических операций в математике есть операции сравнения, например, `5 > 4` или `3 < 1`. Они есть и в программировании. Допустим, когда мы заходим на сайт, введенные логин и пароль сравниваются с теми, какие есть в базе. Если они есть, нас пускают внутрь — аутентифицируют. В этом уроке разберем операции сравнения.
1+
Кроме арифметических операций в математике есть операции сравнения, например, `5 > 4` или `3 < 1`. Они есть и в программировании. Сравнения часто применяются в реальных задачах, связанных с числами. Например, когда мы оформляем покупку в интернет-магазине, система проверяет: хватает ли у пользователя денег на счёте, чтобы оплатить товар. Если сумма на счёте больше или равна цене товара, заказ подтверждается. Если меньше — появляется сообщение, что средств недостаточно.
22

3-
Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для этого используется обычное равно `=`, но в программировании такое встречается редко.
3+
## Сравнение в программировании
44

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+
На практике, их редко так используют, но на их основе строится логика поведения программы. Мы с этим сталкиваемся буквально каждый день когда вводим пинкоды и пароли, когда выполняем какие-то действия, результатом которых могут быть разные варианты. Все эти варианты прописаны внутри программы в виде условных выражений: *если так то делай раз, если по-другому, то делай два*.
620

721
Список операций сравнения:
822

@@ -13,33 +27,36 @@
1327
* `==` — равно
1428
* `!=` — не равно
1529

16-
Эти операции применяются не только к числам. Например, с помощью оператора равенства можно сравнить строки: `password == text` — это сравнение идентичности строк, которые записаны в разных переменных.
17-
18-
Логическая операция типа `5 > 4` или `password == text` — это выражение. Его результат — специальное значение `True` («истина») или `False` («ложь»). Это новый для нас тип данных — `bool`.
30+
Языки программирования адаптировали все математические операции сравнения в неизменном виде, кроме операторов равенства и неравенства. В математике для этого используется обычное равно `=`, но в программировании символ `=`, чаще всего, используется, чтобы присвоить переменным значения. Поэтому в Python сравнивают с помощью `==`. Несколько примеров:
1931

2032
```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
2439
```
2540

26-
Наряду со строками (`str`) и целыми и рациональными числами, **тип `bool` (булев)** — это один из примитивных типов данных в Python.
27-
28-
Попробуем написать простую функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до года:
41+
Когда в сравнении используют конкретные значения, то эта операция кажется бесмысленной, мы и так знаем ее результат сравнения и он всегда один и тот же, потому что если 3 больше 2, то это не меняется. Но все меняется, когда значения могут меняться. Попробуем написать простую функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до двух лет (два не включается):
2942

3043
```python
31-
def is_infant(age):
32-
return age < 1
44+
def is_infant(age: int) -> bool:
45+
return age < 2
3346

3447
print(is_infant(3)) # => False
48+
print(is_infant(2)) # => False
49+
print(is_infant(1)) # => True
50+
print(is_infant(0)) # => True
3551
```
3652

37-
Любая операция — это выражение, поэтому единственной строчкой функции пишем «вернуть то значение, которое получится в результате сравнения `age < 1`». В зависимости от того, какой аргумент пришел, сравнение будет истинным (`True`) или ложным (`False`), а `return` вернет этот результат.
38-
39-
А теперь проверим ребенка, которому полгода:
53+
Когда функции возвращают результат сравнения, они обычно отвечают на вопрос «да» или «нет». Такие функции называют **предикатами**. Их легко узнать по тому, что они возвращают логическое значение `True` или `False`. Часто в их названии есть вопрос или утверждение, которое можно проверить (`is', 'has`, `can`). Вот функция, проверяющая, является ли число чётным:
4054

4155
```python
42-
print(is_infant(0.5)) # => True
43-
```
56+
def is_negative(number: int) -> bool:
57+
# Проверяем остаток от деления
58+
return number < 0
4459

45-
Результат операции `True`. Значит, ребенок действительно младенец.
60+
print(is_negative(-5)) # => True
61+
print(is_negative(7)) # => False
62+
```
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
def is_long_word(word: str) -> bool:
2+
return len(word) > 5
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Напишите функцию `is_long_word()`, которая возвращает `True`, если длина переданного слова больше 5 символов, и `False` в противном случае.
2+
3+
Пример работы:
4+
5+
```python
6+
print(is_long_word("apple")) # => False
7+
print(is_long_word("banana")) # => True
8+
```
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
Операции сравнения работают не только с числами, но и со строками. В этом случае сравнение идёт по алфавитному порядку символов.
2+
3+
```python
4+
print("apple" < "banana") # => True
5+
print("cat" > "dog") # => False
6+
print("abc" == "abc") # => True
7+
print("hello" != "world") # => True
8+
```
9+
10+
Здесь `"apple" < "banana"`, потому что буква `"a"` в слове *apple* идёт раньше буквы `"b"` в слове *banana*.
11+
12+
Напишем функцию, которая проверяет, начинается ли слово с заданной буквы. Для этого возьмём первый символ строки и сравним его с нужной буквой.
13+
14+
```python
15+
def starts_with(word: str, letter: str) -> bool:
16+
return word[0] == letter
17+
18+
print(starts_with("apple", "a")) # => True
19+
print(starts_with("banana", "a")) # => False
20+
```
21+
22+
Операции сравнения — это такие же выражения, как и арифметические. Это значит, что в них можно подставлять не только готовые значения, но и другие выражения как в примере выше: `word[0]`. Например, вместо числа можно использовать результат работы функции `len`, которая возвращает длину строки:
23+
24+
```python
25+
print(len("apple") > 3) # => True, потому что len("apple") = 5
26+
print(len("hi") > 3) # => False, потому что len("hi") = 2
27+
```
28+
29+
В примере выше, сначала выполняется функция `len("apple")`, результатом будет число `5`. Потом это число сравнивается с `3`. То есть порядок вычисления такой:
30+
1. Сначала считаются аргументы выражения (например, длина строки).
31+
2. Потом выполняется операция сравнения.
32+
33+
Так можно комбинировать разные операции, получая более сложные проверки.
34+
35+
## Полезные предикаты
36+
37+
У строк в Python есть много встроенных методов-предикатов. Они возвращают `True` или `False` и помогают проверять разные свойства строки. Ниже приведены самые часто используемые:
38+
39+
```python
40+
print("hello".startswith("he")) # True — строка начинается с "he"
41+
print("hello".endswith("lo")) # True — строка заканчивается на "lo"
42+
43+
print("123".isdigit()) # True — все символы являются цифрами
44+
print("abc".isalpha()) # True — все символы являются буквами
45+
print("abc123".isalnum()) # True — строка состоит только из букв и цифр
46+
47+
print(" ".isspace()) # True — строка содержит только пробелы
48+
print("Hello".islower()) # False — не все символы в нижнем регистре
49+
print("HELLO".isupper()) # True — все символы в верхнем регистре
50+
print("Title Case".istitle()) # True — каждое слово начинается с заглавной буквы
51+
```
52+
53+
Такие методы позволяют проверять строки на нужные условия прямо в коде, без написания дополнительных функций.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
name: Сравнение строк
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import index
2+
3+
def test1():
4+
assert not index.is_long_word("apple") # 5 символов → False
5+
assert index.is_long_word("banana") # 6 символов → True
6+
assert index.is_long_word("pineapple") # 9 символов → True

modules/45-logic/15-predicates/description.es.yml

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)