# Завдання на умовний оператор
Умовний оператор: це конструкція
```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
Написати програму, яка чекає від юзера логін, потім чекає від юзера пароль, потім звіряє пару логін-пароль з збереженою в програмі і пише "Автентифікацію пройдено", якщо логін-пароль співпали.
Якщо не співпали, то пише
- "Немає такого юзера", якщо логін не співпав
- "Пароль неправильний", якщо пароль не співпав
і повторює кроки з початку.
Всі помилки потрібно виводити червоним кольором.

:::
Завдання можна ускладнити тим, що після трьох невдалих спроб програма завершується і автентифікація не відбувається (блокування).
## Приклад 3. Текстове меню (`textmenu.py`)
:::info
Уявіть що у вас є **складна** програма у якої **складний** спосіб запуску. Тому при запуску програми вам треба показати меню користувачу. Меню виглядає так:
- 1) старт
- 2) вказати час затримки
- 3) вказати дату старту
- 4) вибрати версію програми
- 5) вказати ім'я юзера
Всього програма ініціалізує кілька чисел: ім'я юзера, який запускає програму (**рядок**), затримку при запуску в секундах (**число**), дату старту (**три числа**), версію для запуску (один з трьох варіантів: **"поточна"**, **"попередня"**, **"остання"**. Інші варіанти не довзоляються) і ім'я юзера (**рядок**).
Обов'язковий параметр --- ім'я юзера, без нього програму запускати не можна. Якщо дату не вказано, то програма не повинна писати дату в кінці.
Всі помилки потрібно виводити червоним кольором.
Ось ці змінні треба ініціалізувати через меню:
```
username = ""
delay = 0
start_year = None
start_month = None
start_day = None
version = "поточна"
```
Приклад роботи програми:

:::