Python: else
Попробуем изменить функцию из предыдущего примера так, чтобы она возвращала не просто тип предложения, а целую строку Sentence is normal
или Sentence is question
.
def get_type_of_sentence(sentence):
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" переводится «иначе», «в ином случае».
Существует два способа оформления конструкции if-else. С помощью отрицания можно изменить порядок блоков:
def get_type_of_sentence(sentence):
last_char = sentence[-1]
if last_char != '?':
sentence_type = 'normal'
else:
sentence_type = 'question'
return "Sentence is " + sentence_type
Какой способ предпочтительнее? Человеческому мозгу проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку, которая не содержит отрицаний, и подстраивайте содержимое блоков под неё.
Задание
Реализуйте функцию 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://
. - Можно использовать оператор
in
, чтобы проверить, содержится ли подстрока слева в строке справа. Используется он так:
print('cat' in 'Moscato') # => True
А потом на основе этого добавлять или не добавлять https://
.
Вам скорее всего потребуется отбросить ненужный кусок строки в начале оной. А помните, мы рассматривали способ получения кусочка от строки в её начале? Напоминаю:
# Берём 6 символов от начала
print('Winterfell'[:6]) # => 'Winter'
Так вот, можно отбросить те же самые 6 символов. Делается это так:
# Отбрасываем первые 6 символов
print('Winterfell'[6:]) # => 'fell'
Определения
else - способ задать блок кода, который будет выполнен, если условие с
if
не удовлетворено.
Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.