Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Python
/

Условная конструкция (if)

Python: Условная конструкция (if)

Логические выражения позволяют проверять разные условия. Но сами по себе они лишь возвращают True или False. Чтобы программа могла выполнять разные действия в зависимости от результата, в Python есть специальная конструкция if.

Условная конструкция if

if 5 > 3:
    print("Yes, it is true")

Здесь строка "Yes, it is true" напечатается, потому что условие 5 > 3 истинно.

┌───────────┐
│ условие?  │
└─────┬─────┘
  True │
      ↓
┌───────────┐
│ тело if   │
└───────────┘

Отступы в блоках

После слова if пишется условие, затем ставится двоеточие, и начинается блок кода с отступом. Все строки с одинаковым отступом входят в один блок.

if 10 == 10:
    print("First")
    print("Second")

print("Goodbye!")

Здесь напечатаются "First" и "Second", потому что условие выполнилось. А "Goodbye!" напечатается в любом случае, так как она уже за пределами блока. Принцип такой же как и в определении функций.

Использование if внутри функции

Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается на знак вопроса, функция вернет "question", иначе вернет "normal".

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    if last_char == '?':
        return 'question'
    return 'normal'

print(get_type_of_sentence('Hodor'))   # => normal
print(get_type_of_sentence('Hodor?'))  # => question

Здесь используется сразу два return. Если условие внутри if выполняется, срабатывает return 'question' и функция завершается. Если условие не выполняется, управление переходит на следующую строку с return 'normal'.

Таким образом, у функции есть несколько возможных точек выхода. Это частая практика. В зависимости от условий функция может завершаться по-разному.

Несмотря на то, что функция get_type_of_sentence использует if, она возвращает строки, а значит, предикатом не является. В качестве предиката рассмотрим функцию, которая проверяет, достаточно ли денег для покупки.

def has_enough_money(balance: int, price: int) -> bool:
    if balance >= price:
        return True
    return False

print(has_enough_money(100, 50))   # => True
print(has_enough_money(30, 50))    # => False

if и логические выражения

Функцию has_enough_money мы написали через if. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением.

def has_enough_money(balance: int, price: int) -> bool:
    return balance >= price

В простых случаях лучше сразу возвращать такое выражение. if нужен там, где внутри блока выполняются дополнительные действия помимо возврата результата. Чем более сложные программы мы будем писать, тем чаще такие ситуации начнут встречаться.

Задание

В викторине загадано число 42. Участник называет число, и программа сразу говорит — угадал он или нет. Реализуйте функцию guess_number(), которая принимает число и проверяет, равно ли оно 42. Если равно — возвращает 'You win!', иначе — 'Try again!'.

guess_number(42) # You win!
guess_number(61) # Try again!
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Python
/

Условная конструкция (if)

Python: Условная конструкция (if)

Логические выражения позволяют проверять разные условия. Но сами по себе они лишь возвращают True или False. Чтобы программа могла выполнять разные действия в зависимости от результата, в Python есть специальная конструкция if.

Условная конструкция if

if 5 > 3:
    print("Yes, it is true")

Здесь строка "Yes, it is true" напечатается, потому что условие 5 > 3 истинно.

┌───────────┐
│ условие?  │
└─────┬─────┘
  True │
      ↓
┌───────────┐
│ тело if   │
└───────────┘

Отступы в блоках

После слова if пишется условие, затем ставится двоеточие, и начинается блок кода с отступом. Все строки с одинаковым отступом входят в один блок.

if 10 == 10:
    print("First")
    print("Second")

print("Goodbye!")

Здесь напечатаются "First" и "Second", потому что условие выполнилось. А "Goodbye!" напечатается в любом случае, так как она уже за пределами блока. Принцип такой же как и в определении функций.

Использование if внутри функции

Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается на знак вопроса, функция вернет "question", иначе вернет "normal".

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    if last_char == '?':
        return 'question'
    return 'normal'

print(get_type_of_sentence('Hodor'))   # => normal
print(get_type_of_sentence('Hodor?'))  # => question

Здесь используется сразу два return. Если условие внутри if выполняется, срабатывает return 'question' и функция завершается. Если условие не выполняется, управление переходит на следующую строку с return 'normal'.

Таким образом, у функции есть несколько возможных точек выхода. Это частая практика. В зависимости от условий функция может завершаться по-разному.

Несмотря на то, что функция get_type_of_sentence использует if, она возвращает строки, а значит, предикатом не является. В качестве предиката рассмотрим функцию, которая проверяет, достаточно ли денег для покупки.

def has_enough_money(balance: int, price: int) -> bool:
    if balance >= price:
        return True
    return False

print(has_enough_money(100, 50))   # => True
print(has_enough_money(30, 50))    # => False

if и логические выражения

Функцию has_enough_money мы написали через if. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением.

def has_enough_money(balance: int, price: int) -> bool:
    return balance >= price

В простых случаях лучше сразу возвращать такое выражение. if нужен там, где внутри блока выполняются дополнительные действия помимо возврата результата. Чем более сложные программы мы будем писать, тем чаще такие ситуации начнут встречаться.

Задание

В викторине загадано число 42. Участник называет число, и программа сразу говорит — угадал он или нет. Реализуйте функцию guess_number(), которая принимает число и проверяет, равно ли оно 42. Если равно — возвращает 'You win!', иначе — 'Try again!'.

guess_number(42) # You win!
guess_number(61) # Try again!
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

import solution


def test1():
    assert solution.guess_number(100500) == "Try again!"
    assert solution.guess_number(42) == "You win!"
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →