Skip to content

Commit 43e6a48

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

12 files changed

Lines changed: 109 additions & 114 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def guess_number(guess):
1+
def guess_number(guess: int) -> str:
22
if guess == 42:
33
return "You win!"
44
return "Try again!"

modules/48-conditionals/30-if/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Реализуйте функцию `guess_number()`, которая принимает число и проверяет, равно ли число заданному (пусть это будет 42). Если равно, то функция должна вернуть строку `'You win!'`, в противном случае нужно вернуть строку `'Try again!'`.
32

43
```python
Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,32 @@
1+
Логические выражения позволяют проверять разные условия. Но сами по себе они ничего не делают — только возвращают `True` или `False`. Чтобы программа могла выполнять разные действия в зависимости от результата, в Python есть специальная конструкция `if`.
12

2-
В этом уроке вы узнаете, что с помощью условных конструкций можно изменить поведение программы, что будет зависеть от проверяемых условий. Благодаря этому вы сможете писать сложные программы, которые ведут себя в зависимости от ситуации.
3+
```python
4+
if 5 > 3:
5+
print("Yes, it is true")
6+
```
7+
8+
Здесь строка `"Yes, it is true"` напечатается, потому что условие `5 > 3` истинно.
39

4-
Для примера рассмотрим функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных:
10+
## Отступы в блоках
11+
12+
После слова `if` пишется условие, затем ставится двоеточие, и начинается блок кода с отступом. Все строки с одинаковым отступом входят в один блок:
513

614
```python
7-
def get_type_of_sentence(sentence):
15+
if 10 == 10:
16+
print("First")
17+
print("Second")
18+
19+
print("Goodbye!")
20+
```
21+
22+
Здесь напечатаются `"First"` и `"Second"`, потому что условие выполнилось. А `"Goodbye!"` напечатается в любом случае, так как она уже за пределами блока.
23+
24+
## Использование if внутри функции
25+
26+
Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается на знак вопроса, функция вернёт `"question"`. В противном случае — `"normal"`.
27+
28+
```python
29+
def get_type_of_sentence(sentence: str) -> str:
830
last_char = sentence[-1]
931
if last_char == '?':
1032
return 'question'
@@ -14,21 +36,35 @@ print(get_type_of_sentence('Hodor')) # => normal
1436
print(get_type_of_sentence('Hodor?')) # => question
1537
```
1638

39+
Здесь используется сразу два `return`. Работа функции устроена так:
40+
41+
* если условие внутри `if` выполняется, срабатывает `return 'question'` и функция завершается;
42+
* если условие не выполняется, управление переходит на следующую строку — `return 'normal'`.
1743

18-
`if` — конструкция языка, которая управляет порядком выполнения инструкций. После слова `if` ей передается выражение-предикат, и в конце ставится двоеточие. После этого описывается блок кода. Он выполнится, если предикат — истина.
44+
Таким образом, у функции есть несколько возможных точек выхода. Это частая практика: в зависимости от условий функция может завершаться по-разному.
1945

20-
Если предикат — ложь, то блок кода пропускается, и функция продолжает свое выполнение дальше. В нашем случае следующая строчка кода — `return 'normal'` — заставит функцию вернуть строку и завершиться.
46+
Несмотря на то что функция `get_type_of_sentence` использует `if`, она не является предикатом — она возвращает строки. А вот пример предиката: функция, которая проверяет, достаточно ли денег для покупки. Она возвращает логическое значение в зависимости от условия.
2147

22-
`return` может находиться в любом месте функции — даже внутри блока кода с условием.
48+
```python
49+
def has_enough_money(balance: int, price: int) -> bool:
50+
if balance >= price:
51+
return True
52+
return False
53+
54+
print(has_enough_money(100, 50)) # => True
55+
print(has_enough_money(30, 50)) # => False
56+
```
2357

24-
Обратите внимание, на отступы. В Python, в отличие от других языков, блоки кода принято выделять не скобками, а новой строкой с отступом. Отступы обычно состоят из 4 пробелов или одного символа табуляции, который нужно настроить в редакторе на использование пробелов. Все строки в одном блоке должны иметь одинаковый отступ. Увеличение отступа означает начало нового блока, а уменьшение отступа означает конец блока.
58+
Здесь используется `if`, и результатом работы функции всегда будет `True` или `False`.
59+
60+
## if и логические выражения
61+
62+
Функцию `has_enough_money` мы написали через `if`. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением.
2563

2664
```python
27-
if a == 42:
28-
# отступ и начало блока if
29-
# все строки кода с одним отступом выполняются в одном блоке
30-
print('First')
31-
print('Second')
32-
# конец отступа и выход из блока
33-
print('Goodbye!')
65+
def has_enough_money(balance: int, price: int) -> bool:
66+
return balance >= price
3467
```
68+
69+
В простых случаях лучше сразу возвращать такое выражение. `if` нужен там, где внутри блока выполняются дополнительные действия, а не только возврат результата. Чем более сложные программы мы будем писать, тем чаще такие ситуации начнут встречаться.
70+

modules/48-conditionals/40-if-else/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Реализуйте функцию `normalize_url()`, которая выполняет нормализацию данных. Она принимает адрес сайта и возвращает его с `https://` в начале.
32

43
Функция принимает адреса в виде `АДРЕС` или `http://АДРЕС`, но всегда возвращает адрес в виде `https://АДРЕС`. На вход функции также может поступить адрес в уже нормализованном виде `https://АДРЕС`, в этом случае ничего менять не надо.

modules/48-conditionals/40-if-else/ru/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
21
Теперь изменим функцию из предыдущего урока так, чтобы она возвращала не просто тип предложения, а целую строку `Sentence is normal` или `Sentence is question`:
32

43
```python
5-
def get_type_of_sentence(sentence):
4+
def get_type_of_sentence(sentence: str) -> str:
65
last_char = sentence[-1]
76

87
if last_char == '?':

modules/48-conditionals/50-else-if/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
На электронной карте Вестероса, которую реализовал Сэм, союзники Старков отображены зелёным кружком, враги — красным, а нейтральные семьи — серым.
32

43
Напишите для Сэма функцию `who_is_this_house_to_starks()`, которая принимает на вход фамилию семьи и возвращает одно из трёх значений: `'friend'`, `'enemy'`, `'neutral'`.

modules/48-conditionals/50-else-if/ru/README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
21
Функция `get_type_of_sentence()` различает только вопросительные и обычные предложения. Добавим в нее поддержку восклицательных предложений:
32

43
```python
5-
def get_type_of_sentence(sentence):
4+
def get_type_of_sentence(sentence: str) -> str:
65
last_char = sentence[-1]
76

87
if last_char == '?':

modules/48-conditionals/60-ternary-operator/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Реализуйте функцию `flip_flop()`, которая принимает на вход строку и, если эта строка равна `'flip'`, возвращает строку `'flop'`. В противном случае функция должна вернуть `'flip'`.
32

43
Примеры вызова:

modules/48-conditionals/60-ternary-operator/ru/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Посмотрите на определение функции, которая возвращает модуль переданного числа:
32

43
```python

modules/48-conditionals/65-match/ru/README.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
Многие языки в дополнение к условной конструкции `if` включают в себя `switch`. С выходом версии Python 3.10 также был добавлен оператор с аналогичной функциональностью — `match`. В этом уроке мы познакомимся с этим оператором.
3-
41
Оператор `match` — это специализированная версия `if`, которую создали для особых ситуаций. Например, ее нужно использовать там, где есть цепочка `if else` с проверками на равенство:
52

63
```python

0 commit comments

Comments
 (0)