Теперь изменим функцию из предыдущего урока так, чтобы она возвращала не просто тип предложения, а целую строку 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'
https://replit.com/@hexlet/python-basics-conditionals-if-else
Мы добавили else
и новый блок. Он выполнится, если условие в if
— ложь. Еще в блок else
можно вкладывать другие условия 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):
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):
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://
.
Также вам скорее всего потребуется отбросить ненужную часть в начале строки. Помните, мы рассматривали способ получения кусочка от строки с помощью среза? Если нет, напоминаю:
# Берём 6 символов от начала
print('Winterfell'[:6]) # => 'Winter'
Так вот, с помощью срезов можно также отбросить определённое количество символов:
# Отбрасываем первые 6 символов
print('Winterfell'[6:]) # => 'fell'
Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "Обсуждение". Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт
Ваше упражнение проверяется по этим тестам
1import index
2
3
4def test():
5 assert index.normalize_url("yandex.ru") == "https://yandex.ru"
6 assert index.normalize_url("http://yandex.ru") == "https://yandex.ru"
7 assert index.normalize_url("https://yandex.ru") == "https://yandex.ru"
8 assert index.normalize_url("httpsecurity.com") == "https://httpsecurity.com"
9 assert (
10 index.normalize_url("https://httpbin.org/redirect-to?url=http://google.com")
11 == "https://httpbin.org/redirect-to?url=http://google.com"
12 )
13 assert (
14 index.normalize_url("httpbin.org/redirect-to?url=https://google.com")
15 == "https://httpbin.org/redirect-to?url=https://google.com"
16 )
17 assert (
18 index.normalize_url("httpbin.org/redirect-to?url=http://google.com")
19 == "https://httpbin.org/redirect-to?url=http://google.com"
20 )
21
Решение учителя откроется через: