Урок 9 Конструкція if-else
Конструкція if-else
Минулого заняття ми ознайомилися з конструкцією if. З її допомогою ми ставили умову, за якої мав виконатися код всередині неї. Якщо ж умова не виконувалась, програма пропускала код і виконувалася далі. Звісно, це дуже потужний інструмент, але можна продовжити конструкцію, використавши блок else. З його використанням функціонал конструкції розшириться і, якщо умова не спрацювала, буде виконано код всередині блоку else. Якщо ж умова виконається, то виконається код всередині if, а код в else не буде залучений. Перейдемо до прикладу й запишемо:
Отримаємо (відео 1):
Відео 1
Зверніть увагу на умову "if var_1", вона аналогічна умові "if var_1 == True":
Перевіримо (відео 2):
Відео 2
Відомо, що будь-яке число відмінне від нуля, як і інші типи даних, що не є пустими, еквівалентне True, тому умова виконується. Коли ж змінна набуває нульового значення, умова перестає виконуватись і виконується код всередині else. Звичайно, цей блок можна використати декілька разів. Але бажано, щоби ступінь вкладеності будь-яких блоків коду не перевищував трьох. В іншому випадку код стає значно важче читати.
Конструкція elif
Імпортуємо модуль random з якого візьмемо функцію randint(). Вона буде генерувати випадкове число від нуля до чотирьох, а завдяки умовам дізнаємося це число:
from random import randint
from random import randint
var_1 = randint(0,4)
res = 0
if var_1:
if var_1 > 2:
if var_1 == 3:
print("We assume that var_1 is equal to 3")
res = 3
else:
print("We assume that var_1 is equal to 4")
res = 4
else:
if var_1 == 1:
print("We assume that var_1 is equal to 1")
res = 1
else:
print("We assume that var_1 is equal to 2")
res = 2
else:
print("We assume that var_1 is equal to 0")
res = 0
print("Real value is", var_1)
if var_1 == res:
print("The condition is correct!")
else:
print("The condition is Incorrect!")
Результат (відео 3):
Відео 3
Бачимо, що код дещо складний для читання. Тому, щоби зробити нашу конструкцію зрозумілішою, використаємо блоки elif, які виконуватимуть свій блок коду, якщо їхня умова задоволена, а попередні блоки не виконались:
from random import randint
var_1 = randint(0,4)
res = 0
if var_1 == 1:
print("We assume that var_1 is equal to 1")
res = 1
elif var_1 == 2:
print("We assume that var_1 is equal to 2")
res = 2
elif var_1 == 3:
print("We assume that var_1 is equal to 3")
res = 3
elif var_1 == 4:
print("We assume that var_1 is equal to 4")
res = 4
else:
print("We assume that var_1 is equal to 0")
res = 0
print("Real value is", var_1)
if var_1 == res:
print("The condition is correct!")
else:
print("The condition is Incorrect!")
Результат (відео 4):
Відео 4
Можливо, ви запитаєте, навіщо використовувати elif, якщо можна ще раз прописати if? Використовуючи новий if — починаємо нову конструкцію, тому наступний else буде стосуватися лише його (відео 5):
Відео 5
Отже, й попередні if та elif не вплинуть на нього (відео 6):
Відео 6
Чорний список
Усі ми стикалися з небажаними контактами та спамом. Для розв'язання цієї проблемиє функція — чорний список, куди ми їх і відправляємо (рис 1).
Давайте разом розробимо цей корисний додаток.
Першим кроком створимо словник — телефонну книгу:
Запишемо в неї кілька контактів. Ключем буде номер телефону, а значенням — ім'я контакту:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
Тепер створимо словник, у якому будемо зберігати заблоковані номери. Додамо:
Як бачимо, зараз він пустий, тому маємо наповнити його небажаними контактами. У цей словник можуть потрапити як незнайомі номери, так і відомі контакти. Враховуючи це під час розробки, відомі контакти мають братися з телефонної книги. Якщо ж номер телефону незнайомий, значенням буде число нуль. Для того, щоби записати в чорний списокнаявнийконтакт, дістанемо з телефонної книги список номерів телефонів. Оскільки вони є ключами, скористаємося методом keys(). Для наочності, тимчасово виведемо список на екран:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
contact_list = list(phone_book.keys())
print(contact_list)
block_list = {}
Результат (відео 7):
Відео 7
Оберемо із цього списку два контакти, які й потраплять до чорного списку. Запишемо їх в окремі змінні:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
contact_list = list(phone_book.keys())
print(contact_list)
blocked_1 = contact_list[0]
blocked_2 = contact_list[-1]
print(blocked_1)
print(blocked_2)
block_list = {}
Запустимо код (відео 8):
Відео 8
Настав час наповнювати чорний список. Для цього як ключі передамо ці змінні. А як значення до них візьмемо відповідні з телефонної книги. Також додамо невідомий номер і відповідне йому нульове значення:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
contact_list = list(phone_book.keys())
blocked_1 = contact_list[0]
blocked_2 = contact_list[-1]
block_list = {blocked_1 : phone_book[blocked_1], "+19295894824" : 0,
blocked_2 : phone_book[blocked_2]}
print(block_list)
Запустимо код (відео 9):
Відео 9
Наповнивши чорний список, необхідно створити генератор виклику, щоби перевірити роботу додатку. Для цього створимо множину, яка вміщатиме випадкові номери та номери з чорного списку:
phones = {"+380568591425", "+53145551433", "+330568597598", "+68952125478",
"+410500291443", "+13145547853", "+12054581022", "+54145251233",
"+43056203658", "+19295894824", "+200568591425", "+57632143519",
"+380568591425", "+53145551433"}
Створимо змінну, в якій буде випадковий номер телефону. А для реалізації випадкового дзвінка скористаємось методом pop(). Також виведемо змінну на екран, щоби перевірити роботу генератора:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
contact_list = list(phone_book.keys())
blocked_1 = contact_list[0]
blocked_2 = contact_list[-1]
block_list = {blocked_1 : phone_book[blocked_1], "+19295894824" : 0,
blocked_2 : phone_book[blocked_2]}
phones = {"+380568591425", "+53145551433", "+330568597598", "+68952125478",
"+410500291443", "+13145547853", "+12054581022", "+54145251233",
"+43056203658", "+19295894824", "+200568591425", "+57632143519",
"+380568591425", "+53145551433"}
incoming_call = phones.pop()
print(incoming_call)
Результат роботи генератора (відео 10):
Відео 10
Тепер, маючи вхідний дзвінок і список блокованих контактів необхідно створити логіку, яка зіставлятиме їх між собою. Якщо номер у чорному списку, відповімо "Вибачте, [ім'я контакту/номер] не сьогодні". Коли ж буде надходити дзвінок від інших номерів, виведемо напис "Вам дзвінок від [номер телефону/ім'я контакту]".
Готовий код:
phone_book = {"+380568591425" : "Bank", "+12054581022" : "Ann",
"+74052153665" : "Alex", "+43056203658" : "Tony",
"+12568254053" : "Nick", "+54145251233" : "Razor"}
contact_list = list(phone_book.keys())
blocked_1 = contact_list[0]
blocked_2 = contact_list[-1]
block_list = {blocked_1 : phone_book[blocked_1], "+19295894824" : 0,
blocked_2 : phone_book[blocked_2]}
phones = {"+380568591425", "+53145551433", "+330568597598", "+68952125478",
"+410500291443", "+13145547853", "+12054581022", "+54145251233",
"+43056203658", "+19295894824", "+200568591425", "+57632143519",
"+380568591425", "+53145551433"}
incoming_call = phones.pop()
if incoming_call in contact_list:
if incoming_call in block_list.keys():
print("Sorry,", block_list[incoming_call], "not today")
else:
print("You call from", phone_book[incoming_call])
else:
if incoming_call in block_list.keys():
print("Sorry,", incoming_call, "not today")
else:
print("You call from", incoming_call)
Запустимо код і впевнимось у коректній роботі програми (відео 11):
Відео 11
Отже, сьогодні ми повністю розглянули умовні конструкції if, elif, else, а отримані навички допомогли в розробці чорного списку.
На наступних заняттях дізнаємось про інші потужні можливості Python.