From 7791d837d9b1cfbcbbd2bcdb54d2895e309bb686 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Wed, 22 May 2024 23:02:16 +0300 Subject: [PATCH 01/10] Added homework 1_if1.py --- 1_if1.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/1_if1.py b/1_if1.py index be736084..ff5410e4 100644 --- a/1_if1.py +++ b/1_if1.py @@ -19,7 +19,16 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + age = int(input('Укажите ваш возраст: ')) + if age <= 6: + return f'Вам нужно в детский сад походить ещё {6 - age}' + elif 6 < age <= 18: + return 'Вам нужно учиться в школе' + elif 18 < age <= 25: + return 'Вам нужно учиться в ВУЗе' + elif 25 < age <= 65: + return f'Вам нужно работать ещё {65 - age}' + return 'Поздравляем, Вы пенсионер!' if __name__ == "__main__": - main() + print(main()) From c8cd5f6c721c429fd12a04e8e4f15fc846d9479c Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Thu, 23 May 2024 12:01:53 +0300 Subject: [PATCH 02/10] Added homework from the second to the fifth --- 2_if2.py | 15 +++++++++++---- 3_for.py | 13 ++++++++++++- 4_while1.py | 5 ++++- 5_while2.py | 12 +++++++----- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/2_if2.py b/2_if2.py index 0f1644f3..bfd8437c 100644 --- a/2_if2.py +++ b/2_if2.py @@ -15,12 +15,19 @@ """ -def main(): +def main(line1, line2): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + if line1 == str(line1) and line2 == str(line2): + if line1 == line2: + return 1 + elif line1 != line2 and len(line1) > len(line2): + return 2 + elif line1 != line2 and line2 == 'Learn': + return 3 + return 0 + if __name__ == "__main__": - main() + print(main('Hello', 'Learn')) diff --git a/3_for.py b/3_for.py index 5ca9f504..a06f38aa 100644 --- a/3_for.py +++ b/3_for.py @@ -21,7 +21,18 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + lists = [ + {'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]}, + ] + total_num_sales = 0 + for items in lists: + total_num_sales += sum(items['items_sold']) + print(f"Для товара {items['product']}: суммарное количество продаж {sum(items['items_sold'])},\ + среднее количество продаж {round(sum(items['items_sold']) / 12)}") + print() + print(f"Для всех товаров суммарное количество продаж {total_num_sales}, среднее количество продаж {round(total_num_sales / 12)}") if __name__ == "__main__": main() diff --git a/4_while1.py b/4_while1.py index b5791517..fafd3e1d 100644 --- a/4_while1.py +++ b/4_while1.py @@ -14,7 +14,10 @@ def hello_user(): """ Замените pass на ваш код """ - pass + question = input('Как дела? ') + while question != 'Хорошо': + question = input('Как дела? ') + print('Вот и хорошо!') if __name__ == "__main__": diff --git a/5_while2.py b/5_while2.py index 49012dfd..07f292e7 100644 --- a/5_while2.py +++ b/5_while2.py @@ -15,13 +15,15 @@ """ -questions_and_answers = {} - def ask_user(answers_dict): """ Замените pass на ваш код """ - pass - + questions_and_answers = {"Как дела?": "Хорошо!", "Что делаешь?": "Программирую", "Какой у тебя любимый цвет?": "Зелёный"} + while answers_dict != '0': + print(questions_and_answers.get(answers_dict, 'На такой вопрос ответа нет, попробуй задать другой вопрос')) + answers_dict = input("О чём ты хочешь ещё спросить у меня? Если вопросов нет набери 0 ") + if __name__ == "__main__": - ask_user(questions_and_answers) + answers_dict = input("Что ты хочешь спросить у меня? ") + ask_user(answers_dict) From 8f9646db8d4594ce98265a96f38f72f4534c34ae Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Fri, 24 May 2024 16:12:06 +0300 Subject: [PATCH 03/10] changed 2_if2.py --- 2_if2.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/2_if2.py b/2_if2.py index bfd8437c..97cdc275 100644 --- a/2_if2.py +++ b/2_if2.py @@ -20,14 +20,16 @@ def main(line1, line2): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - if line1 == str(line1) and line2 == str(line2): - if line1 == line2: - return 1 - elif line1 != line2 and len(line1) > len(line2): - return 2 - elif line1 != line2 and line2 == 'Learn': - return 3 - return 0 + if isinstance(line1, str) == 0 or isinstance(line2, str) == 0: + return 0 + elif line1 == line2: + return 1 + elif len(line1) > len(line2): + return 2 + elif line1 != line2 and line2 == 'Learn': + return 3 + return 'Условий для обработки таких строк не задано' + if __name__ == "__main__": - print(main('Hello', 'Learn')) + print(main('123', 'Learnar')) From aad872c9b4676d699bbdde1c62cdec0fbb16a9a5 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Sun, 26 May 2024 23:21:25 +0300 Subject: [PATCH 04/10] Changed task 5 --- 5_while2.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/5_while2.py b/5_while2.py index 07f292e7..726226ea 100644 --- a/5_while2.py +++ b/5_while2.py @@ -14,16 +14,24 @@ Программа: Программирую """ +questions_and_answers = { + "Как дела?": "Хорошо!", + "Что делаешь?": "Программирую", + "Какой твой любимый цвет?": "Зелёный"} -def ask_user(answers_dict): - """ - Замените pass на ваш код - """ - questions_and_answers = {"Как дела?": "Хорошо!", "Что делаешь?": "Программирую", "Какой у тебя любимый цвет?": "Зелёный"} - while answers_dict != '0': - print(questions_and_answers.get(answers_dict, 'На такой вопрос ответа нет, попробуй задать другой вопрос')) - answers_dict = input("О чём ты хочешь ещё спросить у меня? Если вопросов нет набери 0 ") - +def question_and_answer(): + + def ask_user(): + user_asks = input('Пользователь: ') + answer = questions_and_answers.get(user_asks, 'Задай другой вопрос, на этот нет ответа') + return answer + + while True: + print('Программа: Что ты хочешь спросить у меня?') + answer = ask_user() + print(f'Программа:{answer}') + if int(input('Программа: Если вопросов больше нет нажми 0, если есть 1: ')) == 0: + break + if __name__ == "__main__": - answers_dict = input("Что ты хочешь спросить у меня? ") - ask_user(answers_dict) + question_and_answer() From 4c0479f0cde52f6a69bc8a3d94731a2f0ac44fcc Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Mon, 27 May 2024 14:00:56 +0300 Subject: [PATCH 05/10] did the 6th task --- 6_exception1.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/6_exception1.py b/6_exception1.py index 3ea9d054..6a1cbf62 100644 --- a/6_exception1.py +++ b/6_exception1.py @@ -14,7 +14,15 @@ def hello_user(): """ Замените pass на ваш код """ - pass + + while True: + try: + if input('Как дела? ') == 'Хорошо': + print('Ну хорошо!') + break + except KeyboardInterrupt: + print('Пока!') + break if __name__ == "__main__": hello_user() From 09baa0e81fe52e2ad43287c9d2d21613605bb6e2 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Mon, 27 May 2024 14:10:12 +0300 Subject: [PATCH 06/10] Did 7th task --- 7_exception2.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/7_exception2.py b/7_exception2.py index d4bd8a39..8d671765 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -13,11 +13,24 @@ """ -def discounted(price, discount, max_discount=20) +def discounted(price, discount, max_discount=20): """ Замените pass на ваш код """ - pass + try: + price = float(abs(price)) + discount = float(abs(discount)) + max_discount = int(abs(max_discount)) + if max_discount >= 100: + raise ValueError('Слишком большая максимальная скидка') + if discount >= max_discount: + return price + else: + return f'{price - (price * discount / 100)}' + except ValueError: + return 'Некорректное значение' + except TypeError: + return 'Значение недопустимого типа' if __name__ == "__main__": print(discounted(100, 2)) From fc65a21cc259b0290a96d809b86632be51b1ec72 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Mon, 27 May 2024 18:01:55 +0300 Subject: [PATCH 07/10] Did 8th task --- .gitignore | 3 +++ 8_ephem_bot.py | 59 ++++++++++++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index af6d5026..7d35647c 100644 --- a/.gitignore +++ b/.gitignore @@ -121,3 +121,6 @@ dmypy.json # Pyre type checker .pyre/ + +# For task 8_ephem_bot.py +settings.py diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 1cf9ea19..ba90ee67 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -12,46 +12,57 @@ бота отвечать, в каком созвездии сегодня находится планета. """ -import logging - +import logging, ephem, settings +from datetime import date from telegram.ext import Updater, CommandHandler, MessageHandler, Filters - logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, filename='bot.log') +def greet_user(update, context): + print('Вызван /start') + print(update.message.reply_text('Здравствуй пользователь!')) -PROXY = { - 'proxy_url': 'socks5://t1.learn.python.ru:1080', - 'urllib3_proxy_kwargs': { - 'username': 'learn', - 'password': 'python' - } -} - - -def greet_user(update, context): - text = 'Вызван /start' - print(text) - update.message.reply_text(text) - +def name_planet(update, context): + print('Вызван /planet') + print(update.message.reply_text('Введите название планеты на английском -\ + Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto')) def talk_to_me(update, context): user_text = update.message.text print(user_text) - update.message.reply_text(text) - + + planets = {"Mercury": ephem.Mercury("2024/05/27"), + "Venus": ephem.Venus("2024/05/27"), + "Mars" : ephem.Mars("2024/05/27"), + "Saturn": ephem.Saturn("2024/05/27"), + "Uranus": ephem.Uranus("2024/05/27"), + "Neptune": ephem.Neptune("2024/05/27"), + "Pluto": ephem.Pluto("2024/05/27") + } + + if user_text in planets: # если сообщение от пользователя название планеты из словаря + planet_input = user_text.lower().capitalize() + print(planet_input) + if planet_input in planets: + const = ephem.constellation(planets[planet_input]) + update.message.reply_text(f"Планета: {planet_input}") + update.message.reply_text(f"Сегодня 27.05.2024 в созвездии: {const[1]}") + print(const) + else: + update.message.reply_text(f'Сам ты {user_text}') # если сообщение от пользователя не содержит планету def main(): - mybot = Updater("КЛЮЧ, КОТОРЫЙ НАМ ВЫДАЛ BotFather", request_kwargs=PROXY, use_context=True) - - dp = mybot.dispatcher + mybot = Updater(settings.API_KEY, use_context = True) + + dp = mybot.dispatcher dp.add_handler(CommandHandler("start", greet_user)) + dp.add_handler(CommandHandler("planet", name_planet)) dp.add_handler(MessageHandler(Filters.text, talk_to_me)) - + + logging.info("Bot started") mybot.start_polling() mybot.idle() - if __name__ == "__main__": main() From c87b6d5a41c785a88d0baae69f6e94286e67d285 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Tue, 28 May 2024 14:36:59 +0300 Subject: [PATCH 08/10] Changed 8th task about the bot --- 8_ephem_bot.py | 69 +++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index ba90ee67..af12a3ac 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -12,52 +12,63 @@ бота отвечать, в каком созвездии сегодня находится планета. """ -import logging, ephem, settings -from datetime import date +import logging +import ephem +import settings +import locale +from datetime import datetime from telegram.ext import Updater, CommandHandler, MessageHandler, Filters logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, filename='bot.log') -def greet_user(update, context): +planets = {"Mercury": ephem.Mercury, + "Venus": ephem.Venus, + "Mars" : ephem.Mars, + "Saturn": ephem.Saturn, + "Uranus": ephem.Uranus, + "Neptune": ephem.Neptune, + "Pluto": ephem.Pluto, + "Moon": ephem.Moon, + "Sun": ephem.Sun, + "Jupiter": ephem.Jupiter + } + +def greet_user(update, context): # update - это то, что поступило от пользователя Telegram. Context - это спец. штука с помощью которой мы можем изнутри функции отдавать команды боту print('Вызван /start') print(update.message.reply_text('Здравствуй пользователь!')) -def name_planet(update, context): +def planet_const(update, context): # вызов команды /planet print('Вызван /planet') - print(update.message.reply_text('Введите название планеты на английском -\ - Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto')) + update.message.reply_text("Введите название объекта Солнечной системы -\ + Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Moon, Sun") + +def get_constelletion(planet_name): # функция обрабатывает сообщение пользователя с названием планеты + locale.setlocale(locale.LC_TIME, 'ru_RU') + current_date = datetime.now().strftime('%d.%m.%Y %H:%M') # переменная для корректной работы с ephem + current_planet = planets[planet_name](current_date) + current_date = datetime.now().strftime('%A %d.%m.%Y %H:%M') # переменная с отображением дня недели на кириллице + print(current_planet, current_date, sep='\n') + return ephem.constellation(current_planet), current_date -def talk_to_me(update, context): +def talk_to_me(update, context): # функция принимает и распределяет все сообщения от пользователя user_text = update.message.text print(user_text) - - planets = {"Mercury": ephem.Mercury("2024/05/27"), - "Venus": ephem.Venus("2024/05/27"), - "Mars" : ephem.Mars("2024/05/27"), - "Saturn": ephem.Saturn("2024/05/27"), - "Uranus": ephem.Uranus("2024/05/27"), - "Neptune": ephem.Neptune("2024/05/27"), - "Pluto": ephem.Pluto("2024/05/27") - } - - if user_text in planets: # если сообщение от пользователя название планеты из словаря - planet_input = user_text.lower().capitalize() - print(planet_input) - if planet_input in planets: - const = ephem.constellation(planets[planet_input]) - update.message.reply_text(f"Планета: {planet_input}") - update.message.reply_text(f"Сегодня 27.05.2024 в созвездии: {const[1]}") - print(const) + if user_text.lower().capitalize() in planets: + planet_name = user_text + const, current_date = get_constelletion(planet_name) # получаем переменные из функции get_constelletion(planet_name) + update.message.reply_text(f"Сегодня: {current_date}") + update.message.reply_text(f"Планета {planet_name} в созвездии: {const[1]}") + print(const) else: - update.message.reply_text(f'Сам ты {user_text}') # если сообщение от пользователя не содержит планету - + update.message.reply_text(f"Хотите узнать про созвездия, нажмите: {'/planet'}") + def main(): mybot = Updater(settings.API_KEY, use_context = True) - dp = mybot.dispatcher + dp = mybot.dispatcher # в переменную dp кладём это, чтобы в дальнейшем не набирать длинное название dp.add_handler(CommandHandler("start", greet_user)) - dp.add_handler(CommandHandler("planet", name_planet)) + dp.add_handler(CommandHandler("planet", planet_const)) dp.add_handler(MessageHandler(Filters.text, talk_to_me)) logging.info("Bot started") From 89cb13d02da8cc1e5b5e722e98dbc3ecd93a2731 Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Tue, 28 May 2024 23:28:54 +0300 Subject: [PATCH 09/10] adjusting the 8_ephem_bot --- 8_ephem_bot.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index af12a3ac..52bdf3e9 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -21,6 +21,7 @@ logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, filename='bot.log') +locale.setlocale(locale.LC_TIME, 'ru_RU') # что бы генерировать кирилические дни недели planets = {"Mercury": ephem.Mercury, "Venus": ephem.Venus, @@ -36,7 +37,7 @@ def greet_user(update, context): # update - это то, что поступило от пользователя Telegram. Context - это спец. штука с помощью которой мы можем изнутри функции отдавать команды боту print('Вызван /start') - print(update.message.reply_text('Здравствуй пользователь!')) + update.message.reply_text('Здравствуй пользователь!') def planet_const(update, context): # вызов команды /planet print('Вызван /planet') @@ -44,22 +45,20 @@ def planet_const(update, context): # вызов команды /planet Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Moon, Sun") def get_constelletion(planet_name): # функция обрабатывает сообщение пользователя с названием планеты - locale.setlocale(locale.LC_TIME, 'ru_RU') current_date = datetime.now().strftime('%d.%m.%Y %H:%M') # переменная для корректной работы с ephem - current_planet = planets[planet_name](current_date) + current_planet = planets[planet_name](current_date) # переменная планеты с обработкой current_date = datetime.now().strftime('%A %d.%m.%Y %H:%M') # переменная с отображением дня недели на кириллице - print(current_planet, current_date, sep='\n') - return ephem.constellation(current_planet), current_date + return ephem.constellation(current_planet), current_date # функция возвращает созвездие и дату def talk_to_me(update, context): # функция принимает и распределяет все сообщения от пользователя user_text = update.message.text - print(user_text) - if user_text.lower().capitalize() in planets: - planet_name = user_text + print(user_text) + if user_text.lower().capitalize() in planets: # если текст сообщения от пользователя есть в словаре с планетами + planet_name = user_text # передаём в переменную текст сообщения const, current_date = get_constelletion(planet_name) # получаем переменные из функции get_constelletion(planet_name) - update.message.reply_text(f"Сегодня: {current_date}") - update.message.reply_text(f"Планета {planet_name} в созвездии: {const[1]}") - print(const) + update.message.reply_text(f"Сегодня: {current_date}") # вывод пользователю даты + update.message.reply_text(f"Планета {planet_name} в созвездии: {const[1]}") # вывод пользователю созвездия + print(const, current_date, sep='\n') # вывод в консоль созвездия, даты else: update.message.reply_text(f"Хотите узнать про созвездия, нажмите: {'/planet'}") From 7de9f28cfdee94f6c8b6d2ca40119db025cefe5f Mon Sep 17 00:00:00 2001 From: Cosmmoss Date: Tue, 28 May 2024 23:39:12 +0300 Subject: [PATCH 10/10] Adjusting the 8_ephem_bot. constellation --- 8_ephem_bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 52bdf3e9..366f8cf4 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -44,7 +44,7 @@ def planet_const(update, context): # вызов команды /planet update.message.reply_text("Введите название объекта Солнечной системы -\ Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Moon, Sun") -def get_constelletion(planet_name): # функция обрабатывает сообщение пользователя с названием планеты +def get_constellation(planet_name): # функция обрабатывает сообщение пользователя с названием планеты current_date = datetime.now().strftime('%d.%m.%Y %H:%M') # переменная для корректной работы с ephem current_planet = planets[planet_name](current_date) # переменная планеты с обработкой current_date = datetime.now().strftime('%A %d.%m.%Y %H:%M') # переменная с отображением дня недели на кириллице @@ -55,7 +55,7 @@ def talk_to_me(update, context): # функция принимает и рас print(user_text) if user_text.lower().capitalize() in planets: # если текст сообщения от пользователя есть в словаре с планетами planet_name = user_text # передаём в переменную текст сообщения - const, current_date = get_constelletion(planet_name) # получаем переменные из функции get_constelletion(planet_name) + const, current_date = get_constellation(planet_name) # получаем переменные из функции get_constelletion(planet_name) update.message.reply_text(f"Сегодня: {current_date}") # вывод пользователю даты update.message.reply_text(f"Планета {planet_name} в созвездии: {const[1]}") # вывод пользователю созвездия print(const, current_date, sep='\n') # вывод в консоль созвездия, даты