From 1957a1d0562b1eb0d9f94e782d4e907471de72e7 Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Mon, 19 Oct 2026 19:44:17 +0500 Subject: [PATCH 1/5] =?UTF-8?q?docs(python):=20not,=20&&=20=D0=B8=20||=20?= =?UTF-8?q?=D0=B2=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D1=85=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=85,=20=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=5F=5Finit=5F=5F.py?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=BD=D1=83=D0=B6=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- modules/40-define-functions/400-packages/ru/README.md | 2 +- modules/45-logic/25-logical-operators/ru/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/40-define-functions/400-packages/ru/README.md b/modules/40-define-functions/400-packages/ru/README.md index e8e62cbe..379c1826 100644 --- a/modules/40-define-functions/400-packages/ru/README.md +++ b/modules/40-define-functions/400-packages/ru/README.md @@ -109,7 +109,7 @@ payments/ Этот файл сообщал Python, что директорию нужно воспринимать как пакет. -В современных версиях Python пакеты могут работать и без `__init__.py`. Тем не менее этот файл до сих пор часто используется. Обычно в нем размещают общий код и настройки пакета. +В современных версиях Python пакеты могут работать и без `__init__.py`. Тем не менее этот файл до сих пор часто используется. Обычно в нем размещают общий код и настройки пакета. Если такого кода у пакета нет, файл можно не создавать. Следующий раздел показывает случай, когда он нужен. ## Имена пакета в \_\_init\_\_.py diff --git a/modules/45-logic/25-logical-operators/ru/README.md b/modules/45-logic/25-logical-operators/ru/README.md index 5c4070fe..a2ca704d 100644 --- a/modules/45-logic/25-logical-operators/ru/README.md +++ b/modules/45-logic/25-logical-operators/ru/README.md @@ -21,7 +21,7 @@ print(is_correct_password('qwerty1234')) # => False Оператор `and` означает "И". В математической логике это называют конъюнкцией. Все выражение считается истинным, если истинен каждый **операнд**, то есть каждое из составных выражений. Иными словами, `and` означает "и то, и другое". Приоритет этого оператора ниже, чем приоритет операторов сравнения. Поэтому выражение `has_capital_letter(password) and length > 8` тоже правильно отрабатывает без скобок. -Кроме `and` часто используется оператор `or`, обозначающий "ИЛИ" (дизъюнкция). Он означает "или то, или другое, или оба". Выражение `a or b` считается истинным, если хотя бы один из операндов истинен или когда оба операнда истинны. В другом случае выражение ложное. +Кроме `and` часто используется оператор `or`, обозначающий "ИЛИ" (дизъюнкция). Он означает "или то, или другое, или оба". Выражение `a or b` считается истинным, если хотя бы один из операндов истинен или когда оба операнда истинны. В другом случае выражение ложное. В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет, и код с ними завершается ошибкой `SyntaxError`. ```python def has_discount(age: int, is_student: bool) -> bool: From 84cba0d75726337fb2fb8bb3f3efebd421e62565 Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Thu, 29 Oct 2026 22:49:24 +0500 Subject: [PATCH 2/5] =?UTF-8?q?docs(packages):=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D1=80=D0=B0=D0=B7=D1=83=20=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=20=5F=5Finit=5F=5F.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Фраза расходится с документацией Python, урок пойдёт на переписывание отдельной задачей. Co-Authored-By: Claude Opus 5.5 (1M context) --- modules/40-define-functions/400-packages/ru/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/40-define-functions/400-packages/ru/README.md b/modules/40-define-functions/400-packages/ru/README.md index 379c1826..e8e62cbe 100644 --- a/modules/40-define-functions/400-packages/ru/README.md +++ b/modules/40-define-functions/400-packages/ru/README.md @@ -109,7 +109,7 @@ payments/ Этот файл сообщал Python, что директорию нужно воспринимать как пакет. -В современных версиях Python пакеты могут работать и без `__init__.py`. Тем не менее этот файл до сих пор часто используется. Обычно в нем размещают общий код и настройки пакета. Если такого кода у пакета нет, файл можно не создавать. Следующий раздел показывает случай, когда он нужен. +В современных версиях Python пакеты могут работать и без `__init__.py`. Тем не менее этот файл до сих пор часто используется. Обычно в нем размещают общий код и настройки пакета. ## Имена пакета в \_\_init\_\_.py From d16808e6007310e2f6de76c741aab32e08914d1d Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Thu, 29 Oct 2026 22:56:13 +0500 Subject: [PATCH 3/5] =?UTF-8?q?docs(logical-operators):=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D1=8C=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D1=83=20=D0=BE=D1=82=20||=20=D0=BD=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=D1=80=D0=B5=20=D1=83=D1=80=D0=BE=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- modules/45-logic/25-logical-operators/ru/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/45-logic/25-logical-operators/ru/README.md b/modules/45-logic/25-logical-operators/ru/README.md index a2ca704d..dae436e5 100644 --- a/modules/45-logic/25-logical-operators/ru/README.md +++ b/modules/45-logic/25-logical-operators/ru/README.md @@ -21,7 +21,7 @@ print(is_correct_password('qwerty1234')) # => False Оператор `and` означает "И". В математической логике это называют конъюнкцией. Все выражение считается истинным, если истинен каждый **операнд**, то есть каждое из составных выражений. Иными словами, `and` означает "и то, и другое". Приоритет этого оператора ниже, чем приоритет операторов сравнения. Поэтому выражение `has_capital_letter(password) and length > 8` тоже правильно отрабатывает без скобок. -Кроме `and` часто используется оператор `or`, обозначающий "ИЛИ" (дизъюнкция). Он означает "или то, или другое, или оба". Выражение `a or b` считается истинным, если хотя бы один из операндов истинен или когда оба операнда истинны. В другом случае выражение ложное. В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет, и код с ними завершается ошибкой `SyntaxError`. +Кроме `and` часто используется оператор `or`, обозначающий "ИЛИ" (дизъюнкция). Он означает "или то, или другое, или оба". Выражение `a or b` считается истинным, если хотя бы один из операндов истинен или когда оба операнда истинны. В другом случае выражение ложное. ```python def has_discount(age: int, is_student: bool) -> bool: @@ -34,6 +34,14 @@ print(has_discount(15, True)) # => True (оба условия) print(has_discount(25, False)) # => False ``` +В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет. Если записать проверку скидки через `||`, Python откажется запускать файл и выведет такую ошибку. + +```text + return age < 18 || is_student + ^ +SyntaxError: invalid syntax +``` + Операторы можно комбинировать в любом количестве и в любой последовательности. Если в коде одновременно встречаются `and` и `or`, то приоритет лучше задавать скобками. Ниже пример расширенной функции, которая определяет корректность пароля: ```python From 071595b302d88a6596664a6d3d8fe4ef8597934c Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Thu, 29 Oct 2026 22:59:51 +0500 Subject: [PATCH 4/5] =?UTF-8?q?docs(logical-operators):=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D1=8B=D0=B9=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=20=D1=81=20||=20=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- modules/45-logic/25-logical-operators/ru/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/45-logic/25-logical-operators/ru/README.md b/modules/45-logic/25-logical-operators/ru/README.md index dae436e5..820b5a06 100644 --- a/modules/45-logic/25-logical-operators/ru/README.md +++ b/modules/45-logic/25-logical-operators/ru/README.md @@ -34,9 +34,21 @@ print(has_discount(15, True)) # => True (оба условия) print(has_discount(25, False)) # => False ``` -В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет. Если записать проверку скидки через `||`, Python откажется запускать файл и выведет такую ошибку. +В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет. Перепишем проверку скидки через `||` и сохраним код в файл _main.py_. ```text +def has_discount(age: int, is_student: bool) -> bool: + return age < 18 || is_student + + +print(has_discount(15, False)) +``` + +Python откажется запускать такой файл. Ошибку синтаксиса он находит до запуска программы, поэтому `print()` тоже не выполнится. + +```console +$ python main.py + File "/app/main.py", line 2 return age < 18 || is_student ^ SyntaxError: invalid syntax From 40ecda65257b03d0a0e646a0ceabcd5c2db0e5ce Mon Sep 17 00:00:00 2001 From: Nikolay Gagarinov Date: Thu, 29 Oct 2026 23:01:50 +0500 Subject: [PATCH 5/5] =?UTF-8?q?docs(logical-operators):=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=B8=D1=82=D1=8C=20=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D1=81=20||?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- modules/45-logic/25-logical-operators/ru/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/45-logic/25-logical-operators/ru/README.md b/modules/45-logic/25-logical-operators/ru/README.md index 820b5a06..c258850f 100644 --- a/modules/45-logic/25-logical-operators/ru/README.md +++ b/modules/45-logic/25-logical-operators/ru/README.md @@ -36,6 +36,7 @@ print(has_discount(25, False)) # => False В других языках вместо `and` и `or` часто пишут `&&` и `||`. В Python таких операторов нет. Перепишем проверку скидки через `||` и сохраним код в файл _main.py_. + ```text def has_discount(age: int, is_student: bool) -> bool: return age < 18 || is_student