📦 Репозиторий занятия 06

Урок 06. Логический тип данных и сравнения

Как работать с репозиторием

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

Маршрут изучения

  1. Прочитайте описание: по нему уже понятно, о чём файл и что он выведет.
  2. Предскажите вывод: сравните своё предположение со строкой «Что выводит».
  3. Запустите: скачайте файл или скопируйте код кнопкой и выполните его у себя.
  4. Измените: поменяйте одно условие или значение и объясните новый результат.

Файлы: рекомендуемый порядок

1
MarkdownРазбор концепции73 строк

Тип bool: явное и неявное приведение, правило истинности

less_04__bool_datatype_and_compare/theory_01__bool_explicit_and_implicit_type_conversion.md

Вводит тип bool с двумя значениями True/False и явное приведение через bool(). Центральная часть — универсальное правило truthy/falsy: пусто или ноль даёт False, всё остальное — True, со сводной таблицей по типам (int/float, NoneType, коллекции). Отдельно показано неявное приведение внутри if/while и дана рекомендация по именованию булевых переменных с префиксами is_/has_/can_/should_.

  • bool(1), bool(0), bool("hi"), bool("") — явное приведение
  • Таблица: что даёт False/True по типам данных
  • Неявное приведение в if x: / while x:
  • Именование: is_open, has_permission, can_delete, should_retry
Показать начало файла (73 строк всего)
###  Логический тип в Python

* В Python логический тип называется **`bool`**.
* Он имеет всего два значения:

  * `True` (истина)
  * `False` (ложь)

```python
x = True
y = False
print(type(x))  # <class 'bool'>
```

---

### Явное приведение к `bool`

Для явного приведения используется встроенная функция `bool()`:

```python
print(bool(1))      # True
print(bool(0))      # False
print(bool("hi"))   # True (непустая строка)
print(bool(""))     # False (пустая строка
 ```

**УНИВЕРСАЛЬНОЕ ПРАВИЛО**:  
* Всё, что НЕ ПУСТО и НЕ НОЛЬ превращается в `True`.
* Пустое, нулевое или специальное значение `None` → `False`.

| Тип данных                            | Значение, дающее `False` | Значение, дающее `True` |
|---------------------------------------| ------------------------ | ----------------------- |
| `int` / `float`                       | `0`, `0.0`               | любое ненулевое число   |
| `NoneType`                            | `None`                   | – (всегда False)        |
| `str`, `list`, `tuple`, `set`, `dict` | пустая коллекция         | непустая коллекция      |


---

### Неявное приведение к `bool`

Неявное приведение происходит:

1. В **условных выражениях** (`if`, `while`).
2. При использовании логических операторов (`and`, `or`, `not`).

Примеры:

```python
x = 5

if x:
    print("Значение True")
else:
    print("Значение False")

```

---
…
Проверьте себя: Какое значение вернёт bool([]) и bool([0]) и почему они отличаются, хотя оба «выглядят как ноль»?
2
MarkdownРазбор концепции140 строк

Операторы сравнения, and/or/not и полная таблица приоритетов

less_04__bool_datatype_and_compare/theory_02__comparison_and_logical_operators.md

Полная таблица операторов сравнения (==, !=, >, <, >=, <=, is, is not, in, not in) с примерами, затем таблицы истинности для and/or/not. Ключевая часть — 14-уровневая таблица приоритетов операторов от скобок до lambda, и разбор того, что and/or в Python возвращают не bool, а один из операндов («"" or "Python"» → "Python"). Завершается таблицей арифметики с bool (True как 1, False как 0) и цепными сравнениями вида 1 < x < 10.

  • Таблица сравнений: ==, !=, >, <, >=, <=, is, in и их антиподы
  • Таблицы истинности and/or/not
  • Таблица приоритетов операторов (14 уровней, от () до lambda)
  • "" and 0 → "", "" or 0 → 0 — оператор возвращает операнд, не bool
  • 1 < x < 10 — цепное сравнение как 1 < x and x < 10
  • True + True == 2, True * 5 == 5 — bool в арифметике
Показать начало файла (140 строк всего)
### Операторы сравнения

Они возвращают значение типа **`bool`** (`True` или `False`).

| Оператор | Значение                                   | Пример           | Результат |
| -------- | ------------------------------------------ | ---------------- | --------- |
| `==`     | равно                                      | `5 == 5`         | `True`    |
| `!=`     | не равно                                   | `5 != 3`         | `True`    |
| `>`      | больше                                     | `7 > 2`          | `True`    |
| `<`      | меньше                                     | `3 < 5`          | `True`    |
| `>=`     | больше или равно                           | `5 >= 5`         | `True`    |
| `<=`     | меньше или равно                           | `4 <= 6`         | `True`    |
| `is`     | является ли тем же объектом в памяти       | `a is b`         | зависит   |
| `is not` | не является тем же объектом                | `a is not b`     | зависит   |
| `in`     | содержится ли элемент в последовательности | `'a' in 'cat'`   | `True`    |
| `not in` | не содержится ли элемент                   | `3 not in [1,2]` | `True`    |

Пример:

```python
x = 10
print(x > 5)   # True
print(x == 7)  # False
print("a" in "apple")   # True
```

---

### Логические операторы `and`, `or` и `not`

Используются для объединения нескольких условий.

Возвращают True или False согласно своей таблицы истинности:

### Таблица истинности для `and`


| A     | B     | A and B |
|-------|-------|---------|
| False | False | False   |
| False | True  | False   |
| True  | False | False   |
| True  | True  | True    |


### Таблица истинности для `or`


| A     | B     | A or B |
|-------|-------|--------|
| False | False | False  |
| False | True  | True   |
| True  | False | True   |
| True  | True  | True   |


### Таблица истинности для `not`

| A     | not A |
|-------|-------|
…
Проверьте себя: Что вернёт выражение "Hello" and "" and "World" и по какому правилу его вычисляет and?