From aa7ea9e5121cff4d47147a82859e7d1d06157485 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Fri, 26 Jan 2024 16:54:41 +0300 Subject: [PATCH] initial commit --- chekout_menu.py | 46 +++++++++++++++++ delivery_with_email_send.py | 100 ++++++++++++++++++++++++++++++++++++ quiz copy.py | 73 ++++++++++++++++++++++++++ quiz.py | 36 +++++++++++++ simplecalc.py | 9 ++++ 5 files changed, 264 insertions(+) create mode 100644 chekout_menu.py create mode 100644 delivery_with_email_send.py create mode 100644 quiz copy.py create mode 100644 quiz.py create mode 100644 simplecalc.py diff --git a/chekout_menu.py b/chekout_menu.py new file mode 100644 index 0000000..fcad9b1 --- /dev/null +++ b/chekout_menu.py @@ -0,0 +1,46 @@ +goods = { + "пицца": 250, + "роллы": 300, + "чипсы": 100, + "чай": 50, +} + +menu = [*zip(range(1, len(goods) + 1), *zip(*goods.items()))] +selection = {i: name for i, name, *_ in menu} +cart = {} + + +def show_menu(): + print("Меню:") + for i, name, price in menu: + print(f"{i} - {name} {price} руб.") + print(f"{menu[-1][0] + 1} - выход\n") + + +def show_cart(): + print("Ваша корзина:") + total = 0 + for name, count in cart.items(): + pos_sum = goods[name] * count + print(f"{name} - {count} шт. - {pos_sum} руб.") + total += pos_sum + print(" - - - - - - ") + print(f"Итого: {total} руб.\n") + + +def ask_user(): + show_menu() + i = int(input("Ваш выбор: ")) + while not 0 < i <= len(menu) + 1: + show_menu() + i = int(input("Ваш выбор: ")) + if i <= len(menu): + return selection[i] + + +print("Добро пожаловать в сервис заказа еды") +for name in iter(ask_user, None): + cart.setdefault(name, 0) + cart[name] += 1 + print() + show_cart() diff --git a/delivery_with_email_send.py b/delivery_with_email_send.py new file mode 100644 index 0000000..d9cf7a0 --- /dev/null +++ b/delivery_with_email_send.py @@ -0,0 +1,100 @@ +import smtplib + + +def send_email(from_addr, to_addr, subject, text, encode="utf-8"): + passwd = "**********" + server = "smtp.yandex.ru" + port = 587 + charset = f"Content-Type: text/plain; charset={encode}" + mime = "MIME-Version: 1.0" + body = "\r\n".join( + ( + f"From: {from_addr}", + f"To: {to_addr}", + f"Subject: {subject}", + mime, + charset, + "", + text, + ) + ) + + try: + smtp = smtplib.SMTP(server, port) + smtp.starttls() + smtp.ehlo() + smtp.login(from_addr, passwd) + smtp.sendmail(from_addr, to_addr, body.encode(encode)) + except smtplib.SMTPException as err: + print("Что - то пошло не так...") + raise err + finally: + smtp.quit() + + +goods = { + "пицца": 250, + "роллы": 300, + "чипсы": 100, + "чай": 50, +} + +menu = [*zip(range(1, len(goods) + 1), *zip(*goods.items()))] +selection = {i: name for i, name, *_ in menu} +cart = {} + + +def show_menu(): + print("Меню:") + for i, name, price in menu: + print(f"{i} - {name} {price} руб.") + print(f"{menu[-1][0] + 1} - выход\n") + + +def show_cart(): + print("Ваша корзина:") + total = 0 + for name, count in cart.items(): + pos_sum = goods[name] * count + print(f"{name} - {count} шт. - {pos_sum} руб.") + total += pos_sum + print(" - - - - - - ") + print(f"Итого: {total} руб.\n") + + +def ask_user(): + show_menu() + i = int(input("Ваш выбор: ")) + while not 0 < i <= len(menu) + 1: + show_menu() + i = int(input("Ваш выбор: ")) + if i <= len(menu): + return selection[i] + + +def get_order_text(): + s = f"Адрес клиента: {input('Введите Ваш адрес: ')}\n" + s += "Заказ клиента:\n" + total = 0 + for name, count in cart.items(): + pos_sum = goods[name] * count + s += f"{name} - {count} шт. - {pos_sum} руб.\n" + total += pos_sum + s += " - - - - - - \n" + s += f"Итого: {total} руб." + return s + + +print("Добро пожаловать в сервис заказа еды") +for name in iter(ask_user, None): + cart.setdefault(name, 0) + cart[name] += 1 + print() + show_cart() + +if len(cart) > 0: + from_addr = "my_app@yandex.ru" + to_addr = "super_courier@gmail.com" + subject = "Заказ от клиента" + text = get_order_text() + send_email(from_addr, to_addr, subject, text) diff --git a/quiz copy.py b/quiz copy.py new file mode 100644 index 0000000..c866e2f --- /dev/null +++ b/quiz copy.py @@ -0,0 +1,73 @@ +import random + +passed, score, count = 0, 0, 5 + +questions = ( + ("В каком году закончилась Великая Отечественная война?", "1945", 5), + ("Как называется треугольник у которого все стороны равны?", "равносторонний", 8), + ( + "Как называется процесс синтеза углеводов из неорганических веществ за счёт энергии солнца?", + "фотосинтез", + 15, + ), + ( + """В известной русской пословице упомянуто некое средство передвижения, а современный аналог этой пословицы звучит так: "Что из НЕЕ удалено, то пропало". Назовите ЕЕ.""", + "корзина", + 2, + ), + ("Огурец относится к группе бобовых или тыквенных растений?", "тыквенных ", 10), + ("Хлопчатник — трава или куст?", "куст", 7), + ("Продолжить поговорку: «Куда иголка, туда и …»", "нитка", 10), + ("Гидроскопичность — это способность поглощать влагу или пыль?", "влагу", 8), + ("Как звали мать Гамлета из трагедии Уильяма Шекспира?", "гертруда", 2), + ( + "Какой слой атмосферы находится ближе к Земле: стратосфера или тропосфера?", + "тропосфера", + 6, + ), + ( + "Какое слово было заимствовано английским языком из русского в 1957 году?", + "спутник", + 7, + ), + ( + "Какое слово, услышанное от отца‑политика, мальчик в рассказе В. В. Набокова «Лебеда» понял так: «сборища, на которых, вероятно, все во фраках»?", + "фракция", + 3, + ), + ("Она расскажет вам о любви ценой собственной жизни. Кто она?", "Ромашка", 7), + ( + "Стоит село, всё заселено, по утрам петухи поют, а люди не встают.", + "кладбище", + 5, + ), + ( + "Воимчики поют, сухо дерево везут; заехал в ухаб, не выехать никак.", + "похороны", + 4, + ), +) + +sample = random.sample(questions, count) +total_score = sum((*zip(*sample),)[2]) +need = int(total_score * 2 / 3) + +print("Добро пожаловать на викторину") +print(f"Викторина состоит из {count} вопросов, нужно набрать не менее {need} баллов") + +for question, q_answer, q_score in sample: + print("- - - - - - - - - - - -\n") + print(f"Вопрос: \n{question}\n") + otv = input("Ваш ответ: ") + if otv.strip().lower() == q_answer.lower(): + print(f"Верно, вы набрали {q_score} баллов") + passed += 1 + score += q_score + else: + print("Не верно") + +print("- - - - - - - - - - - -\n") +print( + f"Вы верно ответили на {passed} вопросов и набрали {score} из {total_score} баллов." +) +print(score >= need and "Вы восхитительны!" or "В следующий раз повезет!") diff --git a/quiz.py b/quiz.py new file mode 100644 index 0000000..504b49a --- /dev/null +++ b/quiz.py @@ -0,0 +1,36 @@ +import random + +passed, score, count = 0, 0, random.randint(3, 4) + +questions = ( + ("В каком году закончилась Великая Отечественная война?", "1945", 5), + ("Как называется треугольник у которого все стороны равны?", "равносторонний", 8), + ("Огурец относится к группе бобовых или тыквенных растений?", "тыквенных ", 10), + ("Хлопчатник — трава или куст?", "куст", 7), + ("Продолжить поговорку: «Куда иголка, туда и …»", "нитка", 10), + ("Гидроскопичность — это способность поглощать влагу или пыль?", "влагу", 8), + ("Как звали мать Гамлета из трагедии Уильяма Шекспира?", "гертруда", 2), + ("Она расскажет вам о любви ценой собственной жизни. Кто она?", "ромашка", 7), +) + +sample = random.sample(questions, count) +total_score = sum((*zip(*sample),)[2]) +need = int(total_score * 2 / 3) + +print("Добро пожаловать на викторину") +print(f"Викторина состоит из {count} вопросов, нужно набрать не менее {need} баллов") + +for question, q_answer, q_score in sample: + print("- - - - - - - - - - - -\n") + print(f"Вопрос: \n{question}\n") + otv = input("Ваш ответ: ") + if otv.strip().lower() == q_answer.lower(): + print(f"Верно, вы набрали {q_score} баллов") + passed += 1 + score += q_score + else: + print("Не верно") + +print("- - - - - - - - - - - -\n") +print(f"Вы ответили на {passed} вопросов и набрали {score} из {total_score} баллов.") +print(score >= need and "Вы восхитительны!" or "В следующий раз повезет!") diff --git a/simplecalc.py b/simplecalc.py new file mode 100644 index 0000000..4f1cbca --- /dev/null +++ b/simplecalc.py @@ -0,0 +1,9 @@ +print("Добро пожаловать!") +print("Это программа калькулятор") +a = int(input("Введите 1-е число: ")) +b = int(input("Введите 2-е число: ")) +print("Сумма равна:", a + b, sep="\n") +print("Разность равна:", a - b, sep="\n") +print("Произведение равно:", a * b, sep="\n") +print("Масса в граммах:", int(input("Введите массу в кг: ")) * 1000) +print("Скорость в м/с:", round(int(input("Введите скорость в км/час: ")) / 3.6, 2))