# Завдання на умовний оператор Умовний оператор: це конструкція ```python= if COND1: print("Надрукує, коли COND1 є True") elif COND2: print("Надрукує, коли COND1 є False, а COND2 є True") ... elif COND3: print("Надрукує, коли COND1 є False, COND2 є False, a COND3 є True") ... ... else: print("Надрукує, коли всі умови вище False") ``` Використовуючи різні вирази замість COND1, COND2, COND3,... можна керувати тим, який код виконується. Приклади виразів, які можна використовувати, є в документі [Логіка](https://hackmd.io/@pythondemo-v2/rJTKY89M_). Якщо забули, як робити кольори в терміналі: ```python= GREEN, RED, END = "\x1b[32m", "\x1b[31m", "\x1b[0m" ``` ## Приклад 1. Одні з найпопулярніших задач в комп'ютерній графіці ### Переставити числа по порядку (`order2.py`) :::info Отримати від юзера два числа, якщо друге число менше за перше, то переставити їх місцями (щоб перше було меншим, а друге більшим). Якщо однакові або перше менше другого --- нічого не робити. Вивести на екран у цьому порядку ::: Наприклад, ввівши `5`, `3` програма повинна написати ``` 3 5 ``` А ввівши `-10`, `-1` програма повинна написати ``` -10 -1 ``` Спосіб вирішення знадобиться в наступній задачі! ### Число в діапазоні (`in_interval.py`) :::info Отримати від юзера два числа --- нижню і верхню межі діапазону. Отримати від юзера третє число --- тестове. Перевірити чи входить тестове число в діапазон і вивести результат перевірки на екран. Якщо юзер помилився і ввів в діапазоні числа спочатку більше, а потім менше, переставити їх місцями, щоб діапазон вийшов коректним. ::: Наприклад, якщо вказано діапазон `10`, `100`, то - число `-5` не входить в діапазон :negative_squared_cross_mark: - число `0` не входить в діапазон :negative_squared_cross_mark: - число `10` входить в діапазон :heavy_check_mark: - число `11` входить в діапазон :heavy_check_mark: - число `50` входить в діапазон :heavy_check_mark: - число `100` входить в діапазон :heavy_check_mark: - число `101` не входить в діапазон :negative_squared_cross_mark: ### Точка в прямокутнику (`in_rectangle.py`) :::info Отримати від юзера чотири числа: - r_x1, r_y1 координати кута прямокутника - r_x2, r_y2 координати протилежного кута прямокутника А потім отримати ще два числа - x, y координати тестової точки Зробити перевірку "де знаходиться тестова точка?": - всередині області прямокутника - ззовні прямокутника - близько до краю прямокутника, але все-ще всередині - близько до краю прямокутника, але все-ще ззовні Близько до краю --- в межах 10 пікселів від краю. Цей параметр має мати окрему змінну. ::: Це уже конкретно задача на двовимірну графіку. Наприклад, визначити чи куля влучила у ціль можна перевіривши координати кулі `(x, y)` з координатами прямокутника цілі. ### Чи близько дві точки (`points_near.py`) ## Приклад 2. Логін-пароль ### Коли ж юзер щось введе (`wait.py`) :::info Отримати від юзера його ім'я і вивести на екран зеленим кольором. Якщо юзер халтурить і нічого не вводить (одразу тисне Enter), питати у нього ім'я доти, доки він його не напише. ::: В цьому завдання потрібно написати умовний оператор **всередині** вічного циклу. Щоб вийти з вічного циклу, потрібно викликати команду `break` (без дужок). Майте на увазі, що `break` закінчує цикл, а не умовний оператор. ### Логін-пароль (`login.py`) :::info Написати програму, яка чекає від юзера логін, потім чекає від юзера пароль, потім звіряє пару логін-пароль з збереженою в програмі і пише "Автентифікацію пройдено", якщо логін-пароль співпали. Якщо не співпали, то пише - "Немає такого юзера", якщо логін не співпав - "Пароль неправильний", якщо пароль не співпав і повторює кроки з початку. Всі помилки потрібно виводити червоним кольором.   ![](https://i.imgur.com/K5qvptN.gif) ::: Завдання можна ускладнити тим, що після трьох невдалих спроб програма завершується і автентифікація не відбувається (блокування). ## Приклад 3. Текстове меню (`textmenu.py`) :::info Уявіть що у вас є **складна** програма у якої **складний** спосіб запуску. Тому при запуску програми вам треба показати меню користувачу. Меню виглядає так: -  1) старт -  2) вказати час затримки -  3) вказати дату старту -  4) вибрати версію програми -  5) вказати ім'я юзера Всього програма ініціалізує кілька чисел: ім'я юзера, який запускає програму (**рядок**), затримку при запуску в секундах (**число**), дату старту (**три числа**), версію для запуску (один з трьох варіантів: **"поточна"**, **"попередня"**, **"остання"**. Інші варіанти не довзоляються) і ім'я юзера (**рядок**). Обов'язковий параметр --- ім'я юзера, без нього програму запускати не можна. Якщо дату не вказано, то програма не повинна писати дату в кінці. Всі помилки потрібно виводити червоним кольором. Ось ці змінні треба ініціалізувати через меню:   ``` username = "" delay = 0 start_year = None start_month = None start_day = None version = "поточна" ``` Приклад роботи програми: ![](https://i.imgur.com/FIG8rjZ.gif) :::