From 73f530d37c0991505c1cf8152ebca2a191e9c7f5 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Mon, 15 May 2023 22:05:29 +0300 Subject: [PATCH 01/14] wrote code for 1st task --- 1_if1.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/1_if1.py b/1_if1.py index be736084..97e8fdec 100644 --- a/1_if1.py +++ b/1_if1.py @@ -14,12 +14,23 @@ """ + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + def activity_by_age(age): + if 0 <= age <= 7: + return 'Вы в детском садике' + elif 7 < age <= 17: + return 'Вы учитесь в школе' + else: + return 'Вы в ВУЗе или работаете' + + age = abs(int(input('Введите ваш возраст: '))) + print(activity_by_age(age)) + if __name__ == "__main__": main() From 2135b82fd282e4fe4a7028e6af4a9cf6a6ad9723 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 16 May 2023 21:01:55 +0300 Subject: [PATCH 02/14] Completed 2nd task --- 2_if2.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/2_if2.py b/2_if2.py index 0f1644f3..cb2b06a6 100644 --- a/2_if2.py +++ b/2_if2.py @@ -15,12 +15,31 @@ """ + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + def check_strings(str1, str2): + if not isinstance(str1, str) or not isinstance(str2, str): + return 0 + + str1 = str1.strip().lower() + str2 = str2.strip().lower() + + if str1 == str2: + return 1 + elif str2 == 'learn': + return 3 + elif len(str1) > len(str2): + return 2 + + print(check_strings('hello', 777)) # 0 + print(check_strings('hello', 'hello')) # 1 + print(check_strings('hello', 'hell')) # 2 + print(check_strings('hi', 'learn')) # 3 + + if __name__ == "__main__": main() From ecac4dc8c34ac7781c93d1af3732ca0f77471920 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Wed, 17 May 2023 21:51:08 +0300 Subject: [PATCH 03/14] Completed 3rd task --- 3_for.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/3_for.py b/3_for.py index 5ca9f504..ead9260b 100644 --- a/3_for.py +++ b/3_for.py @@ -16,12 +16,41 @@ * Посчитать и вывести среднее количество продаж всех товаров """ + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + + 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 count_sum(items_list): + items_sum = 0 + for item in items_list: + items_sum += item + return items_sum + + phones_sum = 0 + for phone in phones: + phone['sum_sold'] = count_sum(phone['items_sold']) + phone_sold_avg = int(phone['sum_sold'] / len(phone['items_sold'])) + phones_sum += phone['sum_sold'] + print( + f"Суммарное количество продаж {phone['product']}: {phone['sum_sold']}") + print( + f"Среднее количество продаж {phone['product']}: {phone_sold_avg}", end='\n\n') + print(f"Всего телефонов продано: {phones_sum}") + phones_avg = int(phones_sum / len(phones)) + print(f"В среднем телефонов продано: {phones_avg}") + + if __name__ == "__main__": main() From 81cea113ba45a137a65aa8ef1b6411d5ff2f983a Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Wed, 17 May 2023 22:09:13 +0300 Subject: [PATCH 04/14] Completed 4th task --- 4_while1.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/4_while1.py b/4_while1.py index b5791517..35a78ef9 100644 --- a/4_while1.py +++ b/4_while1.py @@ -14,8 +14,10 @@ def hello_user(): """ Замените pass на ваш код """ - pass + while True: + if input('Как дела? \n') == 'Хорошо': + break + - if __name__ == "__main__": hello_user() From 106b4ccab2df2083a895354c49108c5a3d16e843 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Wed, 17 May 2023 23:01:11 +0300 Subject: [PATCH 05/14] Completed 5th task --- 5_while2.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/5_while2.py b/5_while2.py index 49012dfd..ea81df32 100644 --- a/5_while2.py +++ b/5_while2.py @@ -15,13 +15,22 @@ """ -questions_and_answers = {} +questions_and_answers = { + 'Как дела': 'Хорошо!', + 'Что делаешь': 'Программирую', + 'И все?': 'Ну, почти', + 'Ну и лошара': 'Да пошел ты' +} def ask_user(answers_dict): """ Замените pass на ваш код """ - pass + print('Введите вопрос: ') + while True: + question = input('Пользователь: ') + if answers_dict.get(question): + print(f"Программа: {answers_dict.get(question, '')}", end='\n\n') if __name__ == "__main__": ask_user(questions_and_answers) From c4f7a704999590f9cda4a6829adea76caccb6589 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Sat, 20 May 2023 17:39:19 +0300 Subject: [PATCH 06/14] Completed 6th task --- 6_exception1.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/6_exception1.py b/6_exception1.py index 3ea9d054..443778c4 100644 --- a/6_exception1.py +++ b/6_exception1.py @@ -14,7 +14,12 @@ def hello_user(): """ Замените pass на ваш код """ - pass + try: + while True: + if input('Как дела? \n') == 'Хорошо': + break + except KeyboardInterrupt: + print('Пока') if __name__ == "__main__": hello_user() From fdbd6962741405a80c1449458c8801f064a0f1d1 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Sat, 20 May 2023 18:36:32 +0300 Subject: [PATCH 07/14] Completed 7th task --- 7_exception2.py | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/7_exception2.py b/7_exception2.py index d4bd8a39..37de7d6b 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -13,16 +13,35 @@ """ -def discounted(price, discount, max_discount=20) +def discounted(price, discount, max_discount=20): """ Замените pass на ваш код """ - pass + + try: + price = abs(float(price)) + except (ValueError, TypeError): + return 'Цена должна быть числом' + try: + discount = abs(float(discount)) + except (ValueError, TypeError): + return 'Размер скидки должен быть числом' + try: + max_discount = abs(int(max_discount)) + except (ValueError, TypeError): + 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")) - print(discounted("100", "4.5")) - print(discounted("five", 5)) - print(discounted("сто", "десять")) - print(discounted(100.0, 5, "10")) + print("---", discounted(100, 2)) + print("---", discounted(100, "3")) + print("---", discounted("100", "4.5")) + print("---", discounted("five", 5)) + print("---", discounted("сто", "десять")) + print("---", discounted(100.0, 5, "10")) From 1a133ae31f1b13a6a6ae850294f217e11bada469 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 23 May 2023 00:43:23 +0300 Subject: [PATCH 08/14] added settings to hide tg bot token --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index af6d5026..358f2c9c 100644 --- a/.gitignore +++ b/.gitignore @@ -121,3 +121,6 @@ dmypy.json # Pyre type checker .pyre/ + +# Settings +settings.py \ No newline at end of file From 05ed68d8bf8a1f111aad4cd1f3e3a1d23095a159 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 23 May 2023 00:44:02 +0300 Subject: [PATCH 09/14] completed 8th task --- 8_ephem_bot.py | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 1cf9ea19..94de2656 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -14,20 +14,22 @@ """ import logging +import ephem, pprint from telegram.ext import Updater, CommandHandler, MessageHandler, Filters +import settings logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, filename='bot.log') -PROXY = { - 'proxy_url': 'socks5://t1.learn.python.ru:1080', - 'urllib3_proxy_kwargs': { - 'username': 'learn', - 'password': 'python' - } -} +# PROXY = { +# 'proxy_url': 'socks5://t1.learn.python.ru:1080', +# 'urllib3_proxy_kwargs': { +# 'username': 'learn', +# 'password': 'python' +# } +# } def greet_user(update, context): @@ -39,14 +41,44 @@ 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_constellation(update, context): + user_input = context.args[0].capitalize() + planet_name = { + 'Mercury': ephem.Mercury(), + 'Venus': ephem.Venus(), + 'Mars': ephem.Mars(), + 'Jupiter': ephem.Jupiter(), + 'Saturn': ephem.Saturn(), + 'Uranus': ephem.Uranus(), + 'Neptune': ephem.Neptune(), + 'Pluto': ephem.Pluto() + } + + try: + planet_name[user_input] + except KeyError: + if user_input == 'Earth': + update.message.reply_text('Earth is not in any constellation') + else: + update.message.reply_text(f'{user_input} is not a planet of solar system') + + planet_name[user_input].compute() + constellation_name = ephem.constellation(planet_name[user_input])[1] + # print(constellation_name, constellation_name[1]) + # constellation_name = update.message.text.split() + print(f'{planet_name[user_input].name} is currently in the constellation of {constellation_name}') + update.message.reply_text(f'{planet_name[user_input].name} is currently in the constellation of {constellation_name}') + 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(CommandHandler("planet", get_constellation)) dp.add_handler(MessageHandler(Filters.text, talk_to_me)) mybot.start_polling() From a6e9a6a42e6503f0d8188aa68b928ebcfe691c44 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 23 May 2023 00:49:30 +0300 Subject: [PATCH 10/14] moved func 'activity_by_age' out of main --- 1_if1.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/1_if1.py b/1_if1.py index 97e8fdec..e5e4fe1a 100644 --- a/1_if1.py +++ b/1_if1.py @@ -15,19 +15,16 @@ """ -def main(): - """ - Эта функция вызывается автоматически при запуске скрипта в консоли - В ней надо заменить pass на ваш код - """ - def activity_by_age(age): - if 0 <= age <= 7: - return 'Вы в детском садике' - elif 7 < age <= 17: - return 'Вы учитесь в школе' - else: - return 'Вы в ВУЗе или работаете' +def activity_by_age(age): + if 0 <= age <= 7: + return 'Вы в детском садике' + elif 7 < age <= 17: + return 'Вы учитесь в школе' + else: + return 'Вы в ВУЗе или работаете' + +def main(): age = abs(int(input('Введите ваш возраст: '))) print(activity_by_age(age)) From 4d6f8c8373ab0b94f819199296724a66c3c58dd2 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 23 May 2023 01:17:16 +0300 Subject: [PATCH 11/14] added else statement --- 2_if2.py | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/2_if2.py b/2_if2.py index cb2b06a6..8223b137 100644 --- a/2_if2.py +++ b/2_if2.py @@ -16,29 +16,34 @@ """ +def check_strings(str1, str2): + if not isinstance(str1, str) or not isinstance(str2, str): + return 0 + + str1 = str1.strip().lower() + str2 = str2.strip().lower() + + if str1 == str2: + return 1 + elif str2 == 'learn': + return 3 + elif len(str1) > len(str2): + return 2 + else: + return 'Вот это поворот' + + def main(): """ Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - def check_strings(str1, str2): - if not isinstance(str1, str) or not isinstance(str2, str): - return 0 - - str1 = str1.strip().lower() - str2 = str2.strip().lower() - - if str1 == str2: - return 1 - elif str2 == 'learn': - return 3 - elif len(str1) > len(str2): - return 2 print(check_strings('hello', 777)) # 0 print(check_strings('hello', 'hello')) # 1 print(check_strings('hello', 'hell')) # 2 print(check_strings('hi', 'learn')) # 3 + print(check_strings('hi', 'learning')) if __name__ == "__main__": From 79209f9c51d649dd87527ffabb09e8b4866a856b Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Tue, 23 May 2023 01:20:15 +0300 Subject: [PATCH 12/14] corrected grammar mistake --- 3_for.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3_for.py b/3_for.py index ead9260b..125cd166 100644 --- a/3_for.py +++ b/3_for.py @@ -44,9 +44,9 @@ def count_sum(items_list): phone_sold_avg = int(phone['sum_sold'] / len(phone['items_sold'])) phones_sum += phone['sum_sold'] print( - f"Суммарное количество продаж {phone['product']}: {phone['sum_sold']}") + f"Суммарный объем продаж {phone['product']}: {phone['sum_sold']}") print( - f"Среднее количество продаж {phone['product']}: {phone_sold_avg}", end='\n\n') + f"Средний объем продаж {phone['product']}: {phone_sold_avg}", end='\n\n') print(f"Всего телефонов продано: {phones_sum}") phones_avg = int(phones_sum / len(phones)) print(f"В среднем телефонов продано: {phones_avg}") From a1c78dc0bde41e3e53ac8596688078866de0b962 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Fri, 2 Jun 2023 14:05:57 +0300 Subject: [PATCH 13/14] got rid of 'main' func, adjusted if statement --- 1_if1.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/1_if1.py b/1_if1.py index e5e4fe1a..48d5ab8d 100644 --- a/1_if1.py +++ b/1_if1.py @@ -16,18 +16,14 @@ def activity_by_age(age): - if 0 <= age <= 7: + if age <= 7: return 'Вы в детском садике' - elif 7 < age <= 17: + elif age <= 17: return 'Вы учитесь в школе' else: return 'Вы в ВУЗе или работаете' -def main(): +if __name__ == "__main__": age = abs(int(input('Введите ваш возраст: '))) print(activity_by_age(age)) - - -if __name__ == "__main__": - main() From 6b30a1db3a9377e22311d34cffbed0a6148bc5a1 Mon Sep 17 00:00:00 2001 From: Maksim Smirnov Date: Fri, 2 Jun 2023 14:12:52 +0300 Subject: [PATCH 14/14] moved var 'planet_name' out of func --- 8_ephem_bot.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 94de2656..bd51c116 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -42,10 +42,8 @@ def talk_to_me(update, context): user_text = update.message.text print(user_text) update.message.reply_text(user_text) - -def get_constellation(update, context): - user_input = context.args[0].capitalize() - planet_name = { + +planet_name = { 'Mercury': ephem.Mercury(), 'Venus': ephem.Venus(), 'Mars': ephem.Mars(), @@ -56,6 +54,9 @@ def get_constellation(update, context): 'Pluto': ephem.Pluto() } +def get_constellation(update, context): + user_input = context.args[0].capitalize() + try: planet_name[user_input] except KeyError: