/
Программирование
/
Курс Python
/

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

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

Посмотрите на функцию ниже. Она определяет тип предложения по последнему символу: если предложение заканчивается вопросительным знаком, функция вернет Sentence is question, иначе — Sentence is normal:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]

    if last_char == "?":
        sentence_type = "question"
    else:
        sentence_type = "normal"

    return "Sentence is " + sentence_type


print(get_type_of_sentence("Hodor"))  # => Sentence is normal
print(get_type_of_sentence("Hodor?"))  # => Sentence is question

Мы добавили else и новый блок. Он выполнится, если условие в if окажется ложным. Еще в блок else можно вкладывать другие условия if. Else переводится "иначе", "в ином случае".

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

Пример вложенных блоков:

number = 10

if number > 10:
    print("Number is greater than 10")
else:
    if number == 10:
        print("Number is exactly 10")
    else:
        print("Number is less than 10")

Оформить конструкцию if-else можно двумя способами. С помощью отрицания можно изменить порядок блоков:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]

    if last_char != "?":
        sentence_type = "normal"
    else:
        sentence_type = "question"

    return "Sentence is " + sentence_type

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

На примере использования else видно, как важно не забывать отделять блоки.

# Неправильно
def check_number(number):
    if number > 0:
        print("Число положительное")
    if number > 10:
        print("Число больше 10")
    else:
        print("Число не положительное")


check_number(3)
# => Число положительное
# => Число не положительное

В примере выше мы забыли "вложить" с помощью отступа второй if, поэтому else теперь относится ко второму if.

# Правильно
def check_number(number: int) -> None:
    if number > 0:
        print("Число положительное")
        if number > 10:
            print("Число больше 10")
    else:
        print("Число не положительное")


check_number(3)
# => Число положительное

Теперь второй if вложен в первый, а else на одном уровне с первым и противопоставляется ему.

Задание

Реализуйте функцию normalize_url(), которая выполняет нормализацию данных. Она принимает адрес сайта и возвращает его с https:// в начале.

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

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

print(normalize_url("https://ya.ru"))  # => 'https://ya.ru'
print(normalize_url("google.com"))  # => 'https://google.com'
print(normalize_url("http://ai.fi"))  # => 'https://ai.fi'

Есть несколько способов решить задачу. Один из них — сравнивать первые 7 символов строки-аргумента со строкой http://, а потом на основе этого добавлять или не добавлять к ней https://.

Также вам скорее всего потребуется отбросить ненужную часть в начале строки. Помните, мы рассматривали способ получения кусочка от строки с помощью среза? Если нет, напоминаю:

# Берем 2 символа от начала
print("python"[:2])  # => 'py'

Так вот, с помощью срезов можно также отбросить определенное количество символов:

# Отбрасываем первые 2 символа
print("python"[2:])  # => 'thon'

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

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