Skip to content

Instantly share code, notes, and snippets.

@Ruthenus
Created December 19, 2024 19:36
Show Gist options
  • Save Ruthenus/b57132cc01d53a2e17227d81ad6489c2 to your computer and use it in GitHub Desktop.
Save Ruthenus/b57132cc01d53a2e17227d81ad6489c2 to your computer and use it in GitHub Desktop.
Week 3 Homework in IT STEP Academy (conditions tasks)
# Задачі на if-else, if-elif-else
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ II.1\n")
# Ввести три числа і знайти найменше серед них.
try:
number_one = float(input("Введіть перше число: "))
number_two = float(input("Введіть друге число: "))
number_three = float(input("Введіть третє число: "))
minimum = number_one
if minimum > number_two:
minimum = number_two
if minimum > number_three:
minimum = number_three
if number_one == number_two == number_three:
print("Усі числа рівні між собою!")
elif number_one == number_two == minimum:
print("Перші два числа рівні між собою та менші третього!")
elif number_two == number_three == minimum:
print("Останні два числа рівні між собою та менші першого!")
elif number_one == number_three == minimum:
print("Перше та третє число найменші.")
elif minimum == number_one:
print("Очевидно, перше число найменше серед трьох чисел!")
elif minimum == number_two:
print("Саме друге число найменше!")
else:
print("Отже, трєтє число і є найменше.")
except ValueError:
print("ERROR: введено не число!")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ II.3\n")
# Вводиться ціле число (не більше 4 розрядів!). Визначити кількість
# цифр у ньому.
# Цілі числа бувають від'ємними, тому візьмемо за модулем.
number = abs(int(float(input("Введіть число: "))))
if 0 <= number <= 9:
print("Це число 1-го розряду — має 1 цифру.")
elif 10 <= number <= 99:
print("Це число 2-го розряду — має 2 цифри.")
elif 100 <= number <= 999:
print("Це число 3-го розряду — містить 3 цифри.")
elif 1000 <= number <= 9999:
print("Це число 4-го розряду — містить аж 4 цифри.")
else:
print("ВІДМОВА У СПРАЦЮВАННІ")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ II.4\n")
# Користувач задає координати верхнього лівого та нижнього правого
# кута прямокутника, а також координати точки (X, Y). Перевірити, чи
# належить точка цьому прямокутнику.
text = "Будь ласка, введіть через кому з пробілом "
text += "\nкоординати протилежних вершин прямокутника та довільної точки "
text += "на площині. \nПеревіримо, чи належить ця точка прямокутнику."
print(text)
# РОЗВ'ЯЗОК У РАЗІ БУДЬ-ЯКИХ ПРОТИЛЕЖНИХ КУТІВ ПРЯМОКУТНИКА
try:
coordinates = input("X1, Y1, X2, Y2, X, Y: ")
x1, y1, x2, y2, x, y = map(float, coordinates.split(", "))
# Python. Довідник програміста/Марк Лутц; пер. з англ. І.В. Красікова.
# – Київ.: "Науковий світ", 2024. – С. 50, 167.
if x1 != x2 and y1 != y2:
if (
# введено координати вершин : нижня ліва, верхня права або
(x1 <= x <= x2 and y1 <= y <= y2)
or
# верхня права, нижня ліва або
(x2 <= x <= x1 and y2 <= y <= y1)
or
# нижня права, верхня ліва або
(x2 <= x <= x1 and y1 <= y <= y2)
or
# верхня ліва, нижня права.
(x1 <= x <= x2 and y2 <= y <= y1)
):
print(f"Точка ({x}, {y}) належить прямокутнику.")
if (x == x1 and y == y1) or (x == x2 and y == y2):
print("Понад те, ця точка є вершиною!")
# Тут можна продовжити, чи точка знаходиться на стороні
# прямокутника. Але про це в наступній задачі.
else:
print(f"Точка ({x}, {y}) знаходиться поза прямокутником!")
else:
print("Це навіть не чотирикутник! Це пряма або точка!")
except ValueError:
print("ПОМИЛКА ВВЕДЕННЯ КООРДИНАТ. ПЕРЕПОЧИНЬТЕ!")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ II.5\n")
# Визначити, чи паралельна пряма лінія осі ординат чи осі абсцисс,
# якщо пряма задана двома точками.
print("Координати ввести раціональними числами через кому з пробілом!")
try:
coordinates_point_one = input("Введіть координати першої точки: ")
x1, y1 = map(float, coordinates_point_one.split(", "))
coordinates_point_two = input("Введіть координати другої точки: ")
x2, y2 = map(float, coordinates_point_two.split(", "))
if x1 != x2 or y1 != y2:
answer = "Це пряма лінія..."
if x1 == x2:
answer += " Ця пряма паралельна осі ординат."
print(answer)
elif y1 == y2:
answer += " Ця пряма паралельна осі абсцис."
print(answer)
else:
print(answer)
else:
print("Це точка!!!")
except ValueError:
print("ПОМИЛКА ВВЕДЕННЯ КООРДИНАТ. ВИ НАЧЕБТО ПЕРЕПОЧИЛИ!")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ II.6\n")
# Ввести з клавіатури шестизначний номер трамвайного (або
# тролейбусного) квитка і визначити, чи є він щасливим (сума трьох
# перших цифр дорівнює сумі трьох останніх).
try:
ticket = input("Номер квитка? ")
if len(ticket) == 6:
first_3_sum = int(ticket[0]) + int(ticket[1]) + int(ticket[2])
last_3_sum = int(ticket[-3]) + int(ticket[-2]) + int(ticket[-1])
if first_3_sum == last_3_sum:
print("Щасливий квиток!")
else:
print("Квиток підроблено!!!")
except ValueError:
print("Може, це QR-код?")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# Задачі на match-case
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ III.I\n")
# Реалізувати калькулятор. Вводяться 2 будь-яких дійсних числа.
# Виводиться меню з пунктами для виконання операцій: додавання,
# віднімання, множення, ділення, залишок від ділення.
# Має бути перевірка ділення на 0.
try:
operand_1 = float(input("Введіть перший операнд: "))
# Виводиться меню
print("\tДодати — натисність +\n\tВідняти — натисніть -")
print("\tПомножити — натисніть *\n\tПоділити – натисніть /")
print("\tДізнатися залишок від цілочисленного ділення — натисніть %")
operator = str(input("Введіть символ операції: "))
operand_2 = float(input("Введіть другий операнд: "))
match operator:
case "+":
print(operand_1 + operand_2)
case "-":
print(operand_1 - operand_2)
case "*":
print(operand_1 * operand_2)
case "/":
print(operand_1 / operand_2)
case "%":
print(operand_1 % operand_2)
case _:
print("Недопустимий оператор!")
except ValueError:
print("FATAL ERROR")
except ZeroDivisionError:
print("НЕСКІНЧЕННІСТЬ")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# Задачі на тернарний оператор
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ IV.I\n")
# Ввести число і визначити, чи є воно парним.
number = int(float(input("Визначити число парне чи непарне: ")))
answer = "Парне!" if number % 2 == 0 else "Непарне!"
print(answer)
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ IV.3\n")
# Ввести число і визначити, чи кратне воно 3, 5 та 7 одночасно.
number = int(float(input("Визначити чи кратне число 3, 5 і 7 одночасно: ")))
answer = "Так, кратне!" if number % 105 == 0 else "Ні, не кратне!"
print(answer)
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ IV.4\n")
# Ввести з клавіатури п’ятизначне число і визначити, чи є воно
# паліндромом. Наприклад, число 12321 — це паліндром, а 12345 — ні.
number = str(input("Придумайте, будь ласка, п'ятизначне число: "))
answer = "О, паліндром!" if number == number[::-1] else "Нічого незвичайного."
print(answer)
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ IV.5\n")
# Перевірити, чи має введене число дробову частину.
number = float(input("Введіть будь-яке дійсне число: "))
answer = "Дробове!" if number != int(number) else "Ціле!"
print(answer)
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# Задачі із зірочкою
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ VI.1\n")
# Користувач вводить з клавіатури час початку та завершення
# телефонної розмови. Порахувати вартість розмови, якщо вартість
# хвилини 15 копійок.
try:
print("\tСпілкуйся вільно, живи мобільно!")
print("Формат введення часу – 24-годинний, через двокрапку: ГГ:ХХ")
start_time = input("Введіть час початку телефонної розмови: ")
finish_time = input("Введіть час завершення телефонної розмови: ")
# На жаль, програма не враховує число, місяць, рік...
start_hour, start_minute = map(int, start_time.split(":"))
finish_hour, finish_minute = map(int, finish_time.split(":"))
if 0 <= start_hour <= 23 and 0 <= finish_hour <= 23:
if 0 <= start_minute <= 59 and 0 <= finish_minute <= 59:
start_minutes = start_hour*60 + start_minute
finish_minutes = finish_hour*60 + finish_minute
# Якщо розмова триває впродовж тієї ж самої доби:
if finish_hour > start_hour:
tryvalist = finish_minutes - start_minutes
print("\tРозмовляєш більше доби? Переходь на новий тариф!")
elif finish_hour == start_hour and finish_minute > start_minute:
tryvalist = finish_minutes - start_minutes
# Якщо розмова переходить на наступну добу, але не більше,
# то варто врахувати кількість хвилин у добі:
elif finish_hour == start_hour and finish_minute < start_minute:
tryvalist = finish_minutes + 1440 - start_minutes
# телефонні розмови тривалістю доба і більше не розглядаємо!
elif finish_hour == start_hour and finish_minute == start_minute:
tryvalist = 0
print("Акція! Розмова менше хвилини не тарифікується!")
else:
tryvalist = finish_minutes + 1440 - start_minutes
print("\tЗа 30 копійок на хвилину друга доба безкоштовно!")
else:
print("Помилка! Перевір хвилини, чи від 00 до 59.")
else:
print("Помилка! Перевір години, чи від 00 до 23.")
taryf = 0.15 # ₴
vartist = tryvalist * taryf
if vartist > 1:
vartist_hrn = int(vartist)
vartist_kop = round((vartist-vartist_hrn) * 100)
print(f"Вартість вашої розмови усього лиш {vartist_hrn} грн." +
f" {vartist_kop} коп.")
elif vartist == 1: # а такого не буде з чинним тарифом
print("За одну гривню небувала якість зв'язку!")
else:
vartist_kop = round(vartist*100)
print(f"Вартість вашої розмови {vartist_kop} коп.")
except:
print("ПОМИЛКА МЕРЕЖІ")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ VI.2\n")
# Ввести будь-яку дату (день, місяць, рік) і перевірити коректність
# введених значень. Вивести дату наступного дня.
try: # перевірка коректності починається тут!
date = input("Введіть дату за зразком: 19 грудня 2024: ").split()
# Виокремлюємо день, перший етап перевірки коректності дати:
day = int(date[0])
if day < 1 or day > 31:
day = False
print("Згадайте, скільки днів у місяці.")
# Виокремлюємо місяць, другий етап перевірки коректності дати.
# Користувач має право дещо помилитися, наприклад написавши
# місяць у називному відмінку або з великої літери:
mounth = date[1][0:3].upper()
months_30 = ("КВІ", "ЧЕР", "ВЕР", "ЛИС")
months_31 = ("СІЧ", "БЕР", "ТРА", "ЛИП", "СЕР", "ЖОВ", "ГРУ")
if mounth not in (months_30 + months_31) and mounth != "ЛЮТ":
mounth = False
print("Виправте, будь ласка, місяць!")
if day == 31 and mounth in months_30:
day = mounth = False
print("У цьому місяці 30 днів. Виправте число або місяць!")
if mounth == "ЛЮТ" and (day == 30 or day == 31):
day = mounth = False
print("У лютому 28 днів або, коли рік високосний, 29 днів.")
# Виокремлюємо рік, четвертий етап перевірки:
year = int(date[2])
# Дотримуючись християнського літочислення:
if year == 0:
calendar = False
print("Якогось нульового року не існує.")
if day == 25 and mounth == "ГРУ" and year >= 1:
print(
"""
Нова радість стала, яка не бувала,
над вертепом звізда ясна у весь світ засіяла.
Де Христос родився, з Діви воплотився,
як чоловік пеленами убого повився.
Пастушки з ягнятком перед тим дитятком
на колінця припадають, Царя-Бога вихваляють.
Ой Ти, Царю, Царю, Небесний Владарю,
даруй літа щасливії сего дому господарю.
Сего дому господарю і сій господині,
Даруй літа щасливії нашій славній Україні.
"""
)
if day == 24 and mounth == "СЕР" and year > 1991:
print(f"\n\tВільній Україні {year - 1991}!\n")
if year != 0:
print("Виберіть календар, натиснувши відповідну клавішу: ")
baza = "\tюліанський 1, григоріанський 2, новоюліанський 3: "
calendar = int(input(baza))
if calendar not in {1, 2, 3}:
calendar = False
print("Значення відсутнє в базі. Перегорніть календар.")
# Алгоритм визначення високосного року в юліанському календарі:
if calendar == 1:
if year % 4 == 0:
leap_year = True
print("Рік переступний.")
else:
print("Рік звичайний.")
# Алгоритм визначення високосного року в григоріанському календарі:
if calendar == 2:
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
leap_year = True
print("Рік переступний.")
else:
print("Рік звичайний.")
# Алгоритм визначення високосного року в новоюліанському календарі:
if calendar == 3:
if (year % 4 == 0 and year % 100 != 0) or (
year % 900 == 200 or year % 900 == 600
):
leap_year = True
print("Рік переступний.")
else:
print("Рік звичайний.")
# Нарешті висновок про правильність введеної дати:
if day != False and mounth != False and calendar != False:
# next_day = True # Завтра буде завтра.
today = " ".join([str(day), mounth]) # допоміжна дата
print("Така дата є в календарі.")
# "А сегодня в завтрашний день не все могут смотреть.
# Вернее, смотреть могут не только лишь все,
# мало кто может это делать." (видатний філософ сучасності)
match today:
case "31 СІЧ":
next_day = "1 лютого"
case "28 ЛЮТ":
next_day = "29 лютого" if leap_year else "1 березня"
case "29 ЛЮТ":
next_day = "1 березня"
case "31 БЕР":
next_day = "1 квітня"
case "30 КВІ":
next_day = "1 травня"
case "31 ТРА":
next_day = "1 червня"
case "30 ЧЕР":
next_day = "1 липня"
case "31 ЛИП":
next_day = "1 серпня"
case "23 СЕР":
next_day = "День незалежності України, 24 серпня"
case "31 СЕР":
next_day = "1 вересня"
case "30 ВЕР":
next_day = "1 жовтня"
case "31 ЖОВ":
next_day = "1 листопада"
case "30 ЛИС":
next_day = "1 грудня"
case "24 ГРУ":
next_day = "Різдво Христове, 25 грудня"
case "31 ГРУ":
year += 1
if year == 0:
year = 1
next_day = "1 січня"
case _:
day += 1
mounth = "січня" if mounth == "СІЧ" else mounth
mounth = "лютого" if mounth == "ЛЮТ" else mounth
mounth = "березня" if mounth == "БЕР" else mounth
mounth = "квітня" if mounth == "КВІ" else mounth
mounth = "травня" if mounth == "ТРА" else mounth
mounth = "червня" if mounth == "ЧЕР" else mounth
mounth = "липня" if mounth == "ЛИП" else mounth
mounth = "серпня" if mounth == "СЕР" else mounth
mounth = "вересня" if mounth == "ВЕР" else mounth
mounth = "жовтня" if mounth == "ЖОВ" else mounth
mounth = "листопада" if mounth == "ЛИС" else mounth
mounth = "грудня" if mounth == "ГРУ" else mounth
# Довідник програміста Лутца, сторінка 50:
next_day = " ".join([str(day), mounth])
# Вічний календар. Ще б трохи... Отже, формуємо "завтрашню" дату!
next_day = " ".join(["Наступний день –", next_day])
if year > 1:
next_day = " ".join([next_day, str(year), "року Божого."])
elif year == 1:
next_day = " ".join([next_day,
"року Воплочення Господа нашого Ісуса Христа."])
elif year <= -1:
next_day = " ".join([next_day, str(abs(year)),
"року до Різдва Христового."])
print(next_day)
except:
print("Гарного дня!")
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
# Задачі на випадкові числа
# ПОЧАТОК КОДУ ЗАДАЧІ
print("\tЗАВДАННЯ V.1\n")
# Реалізувати програму «Мольфар-3000».
# Програма дає випадкову відповідь на запитання користувача
# з заздалегідь визначених варіантів.
import random
# Думки мольфара.
dumka_1 = """
Клановість, корупція, економічна відсталість та відсутність перспектив для
молоді спонукають представників поневолених народів шукати розраду в
радикальному ісламі та шляхах, що ведуть від російської імперії."""
dumka_2 = """
Козацька нація спокійно спостерігає за ритуальними танцями матрьошечників на
кордонах."""
dumka_3 = """
Російський кролик вже в шлунку в удава вважає Сі, тому поспішати не варто."""
dumka_4 = """
Серед можливих сценаріїв – або переговори щодо нової обов’язкової ядерної
угоди, або, у разі їхнього провалу, застосування рішучих військових
заходів."""
dumka_5 = """
У білоруських виправних колоніях значно подорожчають послуги кімнат для
тривалих побачень."""
dumka_6 = """
Подорожчання алкоголю вже заплановано правительством рф на три роки
наперед."""
dumka_7 = """
На росії до кінця року очікується дефіцит техніки і товарів (особливо на
основі напівпровідників)."""
# Мольфар так просто не промовить.
gaslo = input("? ")
if gaslo == "Лемберг! Лемберг!":
gaslo = input("Говорить Великий Львів. ")
# Мольфар формує пророцтво.
dumky = [dumka_1, dumka_2, dumka_3, dumka_4, dumka_5, dumka_6, dumka_7]
# Мольфар продовжує мовчати.
if gaslo == "Кіт у Чоботях?":
izrek = random.choice(dumky)
print(izrek)
print("–" * 80 + "\n")
# КІНЕЦЬ КОДУ ЗАДАЧІ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment