SlideShare a Scribd company logo
1 of 14
Download to read offline
Урок № 5
Умовна
інструкція
ЗМІСТ
Логічні оператори .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 3
Каскадна умовна інструкція if-elif. .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 5
Проектування простого комп’ютерного
асистента .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 7
Логічні оператори
Ви ознайомилися з усіма видами умов, які є в мові
Python, однак є ще одна конструкція, яка спрощує про-
цес написання програм – це команди and і or.
Перед тим як їх розглянути, давайте поговоримо
про умови. Умови, які ми розглядали раніше, були про-
стими. Наприклад, якщо граючи в гру, ви набираєте до-
статню кількість очок, то переходите на наступний рі-
вень. Це проста умова.
Якщо ж для того, щоб перейти на новий рівень,
вам потрібно побудувати будівлю, захопити табір про-
тивника і здобути 150 одиниць золотої руди, це буде вже
складна умова.
Для використання складних умов існують спеці-
альні команди – and, or, not. Ці команди використову-
ються для об'єднання декількох умов:
■■ команда and (і) – для виконання дій потрібно, щоб
всіумовибулиправдивими.Інакшекажучи,обидва
вирази повинні бути true;
a = 5
b = 5
if (a>0) and (b>0):
вираз
...
3
Умовна інструкція
■■ команда or (або) – для виконання дій потрібно,
щоб одна з умов була правдивою. Команда вико-
нається, якщо хоча б одна з умов буде true;
a = 0
b = 5
if (a>0) or (b>0):
вираз
...
■■ команда not (не) – для виконання дій потрібно,
щоб умова була false.
a = 5
if (not a==0):
вираз
Наведена нижче таблиця наочно демонструє прин-
цип роботи логічних операторів.
A B A AND B A OR B NOT A
false false false false true
false true false true true
true false false true false
true true true true false
Варто звернути увагу на те, що умов може бути ве-
личезна кількість, але правила залишаються такими ж.
4
Урок № 5
Каскадна умовна
інструкція if-elif
Умови – важливі і часто використовувані компо-
ненти будь-якої програми. Однак не завжди можна
оформити умову у вигляді if-else, тому таку конструк-
цію можна трохи поліпшити, додавши команду elif. На
рисунку 1 показана схема роботи такої конструкції.
Рисунок 1
5
Умовна інструкція
Тепер з’ясуємо, що відбувається на даній схемі (див.
рис. 1 на сторінці 5):
1.	 Перевіряємо умови при if:
■■ якщо вона правдива, виконуємо код в блоці 1;
■■ якщо вона неправдива, переходимо до кроку 2.
2.	 Перевіряємо умови при elif:
■■ якщо вона правдива, виконуємо код в блоці 2;
■■ якщо вона неправдива, переходимо до кроку 3.
…
n. Завершальна в цьому ланцюжку умова else. Код в
цьому блоці виконається в тому випадку, якщо до
цього жодна умова не виконалася.
6
Урок № 5
Проектування простого
комп’ютерного асистента
Давайте напишемо програму – простого особисто-
го асистента, який би аналізував дату народження лю-
дини за різними критеріями. За його допомогою можна
буде дізнатися рік народження користувача, його вікову
групу і вік в секундах (рис. 2).
Погляньте на код:
import datetime
print("n---------------------------------------")
print("Enter 1 if you want to know about the year
(365 or 366 days).")
Рисунок 2
7
Умовна інструкція
print("Enter 2 if you want to know about
the age group.")
print("Enter 3 if you want to know about the age
in seconds.")
print("-------------------------------------n")
birth_day = int(input("Your birth day is xx: "))
birth_month = int(input("Your birth month is xx:
"))
birth_year = int(input("Your birth year is xxxx:
"))
day = int(datetime.date.today().day)
month = int(datetime.date.today().month)
year = int(datetime.date.today().year)
number = int(input("Select what you want: "))
if month > birth_month:
age = year - birth_year
else:
age = (year - birth_year) - 1
if (number > 0) and (number < 4) and (age >= 0)
and (age < 130):
if number == 1:
if birth_year % 4 != 0:
print("It is a common year (365 days)")
8
Урок № 5
else:
print("It is a leap year (366 days)")
elif number == 2:
print("Your group is ", end="")
if age < 1:
print("Baby")
elif (age >= 1) and (age < 3):
print("Toddler")
elif (age >= 3) and (age < 5):
print("Preschool")
elif (age >= 5) and (age < 12):
print("Gradeschooler")
elif (age >= 12) and (age < 19):
print("Teen")
elif age >= 19:
print("Adult")
elif number == 3:
print("Your age: {} year, {} month,
{} day" .format(age,
abs(month-birth_month),
abs(day-birth_day)))
seconds = ((age * 31536000) + ((month-1) *
2592000) + ((day-1) * 86400))
print("Your age is {} seconds"
.format(seconds))
else:
print("Error! Try again.")
9
Умовна інструкція
10
Урок № 5
З’ясуємо докладніше, що відбувається у цій програ-
мі.
Ми вже працювали з бібліотекою datetime, і в цій-
програмі вона виявилася дуже доречною. Використо-
вуючи дані про поточний рік datetime.date.today().
year, місяць datetime.date.today().month і дату
datetime.date.today().day, ми можемо розрахувати
точний вік людини, знаючи дату її народження.
Спочатку потрібно запропонувати ввести дані ко-
ристувача (день, місяць і рік народження):
birth_day = int(input("Your birth day is xx: "))
birth_month = int(input("Your birth month is xx:
"))
birth_year = int(input("Your birth year is xxxx:
"))
А потім у змінні day, month і year записуємо по-
точну дату:
day = int(datetime.date.today().day)
month = int(datetime.date.today().month)
year = int(datetime.date.today().year)
Далі в нашій програмі використовується конструк-
ція if-else. Можливо, ви запитаєте, навіщо ж вона
потрібна? Все досить просто, якщо ми не порівняємо
поточний місяць і місяць народження, то не зможемо
обчислити точний вік.
Якщо програма буде ігнорувати місяць народження
користувача, то, цілком ймовірно, помилиться в розра-
11
Умовна інструкція
хунках. Щоб уникнути таких помилок, нам і потрібно
знати поточний вік:
if month > birth_month:
age = year - birth_year
else:
age = (year - birth_year) - 1
В	 програмі використано кілька вкладених умов і ло-
гічний оператор and. Це необхідно для того, щоб пере-
вірити такі умови: чи правильно введений номер дії (є 3
команди на вибір) і чи реальний був вказаний вік:
if (number > 0) and (number < 4) and (age >= 0)
and (age < 130):
В першому if ми порівнюємо число, яке ввів корис-
тувач (1, 2 або 3) з одиницею. Якщо результат true, то
програма обчислює, чи був це високосний рік. Якщо ре-
зультат ділення не кратний 4, тобто не ділиться на 4 без
остачі, то в році було 365 днів:
if number == 1:
if birth_year % 4 != 0:
print("It is a common year (365 days)")
else:
print("It is a leap year (366 days)")
Найдивовижніше в даному коді – це визначення
віку аж до кількості місяців і днів, а також розрахунок
віку в секундах.
12
Урок № 5
Тут нам знадобляться базові знання з математики.
Оскільки в секундах 1 рік дорівнює 31536000 с,
місяць – 2592000 с, а день – 86400 с, слід використовува-
ти такий код:
elif number == 3:
print("Your age: {} year, {} month,
{} day" .format(age,
abs(month-birth_month),
abs(day-birth_day)))
seconds = ((age * 31536000) + ((month-1) *
2592000) + ((day-1) * 86400))
print("Your age is {} seconds"
.format(seconds))
Написання даної програми дозволить не тільки ви-
користовувати отримані на цьому уроці знання, а й за-
кріпить інформацію, яку ви дізналися на попередніх за-
няттях.
Урок № 5
Умовна інструкція
© Комп'ютерна Академiя ШАГ
www.itstep.org
Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг-
менти яких використані в матеріалі, належать їх законним власникам. Фрагменти
творів використовуються в ілюстративних цілях в обсязі, виправданому поставле-
ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274
ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і
спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально-
му використанню об’єктів авторського права і не обмежує законні інтереси автора
і правовласників. Цитовані фрагменти творів на момент використання не можуть
бути замінені альтернативними аналогами, що не охороняються авторським правом,
і відповідають критеріям добросовісного використання і чесного використання.
Усі права захищені. Повне або часткове копіювання матеріалів заборонене.
Узгодження використання творів або їх фрагментів здійснюється з авторами і
правовласниками. Погоджене використання матеріалів можливе тільки якщо
вказано джерело.
Відповідальність за несанкціоноване копіювання і комерційне використання
матеріалів визначається чинним законодавством України.

More Related Content

Similar to Mka python jr-urok_05_ua_1563258882

Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxGlobalLogic Ukraine
 
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasiannaeres
 
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasiannaeres
 
Учень, як вчений
Учень, як вченийУчень, як вчений
Учень, як вченийCveldulf
 
Lesson #11. computer modeling of objects and processes. computer experiment
Lesson #11. computer modeling of objects and processes. computer experimentLesson #11. computer modeling of objects and processes. computer experiment
Lesson #11. computer modeling of objects and processes. computer experimentNikolay Shaygorodskiy
 
Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932PavloTsiura
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovuEscuela
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascalAnn Eres
 
Lesson # 39. program debugging. bzd briefing
Lesson # 39. program debugging. bzd briefingLesson # 39. program debugging. bzd briefing
Lesson # 39. program debugging. bzd briefingNikolay Shaygorodskiy
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1rznz
 
5 клас урок 28 нова програма
5 клас урок 28 нова програма5 клас урок 28 нова програма
5 клас урок 28 нова програмаЮлія Артюх
 

Similar to Mka python jr-urok_05_ua_1563258882 (20)

Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
 
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
0900694 8587 d_shost_d_m_informatika_turbo_pascal_1011_klasi
 
Учень, як вчений
Учень, як вченийУчень, як вчений
Учень, як вчений
 
18.ppsx
18.ppsx18.ppsx
18.ppsx
 
Lesson #11. computer modeling of objects and processes. computer experiment
Lesson #11. computer modeling of objects and processes. computer experimentLesson #11. computer modeling of objects and processes. computer experiment
Lesson #11. computer modeling of objects and processes. computer experiment
 
Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932Mka python jr-urok_07_ua_1563258932
Mka python jr-urok_07_ua_1563258932
 
Less37
Less37Less37
Less37
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovu
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
Pascal основи програмування частина 1
Pascal основи програмування частина 1Pascal основи програмування частина 1
Pascal основи програмування частина 1
 
24
2424
24
 
13
1313
13
 
Less39
Less39Less39
Less39
 
Lesson # 39. program debugging. bzd briefing
Lesson # 39. program debugging. bzd briefingLesson # 39. program debugging. bzd briefing
Lesson # 39. program debugging. bzd briefing
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
 
7
77
7
 
5 клас урок 28 нова програма
5 клас урок 28 нова програма5 клас урок 28 нова програма
5 клас урок 28 нова програма
 
3018 1
3018 13018 1
3018 1
 
Less36
Less36Less36
Less36
 

Recently uploaded

ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptssuser59e649
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяssuser0a4f48
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»tetiana1958
 
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfssuser54595a
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класkrementsova09nadya
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяAdriana Himinets
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfhome
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняAdriana Himinets
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptxssuserc301ed1
 
Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdfhome
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...JurgenstiX
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfssuser15a891
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxOlgaDidenko6
 

Recently uploaded (14)

ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.pptЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
ЛЕКЦІЯ Засоби масової інформації –важливий інструмент ПР.ppt
 
Бомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентаціяБомбочки для ванни своїми руками презентація
Бомбочки для ванни своїми руками презентація
 
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
Відкрита лекція на тему «Контроль бур'янів в посівах соняшника»
 
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdfupd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
upd.18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23_FINAL.pdf
 
Хімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 класХімічні елементи в літературних творах 8 клас
Хімічні елементи в літературних творах 8 клас
 
О.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. БіографіяО.Духнович - пророк народної правди. Біографія
О.Духнович - пророк народної правди. Біографія
 
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdfатестація 2023-2024 Kewmrbq wtynh GNJ.pdf
атестація 2023-2024 Kewmrbq wtynh GNJ.pdf
 
Р.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповіданняР.Шеклі "Запах думки". Аналіз оповідання
Р.Шеклі "Запах думки". Аналіз оповідання
 
Віртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptxВіртуальна виставка нових надходжень 2-24.pptx
Віртуальна виставка нових надходжень 2-24.pptx
 
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості  та дозвілля для дітейpptxБібліотека – розвиток дитячої творчості  та дозвілля для дітейpptx
Бібліотека – розвиток дитячої творчості та дозвілля для дітейpptx
 
Іваніщук Надія Вікторівна атестація .pdf
Іваніщук Надія Вікторівна атестація  .pdfІваніщук Надія Вікторівна атестація  .pdf
Іваніщук Надія Вікторівна атестація .pdf
 
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
Принципові відмінності досконалої (повної) конкуренції від інших форм організ...
 
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdfЗастосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
Застосування Гайду безбар’єрності в роботі закладів культури громад Одещини.pdf
 
Презентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptxПрезентациія для сайта Група «Незабудка».pptx
Презентациія для сайта Група «Незабудка».pptx
 

Mka python jr-urok_05_ua_1563258882

  • 1.
  • 2. Урок № 5 Умовна інструкція ЗМІСТ Логічні оператори . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Каскадна умовна інструкція if-elif. . . . . . . . . . . . . . . . . . 5 Проектування простого комп’ютерного асистента . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  • 3. Логічні оператори Ви ознайомилися з усіма видами умов, які є в мові Python, однак є ще одна конструкція, яка спрощує про- цес написання програм – це команди and і or. Перед тим як їх розглянути, давайте поговоримо про умови. Умови, які ми розглядали раніше, були про- стими. Наприклад, якщо граючи в гру, ви набираєте до- статню кількість очок, то переходите на наступний рі- вень. Це проста умова. Якщо ж для того, щоб перейти на новий рівень, вам потрібно побудувати будівлю, захопити табір про- тивника і здобути 150 одиниць золотої руди, це буде вже складна умова. Для використання складних умов існують спеці- альні команди – and, or, not. Ці команди використову- ються для об'єднання декількох умов: ■■ команда and (і) – для виконання дій потрібно, щоб всіумовибулиправдивими.Інакшекажучи,обидва вирази повинні бути true; a = 5 b = 5 if (a>0) and (b>0): вираз ... 3 Умовна інструкція
  • 4. ■■ команда or (або) – для виконання дій потрібно, щоб одна з умов була правдивою. Команда вико- нається, якщо хоча б одна з умов буде true; a = 0 b = 5 if (a>0) or (b>0): вираз ... ■■ команда not (не) – для виконання дій потрібно, щоб умова була false. a = 5 if (not a==0): вираз Наведена нижче таблиця наочно демонструє прин- цип роботи логічних операторів. A B A AND B A OR B NOT A false false false false true false true false true true true false false true false true true true true false Варто звернути увагу на те, що умов може бути ве- личезна кількість, але правила залишаються такими ж. 4 Урок № 5
  • 5. Каскадна умовна інструкція if-elif Умови – важливі і часто використовувані компо- ненти будь-якої програми. Однак не завжди можна оформити умову у вигляді if-else, тому таку конструк- цію можна трохи поліпшити, додавши команду elif. На рисунку 1 показана схема роботи такої конструкції. Рисунок 1 5 Умовна інструкція
  • 6. Тепер з’ясуємо, що відбувається на даній схемі (див. рис. 1 на сторінці 5): 1. Перевіряємо умови при if: ■■ якщо вона правдива, виконуємо код в блоці 1; ■■ якщо вона неправдива, переходимо до кроку 2. 2. Перевіряємо умови при elif: ■■ якщо вона правдива, виконуємо код в блоці 2; ■■ якщо вона неправдива, переходимо до кроку 3. … n. Завершальна в цьому ланцюжку умова else. Код в цьому блоці виконається в тому випадку, якщо до цього жодна умова не виконалася. 6 Урок № 5
  • 7. Проектування простого комп’ютерного асистента Давайте напишемо програму – простого особисто- го асистента, який би аналізував дату народження лю- дини за різними критеріями. За його допомогою можна буде дізнатися рік народження користувача, його вікову групу і вік в секундах (рис. 2). Погляньте на код: import datetime print("n---------------------------------------") print("Enter 1 if you want to know about the year (365 or 366 days).") Рисунок 2 7 Умовна інструкція
  • 8. print("Enter 2 if you want to know about the age group.") print("Enter 3 if you want to know about the age in seconds.") print("-------------------------------------n") birth_day = int(input("Your birth day is xx: ")) birth_month = int(input("Your birth month is xx: ")) birth_year = int(input("Your birth year is xxxx: ")) day = int(datetime.date.today().day) month = int(datetime.date.today().month) year = int(datetime.date.today().year) number = int(input("Select what you want: ")) if month > birth_month: age = year - birth_year else: age = (year - birth_year) - 1 if (number > 0) and (number < 4) and (age >= 0) and (age < 130): if number == 1: if birth_year % 4 != 0: print("It is a common year (365 days)") 8 Урок № 5
  • 9. else: print("It is a leap year (366 days)") elif number == 2: print("Your group is ", end="") if age < 1: print("Baby") elif (age >= 1) and (age < 3): print("Toddler") elif (age >= 3) and (age < 5): print("Preschool") elif (age >= 5) and (age < 12): print("Gradeschooler") elif (age >= 12) and (age < 19): print("Teen") elif age >= 19: print("Adult") elif number == 3: print("Your age: {} year, {} month, {} day" .format(age, abs(month-birth_month), abs(day-birth_day))) seconds = ((age * 31536000) + ((month-1) * 2592000) + ((day-1) * 86400)) print("Your age is {} seconds" .format(seconds)) else: print("Error! Try again.") 9 Умовна інструкція
  • 10. 10 Урок № 5 З’ясуємо докладніше, що відбувається у цій програ- мі. Ми вже працювали з бібліотекою datetime, і в цій- програмі вона виявилася дуже доречною. Використо- вуючи дані про поточний рік datetime.date.today(). year, місяць datetime.date.today().month і дату datetime.date.today().day, ми можемо розрахувати точний вік людини, знаючи дату її народження. Спочатку потрібно запропонувати ввести дані ко- ристувача (день, місяць і рік народження): birth_day = int(input("Your birth day is xx: ")) birth_month = int(input("Your birth month is xx: ")) birth_year = int(input("Your birth year is xxxx: ")) А потім у змінні day, month і year записуємо по- точну дату: day = int(datetime.date.today().day) month = int(datetime.date.today().month) year = int(datetime.date.today().year) Далі в нашій програмі використовується конструк- ція if-else. Можливо, ви запитаєте, навіщо ж вона потрібна? Все досить просто, якщо ми не порівняємо поточний місяць і місяць народження, то не зможемо обчислити точний вік. Якщо програма буде ігнорувати місяць народження користувача, то, цілком ймовірно, помилиться в розра-
  • 11. 11 Умовна інструкція хунках. Щоб уникнути таких помилок, нам і потрібно знати поточний вік: if month > birth_month: age = year - birth_year else: age = (year - birth_year) - 1 В програмі використано кілька вкладених умов і ло- гічний оператор and. Це необхідно для того, щоб пере- вірити такі умови: чи правильно введений номер дії (є 3 команди на вибір) і чи реальний був вказаний вік: if (number > 0) and (number < 4) and (age >= 0) and (age < 130): В першому if ми порівнюємо число, яке ввів корис- тувач (1, 2 або 3) з одиницею. Якщо результат true, то програма обчислює, чи був це високосний рік. Якщо ре- зультат ділення не кратний 4, тобто не ділиться на 4 без остачі, то в році було 365 днів: if number == 1: if birth_year % 4 != 0: print("It is a common year (365 days)") else: print("It is a leap year (366 days)") Найдивовижніше в даному коді – це визначення віку аж до кількості місяців і днів, а також розрахунок віку в секундах.
  • 12. 12 Урок № 5 Тут нам знадобляться базові знання з математики. Оскільки в секундах 1 рік дорівнює 31536000 с, місяць – 2592000 с, а день – 86400 с, слід використовува- ти такий код: elif number == 3: print("Your age: {} year, {} month, {} day" .format(age, abs(month-birth_month), abs(day-birth_day))) seconds = ((age * 31536000) + ((month-1) * 2592000) + ((day-1) * 86400)) print("Your age is {} seconds" .format(seconds)) Написання даної програми дозволить не тільки ви- користовувати отримані на цьому уроці знання, а й за- кріпить інформацію, яку ви дізналися на попередніх за- няттях.
  • 13.
  • 14. Урок № 5 Умовна інструкція © Комп'ютерна Академiя ШАГ www.itstep.org Усі права на фото-, аудіо- і відеотвори, що охороняються авторським правом і фраг- менти яких використані в матеріалі, належать їх законним власникам. Фрагменти творів використовуються в ілюстративних цілях в обсязі, виправданому поставле- ним завданням, у рамках учбового процесу і в учбових цілях, відповідно до ст. 1274 ч. 4 ГК РФ і ст. 21 і 23 Закони України «Про авторське право і суміжні права». Обсяг і спосіб цитованих творів відповідає прийнятим нормам, не завдає збитку нормально- му використанню об’єктів авторського права і не обмежує законні інтереси автора і правовласників. Цитовані фрагменти творів на момент використання не можуть бути замінені альтернативними аналогами, що не охороняються авторським правом, і відповідають критеріям добросовісного використання і чесного використання. Усі права захищені. Повне або часткове копіювання матеріалів заборонене. Узгодження використання творів або їх фрагментів здійснюється з авторами і правовласниками. Погоджене використання матеріалів можливе тільки якщо вказано джерело. Відповідальність за несанкціоноване копіювання і комерційне використання матеріалів визначається чинним законодавством України.