From cc50a9f52505e9ad186aaf96356355765f2d4605 Mon Sep 17 00:00:00 2001 From: Maxim Konoplew Date: Sat, 18 Feb 2023 10:36:26 +0300 Subject: [PATCH] My Homework2 --- 1_if1.py | 21 +++++++++++----- 2_if2.py | 27 +++++++++++++++----- 3_for.py | 31 +++++++++++++++++++---- 4_while1.py | 10 +++++--- 5_while2.py | 14 ++++++++--- 6_exception1.py | 18 ++++++++++---- 7_exception2.py | 31 ++++++++++++++++++++--- 8_ephem_bot.py | 65 +++++++++++++++++++++++-------------------------- 8 files changed, 149 insertions(+), 68 deletions(-) diff --git a/1_if1.py b/1_if1.py index be736084..9a2ebf04 100644 --- a/1_if1.py +++ b/1_if1.py @@ -4,22 +4,31 @@ Условный оператор: Возраст -* Попросить пользователя ввести возраст при помощи input и положить +* Попросить пользователя ввести возраст при помощи input и положить результат в переменную -* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: +* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: учиться в детском саду, школе, ВУЗе или работать -* Вызвать функцию, передав ей возраст пользователя и положить результат +* Вызвать функцию, передав ей возраст пользователя и положить результат работы функции в переменную * Вывести содержимое переменной на экран """ +a = int(input("Введите ваш возраст: ")) -def main(): + +def main(x): + if x <= 6: + return "Вы должны учиться в детском саду" + elif 7 <= x < 18: + return "Вы должны учиться в в школе" + else: + return "Вы должныучиться в ВУЗе или работать" """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + if __name__ == "__main__": - main() + b = main(a) + print(f"{a}, {b}") diff --git a/2_if2.py b/2_if2.py index 0f1644f3..6cadaa3d 100644 --- a/2_if2.py +++ b/2_if2.py @@ -5,22 +5,37 @@ Условный оператор: Сравнение строк * Написать функцию, которая принимает на вход две строки -* Проверить, является ли то, что передано функции, строками. +* Проверить, является ли то, что передано функции, строками. Если нет - вернуть 0 * Если строки одинаковые, вернуть 1 * Если строки разные и первая длиннее, вернуть 2 * Если строки разные и вторая строка 'learn', возвращает 3 -* Вызвать функцию несколько раз, передавая ей разные праметры +* Вызвать функцию несколько раз, передавая ей разные параметры и выводя на экран результаты """ +a = input("Введите первую строку: ") +b = input("Введите вторую строку: ") -def main(): + +def main(x, y): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + if isinstance(x, str) and isinstance(y, str): + if x == y: + return 1 + elif len(x) > len(y): + return 2 + elif y == "learn": + return 3 + else: + return 4 + else: + return 0 + + if __name__ == "__main__": - main() + c = main(a, b) +print(c) diff --git a/3_for.py b/3_for.py index 5ca9f504..e547b5cc 100644 --- a/3_for.py +++ b/3_for.py @@ -6,7 +6,7 @@ * Дан список словарей с данными по колличеству проданных телефонов [ - {'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]}, + {'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]}, {'product': 'Xiaomi Mi11', 'items_sold': [317, 267, 290, 431, 211, 354, 276, 526, 141, 453, 510, 316]}, {'product': 'Samsung Galaxy 21', 'items_sold': [343, 390, 238, 437, 214, 494, 441, 518, 212, 288, 272, 247]}, ] @@ -16,12 +16,33 @@ * Посчитать и вывести среднее количество продаж всех товаров """ -def main(): +a = [{'product': 'iPhone 12', 'items_sold': [363, 500, 224, 358, 480, 476, 470, 216, 270, 388, 312, 186]}, + {'product': 'Xiaomi Mi11', 'items_sold': [317, 267, 290, 431, 211, 354, 276, 526, 141, 453, 510, 316]}, + {'product': 'Samsung Galaxy 21', 'items_sold': [343, 390, 238, 437, 214, 494, 441, 518, 212, 288, 272, 247]}] + + +def main(d): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + list1 = [] + list2 = [] + for i in range(len(d)): + m1 = sum(d[i].get('items_sold')) + print(f"product {d[i].get('product')} количетсво продаж: {m1}") + list1.append(m1) + list2.append(len(d[i].get('items_sold'))) + m2 = sum(d[i].get('items_sold'))/len(d[i].get('items_sold')) + print(f"product {d[i].get('product')} среднее количество продаж: {int(m2)}") + else: + m3 = sum(list1) + print(f"Общее количество продаж: {m3}") + m4 = m3 / sum(list2) + print(f"Cреднее количество продаж всех товаров: {int(m4)}") + + if __name__ == "__main__": - main() + b = main(a) + + diff --git a/4_while1.py b/4_while1.py index b5791517..201d2f38 100644 --- a/4_while1.py +++ b/4_while1.py @@ -4,9 +4,9 @@ Цикл while: hello_user -* Напишите функцию hello_user(), которая с помощью функции input() спрашивает +* Напишите функцию hello_user(), которая с помощью функции input() спрашивает пользователя “Как дела?”, пока он не ответит “Хорошо” - + """ @@ -14,8 +14,10 @@ def hello_user(): """ Замените pass на ваш код """ - pass + a = input("Как дела? ") + while a != "Хорошо": + a = input("Как дела? ") + - if __name__ == "__main__": hello_user() diff --git a/5_while2.py b/5_while2.py index 49012dfd..6cc81b05 100644 --- a/5_while2.py +++ b/5_while2.py @@ -12,16 +12,22 @@ Пользователь: Что делаешь? Программа: Программирую - + """ -questions_and_answers = {} +questions_and_answers = {"Как дела?": "Хорошо!", "Что делаешь?": "Программирую"} + def ask_user(answers_dict): """ Замените pass на ваш код """ - pass - + a = input("Пользователь: ") + while a not in answers_dict: + a = input("Пользователь: ") + else: + print(f"Программа: {answers_dict.get(a)}") + + if __name__ == "__main__": ask_user(questions_and_answers) diff --git a/6_exception1.py b/6_exception1.py index 3ea9d054..bed2a712 100644 --- a/6_exception1.py +++ b/6_exception1.py @@ -4,17 +4,25 @@ Исключения: KeyboardInterrupt -* Перепишите функцию hello_user() из задания while1, чтобы она - перехватывала KeyboardInterrupt, писала пользователю "Пока!" +* Перепишите функцию hello_user() из задания while1, чтобы она + перехватывала KeyboardInterrupt, писала пользователю "Пока!" и завершала работу при помощи оператора break - + """ + def hello_user(): """ Замените pass на ваш код """ - pass - + try: + while True: + a = input("Как дела? ") + if a == "Хорошо": + print("Пока!") + except KeyboardInterrupt: + print("Пока!") + + if __name__ == "__main__": hello_user() diff --git a/7_exception2.py b/7_exception2.py index d4bd8a39..f69a96fd 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -10,15 +10,38 @@ * Первые два нужно приводить к вещественному числу при помощи float(), а третий - к целому при помощи int() и перехватывать исключения ValueError и TypeError, если приведение типов не сработало. - + """ -def discounted(price, discount, max_discount=20) + +def discounted(price, discount, max_discount=20): + """ Замените pass на ваш код """ - pass - + try: + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Слишком большая максимальная скидка') + if discount >= max_discount: + return price + else: + return price - (price * discount / 100) + except (ValueError, TypeError): + try: + price = float(price) + discount = float(discount) + if max_discount not in [int, float]: + max_discount = int(max_discount) + return discounted(price, discount, max_discount) + else: + return discounted(price, discount) + except (ValueError, TypeError): + return "Ошибка" + + if __name__ == "__main__": print(discounted(100, 2)) print(discounted(100, "3")) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 1cf9ea19..339595e2 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -1,57 +1,54 @@ -""" -Домашнее задание №1 - -Использование библиотек: ephem - -* Установите модуль ephem -* Добавьте в бота команду /planet, которая будет принимать на вход - название планеты на английском, например /planet Mars -* В функции-обработчике команды из update.message.text получите - название планеты (подсказка: используйте .split()) -* При помощи условного оператора if и ephem.constellation научите - бота отвечать, в каком созвездии сегодня находится планета. - -""" import logging - from telegram.ext import Updater, CommandHandler, MessageHandler, Filters -logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', - level=logging.INFO, - filename='bot.log') +import settings +import ephem -PROXY = { - 'proxy_url': 'socks5://t1.learn.python.ru:1080', - 'urllib3_proxy_kwargs': { - 'username': 'learn', - 'password': 'python' - } -} - +logging.basicConfig(filename="bot.log", level = logging.INFO) def greet_user(update, context): - text = 'Вызван /start' - print(text) - update.message.reply_text(text) - + print('Вызван /start') + update.message.reply_text('Привет пользователь') def talk_to_me(update, context): - user_text = update.message.text + user_text = update.message.text print(user_text) - update.message.reply_text(text) + p = ["Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"] + if user_text in p: + update.message.reply_text("Введите дату") + b = update.message.text + print(b) + if user_text == "Mercury": + f = ephem.Mercury(b) + elif user_text == "Venus": + f = ephem.Venus(b) + elif user_text == "Mars": + f = ephem.Mars(b) + elif user_text == "Jupiter": + f = ephem.Jupiter(b) + elif user_text == "Saturn": + f = ephem.Saturn(b) + elif user_text == "Uranus": + f = ephem.Uranus(b) + elif user_text == "Neptune": + f = ephem.Neptune(b) + constellation = ephem.constellation(f) + update.message.reply_text(constellation) + else: + update.message.reply_text(user_text) def main(): - mybot = Updater("КЛЮЧ, КОТОРЫЙ НАМ ВЫДАЛ BotFather", request_kwargs=PROXY, use_context=True) + mybot = Updater(settings.API_KEY, use_context=True) dp = mybot.dispatcher dp.add_handler(CommandHandler("start", greet_user)) dp.add_handler(MessageHandler(Filters.text, talk_to_me)) + logging.info("Бот стартовал") mybot.start_polling() mybot.idle() - if __name__ == "__main__": main()