diff --git a/1_if1.py b/1_if1.py index be736084..108ae92c 100644 --- a/1_if1.py +++ b/1_if1.py @@ -4,22 +4,44 @@ Условный оператор: Возраст -* Попросить пользователя ввести возраст при помощи input и положить +* Попросить пользователя ввести возраст при помощи input и положить результат в переменную -* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: +* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: учиться в детском саду, школе, ВУЗе или работать -* Вызвать функцию, передав ей возраст пользователя и положить результат +* Вызвать функцию, передав ей возраст пользователя и положить результат работы функции в переменную * Вывести содержимое переменной на экран """ +def distribute_career(age): + if age < 1.5: + print('Ты совсем еще маленький') + return + elif 1.5 <= age <= 7: + print('Ходить в детский сад') + return + elif 7 < age <= 18: + print('Учиться в школе') + return + elif 18 < age <= 23: + print('Учиться в ВУЗе') + return + elif 23 < age <= 70: + print('Пора работать') + return + else: + print('Пора уже на пенсию') + return + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + user_age = int(input('Введите ваш возраст: ')) + + distribute_career(user_age) if __name__ == "__main__": main() diff --git a/2_if2.py b/2_if2.py index 0f1644f3..79e1b8f0 100644 --- a/2_if2.py +++ b/2_if2.py @@ -5,22 +5,35 @@ Условный оператор: Сравнение строк * Написать функцию, которая принимает на вход две строки -* Проверить, является ли то, что передано функции, строками. +* Проверить, является ли то, что передано функции, строками. Если нет - вернуть 0 * Если строки одинаковые, вернуть 1 * Если строки разные и первая длиннее, вернуть 2 * Если строки разные и вторая строка 'learn', возвращает 3 -* Вызвать функцию несколько раз, передавая ей разные праметры +* Вызвать функцию несколько раз, передавая ей разные праметры и выводя на экран результаты """ +def check_string(first_string, second_string): + if not isinstance(first_string, str) or not isinstance(second_string, str): + return 0 + elif first_string == second_string: + return 1 + elif second_string == 'learn': + return 3 + elif len(first_string) > len(second_string): + return 2 + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + print(check_string('python', 2)) + print(check_string('python', 'python')) + print(check_string('python', 'js')) + print(check_string('python', 'learn')) + if __name__ == "__main__": main() diff --git a/3_for.py b/3_for.py index 5ca9f504..df6adb97 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,35 @@ * Посчитать и вывести среднее количество продаж всех товаров """ +phones = [ + {'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 total_sold_each_item(products): + return [{product['product']: sum(product['items_sold'])} for product in products] + +def total_sold_all_item(products): + return sum([sum(product['items_sold']) for product in products]) + +def average_sold_each_item(products): + return [{product['product']: sum(product['items_sold']) / len(product['items_sold'])} for product in products] + +def average_sold_all_item(products): + all_summ = total_sold_all_item(products) + return all_summ / len(sum([product['items_sold'] for product in products], [])) + + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + print(total_sold_each_item(phones)) + print(total_sold_all_item(phones)) + print(average_sold_each_item(phones)) + print(average_sold_all_item(phones)) + if __name__ == "__main__": main() diff --git a/4_while1.py b/4_while1.py index b5791517..9c26f302 100644 --- a/4_while1.py +++ b/4_while1.py @@ -4,18 +4,19 @@ Цикл while: hello_user -* Напишите функцию hello_user(), которая с помощью функции input() спрашивает +* Напишите функцию hello_user(), которая с помощью функции input() спрашивает пользователя “Как дела?”, пока он не ответит “Хорошо” - -""" +""" def hello_user(): """ Замените pass на ваш код """ - pass + answer = '' + while answer != 'Хорошо': + answer = input('Как дела? ') + - if __name__ == "__main__": hello_user() diff --git a/5_while2.py b/5_while2.py index 49012dfd..a4e62e87 100644 --- a/5_while2.py +++ b/5_while2.py @@ -12,16 +12,27 @@ Пользователь: Что делаешь? Программа: Программирую - + """ -questions_and_answers = {} +questions_and_answers = { + "Как дела?": "Хорошо!", + "Что делаешь?": "Программирую", + "Как успехи?": "Потихоньку вникаю", + "Трудно": "Пока нет)", + } def ask_user(answers_dict): """ Замените pass на ваш код """ - pass - + while True: + question = input('Введите вопрос: ') + answer = questions_and_answers.get(question) + if answer is not None: + print(answer) + else: + print('Нет подходящего ответа на данный вопроса') + if __name__ == "__main__": ask_user(questions_and_answers) diff --git a/6_exception1.py b/6_exception1.py index 3ea9d054..a6b5cda3 100644 --- a/6_exception1.py +++ b/6_exception1.py @@ -4,17 +4,23 @@ Исключения: KeyboardInterrupt -* Перепишите функцию hello_user() из задания while1, чтобы она - перехватывала KeyboardInterrupt, писала пользователю "Пока!" +* Перепишите функцию hello_user() из задания while1, чтобы она + перехватывала KeyboardInterrupt, писала пользователю "Пока!" и завершала работу при помощи оператора break - + """ def hello_user(): """ Замените pass на ваш код """ - pass - + answer = '' + while answer != 'Хорошо': + try: + answer = input('Как дела? ') + except KeyboardInterrupt: + print('Пока!') + break + if __name__ == "__main__": hello_user() diff --git a/7_exception2.py b/7_exception2.py index d4bd8a39..cded39b0 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -10,15 +10,31 @@ * Первые два нужно приводить к вещественному числу при помощи float(), а третий - к целому при помощи int() и перехватывать исключения ValueError и TypeError, если приведение типов не сработало. - + """ -def discounted(price, discount, max_discount=20) +def discounted(price, discount, max_discount=20): """ Замените pass на ваш код """ - pass - + try: + price = abs(float(price)) + discount = abs(float(discount)) + max_discount = abs(int(max_discount)) + except TypeError: + print('Ошибка, передан не верный тип!') + return + except ValueError: + print('Ошибка, переданы не верные данные!') + return + + if max_discount >= 100: + raise ValueError('Слишком большая максимальная скидка') + if discount >= max_discount: + return price + else: + return price - (price * discount / 100) + 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..bf7d7c1c 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -16,6 +16,10 @@ from telegram.ext import Updater, CommandHandler, MessageHandler, Filters +from datetime import date + +import ephem + logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, filename='bot.log') @@ -39,14 +43,31 @@ def greet_user(update, context): def talk_to_me(update, context): user_text = update.message.text print(user_text) - update.message.reply_text(text) + update.message.reply_text(user_text) + +def get_planet_location(update, context): + text_message = update.message.text.split() + date_today = date.today().strftime("%Y/%m/%d") + + if len(text_message) < 2: + return update.message.reply_text('Не указана планета.') + + get_attribute = getattr(ephem, text_message[1], None) + + if get_attribute is None: + return update.message.reply_text('Допущена ошибка вводе планеты.') + + planet = get_attribute(date_today) + constellation = ephem.constellation(planet) + update.message.reply_text(', '.join(constellation)) def main(): mybot = Updater("КЛЮЧ, КОТОРЫЙ НАМ ВЫДАЛ BotFather", request_kwargs=PROXY, use_context=True) dp = mybot.dispatcher dp.add_handler(CommandHandler("start", greet_user)) + dp.add_handler(CommandHandler("planet", get_planet_location)) dp.add_handler(MessageHandler(Filters.text, talk_to_me)) mybot.start_polling()