From 4d475286d94f836bce1218429033542c0ad57505 Mon Sep 17 00:00:00 2001 From: Mikhael Korneev Date: Tue, 23 Nov 2021 09:48:06 +0300 Subject: [PATCH 01/11] 1 --- .editorconfig | 22 ++++++++++++++++++++++ 1_if1.py | 28 ++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..17ed5407 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,22 @@ +# http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +charset = utf-8 + +[*.py] +max_line_length = 120 + +# Use 2 spaces for the HTML files +[*.html] +indent_size = 2 + +# Use 2 spaces for the js files +[*.js] +indent_size = 2 diff --git a/1_if1.py b/1_if1.py index be736084..194ddfa3 100644 --- a/1_if1.py +++ b/1_if1.py @@ -4,11 +4,11 @@ Условный оператор: Возраст -* Попросить пользователя ввести возраст при помощи input и положить +* Попросить пользователя ввести возраст при помощи input и положить результат в переменную -* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: +* Написать функцию, которая по возрасту определит, чем должен заниматься пользователь: учиться в детском саду, школе, ВУЗе или работать -* Вызвать функцию, передав ей возраст пользователя и положить результат +* Вызвать функцию, передав ей возраст пользователя и положить результат работы функции в переменную * Вывести содержимое переменной на экран @@ -19,7 +19,27 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass + start = input("Сколько вам полных лет? Введите число.") + user_age = int(start) + if 0 < user_age < 7: + print('Вы должны учиться в детском саду.') + elif 7 < user_age < 17: + print('Вы должны учиться в школе.') + elif 17 < user_age < 22: + print('Вы должны учиться в ВУЗе.') + elif 22 < user_age < 65: + print('Вы должны работать.') + else: + print('Вы или еще не родились, или уже на пенсии.') + + + + + + + + + if __name__ == "__main__": main() From 39e02b7a706821acd0efe9567e1d2292a58e7a1e Mon Sep 17 00:00:00 2001 From: kagort Date: Mon, 25 Nov 2024 17:32:43 +0300 Subject: [PATCH 02/11] 1 --- 2_if2.py | 6 +++--- 3_for.py | 14 ++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/2_if2.py b/2_if2.py index 0f1644f3..743ab777 100644 --- a/2_if2.py +++ b/2_if2.py @@ -5,12 +5,12 @@ Условный оператор: Сравнение строк * Написать функцию, которая принимает на вход две строки -* Проверить, является ли то, что передано функции, строками. +* Проверить, является ли то, что передано функции, строками. Если нет - вернуть 0 * Если строки одинаковые, вернуть 1 * Если строки разные и первая длиннее, вернуть 2 * Если строки разные и вторая строка 'learn', возвращает 3 -* Вызвать функцию несколько раз, передавая ей разные праметры +* Вызвать функцию несколько раз, передавая ей разные праметры и выводя на экран результаты """ @@ -21,6 +21,6 @@ def main(): В ней надо заменить pass на ваш код """ pass - + if __name__ == "__main__": main() diff --git a/3_for.py b/3_for.py index 5ca9f504..eee0c2b1 100644 --- a/3_for.py +++ b/3_for.py @@ -4,9 +4,9 @@ Цикл for: Продажи товаров -* Дан список словарей с данными по колличеству проданных телефонов +* Дан список словарей с данными по количеству проданных телефонов [ - {'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]}, ] @@ -21,7 +21,13 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass - + sales = [ + {'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]}, + ] + + + if __name__ == "__main__": main() From 5d15d0d632f828dddccc6245e113d317370d365b Mon Sep 17 00:00:00 2001 From: kagort Date: Tue, 26 Nov 2024 21:58:30 +0300 Subject: [PATCH 03/11] I entered a function into the code --- 1_if1.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/1_if1.py b/1_if1.py index 194ddfa3..06dec427 100644 --- a/1_if1.py +++ b/1_if1.py @@ -19,21 +19,19 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - start = input("Сколько вам полных лет? Введите число.") - user_age = int(start) - if 0 < user_age < 7: - print('Вы должны учиться в детском саду.') - elif 7 < user_age < 17: - print('Вы должны учиться в школе.') - elif 17 < user_age < 22: - print('Вы должны учиться в ВУЗе.') - elif 22 < user_age < 65: - print('Вы должны работать.') - else: - print('Вы или еще не родились, или уже на пенсии.') - - - +def check_age(user_age): + if 0 < user_age <7: + return 'Вы должны учиться в детском саду.' + elif 7 <= user_age < 17: + return 'Вы должны учиться в школе.' + elif 17 <= user_age < 22: + return 'Вы должны учиться в ВУЗе.' + elif 22 <= user_age < 65: + return 'Вы должны работать.' + else: + return 'Вы или еще не родились, или уже на пенсии.' +user_age = int(input('Сколько вам полных лет? Введите число.')) +print(check_age(user_age)) From 66252e382b14fe0c4ada44449fc5e79b6e3c4d1d Mon Sep 17 00:00:00 2001 From: kagort Date: Tue, 26 Nov 2024 22:36:32 +0300 Subject: [PATCH 04/11] I entered a function into the code --- 1_if1.py | 4 ---- 2_if2.py | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/1_if1.py b/1_if1.py index 06dec427..05908273 100644 --- a/1_if1.py +++ b/1_if1.py @@ -35,9 +35,5 @@ def check_age(user_age): - - - - if __name__ == "__main__": main() diff --git a/2_if2.py b/2_if2.py index 743ab777..629560e0 100644 --- a/2_if2.py +++ b/2_if2.py @@ -10,7 +10,7 @@ * Если строки одинаковые, вернуть 1 * Если строки разные и первая длиннее, вернуть 2 * Если строки разные и вторая строка 'learn', возвращает 3 -* Вызвать функцию несколько раз, передавая ей разные праметры +* Вызвать функцию несколько раз, передавая ей разные параметры и выводя на экран результаты """ @@ -20,7 +20,23 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - pass +def check_lines(line1, line2): + if not type(line1) == str or not type(line2) == str: + return 0 + elif line1 == line2: + return 1 + elif len(line1) > len(line2): + return 2 + elif line1 != line2 and line2 == 'learn': + return 3 + +print(check_lines("Bigwall", "Bigwall")) # 1 +print(check_lines("Bigwall", "wallBig")) # None +print(check_lines("learn", "learn")) # 1 +print(check_lines("Python", "learn")) # 3 +print(check_lines("longerstring", "short")) # 2 +print(check_lines(123, "str")) # 0 +print(check_lines("str", 123)) # 0 if __name__ == "__main__": main() From 28c29066267459efb8a8ea8911f5020252fde273 Mon Sep 17 00:00:00 2001 From: kagort Date: Wed, 27 Nov 2024 23:10:51 +0300 Subject: [PATCH 05/11] I entered a function into the code --- 3_for.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++----- 4_while1.py | 14 +++++++++---- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/3_for.py b/3_for.py index eee0c2b1..a6193d96 100644 --- a/3_for.py +++ b/3_for.py @@ -21,12 +21,62 @@ def main(): Эта функция вызывается автоматически при запуске скрипта в консоли В ней надо заменить pass на ваш код """ - sales = [ - {'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]}, - ] + sales_data_base = [ + {'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_sales(product_sold): #Функция суммирует продажи по продукту + item_sold_sum = 0 + for sale in product_sold: + item_sold_sum += sale + return item_sold_sum + def sales_avg(product_sold): #Функция суммирует средние продажи по продукту + total = 0 + for sale in product_sold: + total += sale + return total / len(product_sold) + + def total_sales_all (all_products): #Функция суммирует суммы продаж по продукту + total_sum = 0 + for item in all_products: + total_sum += total_sales(item['items_sold']) + return total_sum + def total_sales_avg (all_products): + total_sum = 0 + total_items = 0 + for item in all_products: + total_sum += sum(item['items_sold']) + total_items += len(item['items_sold']) + return total_sum / total_items + + + + # Cуммарноe количества продаж для каждого продукта + for item in sales_data_base: + product = item['product'] # Название товара + sales = item['items_sold'] # Список продаж + total = total_sales(sales) # Вызов функции с передачей списка продаж + print(f"Суммарное количество продаж для {product}: {total}") + + + + + #Cреднее количество продаж для каждого продукта + for item in sales_data_base: + product = item['product'] + sales = item['items_sold'] # Список продаж + avg = round(sales_avg(sales), 2) # Вызов функции для подсчёта среднего + print(f"Среднее количество продаж для {product}: {avg}") + + #Cуммарное количество продаж всех товаров + total_sales = total_sales_all(sales_data_base) + print(f'Общие продажи составляют {total_sales}') + + #Среднее количество продаж всех товаров + total_sales_average = total_sales_avg(sales_data_base) + print(f'Средние продажи по всей базе товаров составляют {total_sales_average}') if __name__ == "__main__": diff --git a/4_while1.py b/4_while1.py index b5791517..0dafd790 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,14 @@ def hello_user(): """ Замените pass на ваш код """ - pass + while True: + user_say = input('Как дела?') + if user_say == 'Хорошо': + print('Ничего хорошего!') + break + else: + print('Попробуем ещё раз?'.format(user_say)) + - if __name__ == "__main__": hello_user() From ab50f3a247b895fda02e75e9a256680bbacdf51f Mon Sep 17 00:00:00 2001 From: kagort Date: Wed, 27 Nov 2024 23:15:54 +0300 Subject: [PATCH 06/11] I add some comments --- 3_for.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/3_for.py b/3_for.py index a6193d96..4295e5f4 100644 --- a/3_for.py +++ b/3_for.py @@ -43,7 +43,7 @@ def total_sales_all (all_products): #Функция суммирует сумм for item in all_products: total_sum += total_sales(item['items_sold']) return total_sum - def total_sales_avg (all_products): + def total_sales_avg (all_products): #Функция считает средние продажи по базе total_sum = 0 total_items = 0 for item in all_products: @@ -61,13 +61,11 @@ def total_sales_avg (all_products): print(f"Суммарное количество продаж для {product}: {total}") - - #Cреднее количество продаж для каждого продукта for item in sales_data_base: product = item['product'] - sales = item['items_sold'] # Список продаж - avg = round(sales_avg(sales), 2) # Вызов функции для подсчёта среднего + sales = item['items_sold'] + avg = round(sales_avg(sales), 2) print(f"Среднее количество продаж для {product}: {avg}") #Cуммарное количество продаж всех товаров From 4414948758aecfb2a24b85dbc0db07a0600d4816 Mon Sep 17 00:00:00 2001 From: kagort Date: Thu, 28 Nov 2024 10:47:49 +0300 Subject: [PATCH 07/11] Done --- 5_while2.py | 19 +++++++++++++------ 6_exception1.py | 20 +++++++++++++++----- 7_exception2.py | 6 +++--- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/5_while2.py b/5_while2.py index 49012dfd..768ecee8 100644 --- a/5_while2.py +++ b/5_while2.py @@ -12,16 +12,23 @@ Пользователь: Что делаешь? Программа: Программирую - -""" -questions_and_answers = {} +""" +dic = {"Как дела?": "Хорошо!", "Что делаешь?": "Программирую", "Трудно?": "Очень!"} def ask_user(answers_dict): """ Замените pass на ваш код """ - pass - + + while True: + user_question = input("Пользователь:") + if user_question in dic: + print(f'Программа: {dic[user_question]}') + else: + print("Что за странные вопросы? У меня нет ответа.") + break + ask_user() if __name__ == "__main__": - ask_user(questions_and_answers) + ask_user(dic) + diff --git a/6_exception1.py b/6_exception1.py index 3ea9d054..23aec571 100644 --- a/6_exception1.py +++ b/6_exception1.py @@ -4,17 +4,27 @@ Исключения: KeyboardInterrupt -* Перепишите функцию hello_user() из задания while1, чтобы она - перехватывала KeyboardInterrupt, писала пользователю "Пока!" +* Перепишите функцию hello_user() из задания while1, чтобы она + перехватывала KeyboardInterrupt, писала пользователю "Пока!" и завершала работу при помощи оператора break - + """ def hello_user(): """ Замените pass на ваш код """ - pass - + try: + while True: + user_say = input('Как дела?') + if user_say == 'Хорошо': + print('Ничего хорошего!') + break + else: + print('Попробуем ещё раз?'.format(user_say)) + except KeyboardInterrupt: + print("Исполнение программы остановлено пользователем") + + if __name__ == "__main__": hello_user() diff --git a/7_exception2.py b/7_exception2.py index d4bd8a39..c7660df6 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -10,15 +10,15 @@ * Первые два нужно приводить к вещественному числу при помощи float(), а третий - к целому при помощи int() и перехватывать исключения ValueError и TypeError, если приведение типов не сработало. - + """ -def discounted(price, discount, max_discount=20) +def discounted(price, discount, max_discount=20): """ Замените pass на ваш код """ pass - + if __name__ == "__main__": print(discounted(100, 2)) print(discounted(100, "3")) From ef0db6523e04fbfa95bcb21578df645bf85f5ced Mon Sep 17 00:00:00 2001 From: kagort Date: Fri, 29 Nov 2024 20:55:02 +0300 Subject: [PATCH 08/11] The folder with drafts is added --- 7_exception2.py | 26 ++++++++++- drafts-homework/exceptions.py | 12 +++++ drafts-homework/for.py | 87 +++++++++++++++++++++++++++++++++++ drafts-homework/lesson_if.py | 46 ++++++++++++++++++ drafts-homework/main.py | 16 +++++++ drafts-homework/price.py | 12 +++++ drafts-homework/while.py | 12 +++++ 7 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 drafts-homework/exceptions.py create mode 100644 drafts-homework/for.py create mode 100644 drafts-homework/lesson_if.py create mode 100644 drafts-homework/main.py create mode 100644 drafts-homework/price.py create mode 100644 drafts-homework/while.py diff --git a/7_exception2.py b/7_exception2.py index c7660df6..4693714d 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -17,7 +17,31 @@ def discounted(price, discount, max_discount=20): """ Замените pass на ваш код """ - pass + stock = [ + {'name': 'iPhone 12', 'stock': 24, 'price': 65432, + 'discount': 25}, + {'name': 'Samsung Galaxy S21', 'stock': 8, 'price': 50000, + 'discount': 10}, + {'name': '', 'stock': 18, 'price': 10000, + 'discount': 10} + ] + + def discounted(price, discount, max_discount=20, phone_name=''): + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= max_discount: + return price + elif 'iphone' in phone_name.lower() or not phone_name: + return price + else: + return price - (price * discount / 100) + + for phone in stock: + phone['price_final'] = discounted(phone['price'], phone['discount'], phone_name=phone['name']) + print(stock) if __name__ == "__main__": print(discounted(100, 2)) diff --git a/drafts-homework/exceptions.py b/drafts-homework/exceptions.py new file mode 100644 index 00000000..60703288 --- /dev/null +++ b/drafts-homework/exceptions.py @@ -0,0 +1,12 @@ + +import random +def cutcake (people): + try: + z = 1/people + print(f'Каждый получит {z} пирога') + except (ZeroDivisionError, TypeError): + print('Не могу поделить') + +while True: + p = random.randint(1, 10) + cutcake(p) \ No newline at end of file diff --git a/drafts-homework/for.py b/drafts-homework/for.py new file mode 100644 index 00000000..84d56aec --- /dev/null +++ b/drafts-homework/for.py @@ -0,0 +1,87 @@ +''' +for number in range(3): + print(f'Номер{number}') + +for letter in 'Python': + print(letter.upper()) + +my_string = 'Привет , я учу Python !' +for word in my_string.split(): + print(f'Длина слова {word}: {len(word)}') + +student_score = [3, 5, 4, 4, 2] +avg_score = 0 +for score in student_score: + avg_score = avg_score + score +class_avg = avg_score / len(student_score) +print(class_avg) +''' + + + +stock = [ + {'name': 'iPhone 12', 'stock': 24, 'price': 65432, + 'discount': 25}, + {'name': 'Samsung Galaxy S21', 'stock': 8, 'price': 50000, + 'discount': 10}, + {'name': '', 'stock': 18, 'price': 10000, + 'discount': 10} +] +def discounted(price, discount, max_discount = 30, phone_name = ''): + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= max_discount: + return price + elif 'iphone' in phone_name.lower() or not phone_name: + return price + else: + return price - (price * discount / 100) + +for phone in stock: + phone['price_final'] = discounted(phone['price'], phone['discount'], phone_name = phone['name']) +print(stock) + + +classes = [ + {'name': '3А', 'scores': [3, 4, 4, 5, 2]}, + {'name': '3Б', 'scores': [5, 5, 3, 2, 2]}, + {'name': '3В', 'scores': [4, 5, 3, 5, 4]} +] + +def count_class_avg(student_scores): + scores_sum = 0 + for score in student_scores: + scores_sum += score + return scores_sum / (len(student_scores)) + +school_avg_sum = 0 +for one_class in classes: + class_avg = count_class_avg(one_class['scores']) + print(f'Средняя оценка класса {one_class["name"]}: {class_avg}') + school_avg_sum += class_avg +school_avg = round(school_avg_sum / len(classes), 2) +print(f'Средняя оценка по школе {school_avg}') + +def total_sales(product_sold): + # Функция для подсчёта суммарного количества продаж + item_sold_sum = 0 + for sale in product_sold: + item_sold_sum += sale + return item_sold_sum + +# Список данных +sales_data = [ + {'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]}, +] + +# Подсчёт и вывод суммарного количества продаж для каждого товара +for item in sales_data: + product = item['product'] # Название товара + sales = item['items_sold'] # Список продаж + total = total_sales(sales) # Вызов функции с передачей списка продаж + print(f"Суммарное количество продаж для {product}: {total}") diff --git a/drafts-homework/lesson_if.py b/drafts-homework/lesson_if.py new file mode 100644 index 00000000..43e00301 --- /dev/null +++ b/drafts-homework/lesson_if.py @@ -0,0 +1,46 @@ +balance = 100 +price = 50 +in_stock = 0 +print(bool(balance > price)) +print(bool(in_stock)) +if balance > price and in_stock: + print('Одобряем оплату покупки') +elif not in_stock: + print('Товара нет в наличии') +else: + print('Пожалуйста, пополните баланс') + +def check_weather(temperature): + if temperature < 0: + return 'На улице холодно' + elif 0 <= temperature <= 15: + return "На улице прохладно" + elif 16 <= temperature <= 29: + return 'На улице тепло' + elif 30 <= temperature: + return 'На улице жарко' + else: + return 'Не работает!' +print(check_weather(-10)) # На улице холодно +print(check_weather(15)) # На улице прохладно +print(check_weather(16)) # На улице тепло +print(check_weather(30)) # На улице жарко + +def discounted(price, discount, max_discount = 20, phone_name = ''): + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= max_discount: + return price + elif 'iphone' in phone_name.lower() or not phone_name: + return price + else: + return price - (price * discount / 100) +new_price = discounted(100000, 10, phone_name = 'iPhone 12') +print(new_price) +new_price = discounted(40000, 20, phone_name='Samsung Galaxy S21' ) +print(new_price) +new_price = discounted(5000, 20) # Здесь возникает вопрос. Почему в выводе скидка не считается? +print(new_price) diff --git a/drafts-homework/main.py b/drafts-homework/main.py new file mode 100644 index 00000000..5596b447 --- /dev/null +++ b/drafts-homework/main.py @@ -0,0 +1,16 @@ +# This is a sample Python script. + +# Press Shift+F10 to execute it or replace it with your code. +# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. + + +def print_hi(name): + # Use a breakpoint in the code line below to debug your script. + print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint. + + +# Press the green button in the gutter to run the script. +if __name__ == '__main__': + print_hi('PyCharm') + +# See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/drafts-homework/price.py b/drafts-homework/price.py new file mode 100644 index 00000000..94a7acdd --- /dev/null +++ b/drafts-homework/price.py @@ -0,0 +1,12 @@ +def discounted(price, discount, max_discount = 20): + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= 100: + price_with_discount = price + else: + price_with_discount = price - (price * discount / 100) + return price_with_discount +print(discounted(100, 5)) diff --git a/drafts-homework/while.py b/drafts-homework/while.py new file mode 100644 index 00000000..239a3c94 --- /dev/null +++ b/drafts-homework/while.py @@ -0,0 +1,12 @@ +x = 1 +while x < 5: + print(x) + x += 1 + +while True: + user_say = input("Скажи что-нибудь:") + if user_say == "Пока": + print('Ну, пока!') + break + else: + print('Сам ты {}'. format(user_say)) \ No newline at end of file From 168bdcaf96495de617f70f187e90a597f59156c8 Mon Sep 17 00:00:00 2001 From: kagort Date: Fri, 29 Nov 2024 23:50:25 +0300 Subject: [PATCH 09/11] _ --- 7_exception2.py | 65 ++++++++++++++++++++--------------- 8_ephem_bot.py | 4 +-- drafts-homework/exceptions.py | 51 +++++++++++++++++++++++++-- drafts-homework/modules.py | 18 ++++++++++ my_bot/bot.py | 25 ++++++++++++++ 5 files changed, 130 insertions(+), 33 deletions(-) create mode 100644 drafts-homework/modules.py create mode 100644 my_bot/bot.py diff --git a/7_exception2.py b/7_exception2.py index 4693714d..86384d0a 100644 --- a/7_exception2.py +++ b/7_exception2.py @@ -12,12 +12,7 @@ ValueError и TypeError, если приведение типов не сработало. """ - -def discounted(price, discount, max_discount=20): - """ - Замените pass на ваш код - """ - stock = [ +stock = [ {'name': 'iPhone 12', 'stock': 24, 'price': 65432, 'discount': 25}, {'name': 'Samsung Galaxy S21', 'stock': 8, 'price': 50000, @@ -26,27 +21,41 @@ def discounted(price, discount, max_discount=20): 'discount': 10} ] - def discounted(price, discount, max_discount=20, phone_name=''): - price = abs(price) - discount = abs(discount) - max_discount = abs(max_discount) - if max_discount >= 100: - raise ValueError('Максимальная скидка не должна быть больше 100') - if discount >= max_discount: - return price - elif 'iphone' in phone_name.lower() or not phone_name: - return price - else: - return price - (price * discount / 100) +def discounted(price, discount, max_discount=20, phone_name=''): + try: + price = float(price) + discount = float(discount) + max_discount = int(max_discount) + except(ValueError, TypeError): + print('Ошибка в типе аргумента') + return None + + + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= max_discount: + return price + elif 'iphone' in phone_name.lower() or not phone_name: + return price + else: + return price - (price * discount / 100) for phone in stock: - phone['price_final'] = discounted(phone['price'], phone['discount'], phone_name=phone['name']) - print(stock) - -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")) + price_final = discounted(phone['price'], phone['discount'], phone_name=phone('name')) + if price_final is not None: + phone['price_final'] = price_final + else: + print('Ошибка в расчетах') + +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")) + + + diff --git a/8_ephem_bot.py b/8_ephem_bot.py index 1cf9ea19..e63b38c2 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -12,9 +12,7 @@ бота отвечать, в каком созвездии сегодня находится планета. """ -import logging - -from telegram.ext import Updater, CommandHandler, MessageHandler, Filters +import ephem logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', level=logging.INFO, diff --git a/drafts-homework/exceptions.py b/drafts-homework/exceptions.py index 60703288..9c8ce82f 100644 --- a/drafts-homework/exceptions.py +++ b/drafts-homework/exceptions.py @@ -1,4 +1,4 @@ - +''' import random def cutcake (people): try: @@ -9,4 +9,51 @@ def cutcake (people): while True: p = random.randint(1, 10) - cutcake(p) \ No newline at end of file + cutcake(p) +''' + +stock = [ + {'name': 'iPhone 12', 'stock': 24, 'price': 65432, + 'discount': 25}, + {'name': 'Samsung Galaxy S21', 'stock': 8, 'price': 50000, + 'discount': 10}, + {'name': '', 'stock': 18, 'price': 10000, + 'discount': 10} + ] + +def discounted(price, discount, max_discount=20, phone_name=''): + try: + price = float(price) + discount = float(discount) + max_discount = int(max_discount) + except(ValueError, TypeError): + print('Ошибка в типе аргумента') + return None + + + price = abs(price) + discount = abs(discount) + max_discount = abs(max_discount) + if max_discount >= 100: + raise ValueError('Максимальная скидка не должна быть больше 100') + if discount >= max_discount: + return price + elif 'iphone' in phone_name.lower() or not phone_name: + return price + else: + return price - (price * discount / 100) + + for phone in stock: + price_final = discounted(phone['price'], phone['discount'], phone_name=phone('name')) + if price_final is not None: + phone['price_final'] = price_final + else: + print('Ошибка в расчетах') + +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")) + diff --git a/drafts-homework/modules.py b/drafts-homework/modules.py new file mode 100644 index 00000000..9341b909 --- /dev/null +++ b/drafts-homework/modules.py @@ -0,0 +1,18 @@ +''' +from collections import Counter + +phones = ['iPhone XS', 'Samsung Galaxy S10', 'Xiaomi S18', 'iPhone XS', 'iPhone XS'] +count = Counter(phones) +print(count['iPhone XS'], count['Hello']) + +text = 'Ехал Грека через реку, видит ГРека в реке рак.'.lower().replace(' ', '') + +count = Counter(text) +print(count) +''' + +import ephem +mars = ephem.Mars('2000/01/01') +const = ephem.constellation(mars) +print(const) + diff --git a/my_bot/bot.py b/my_bot/bot.py new file mode 100644 index 00000000..470403bd --- /dev/null +++ b/my_bot/bot.py @@ -0,0 +1,25 @@ +import logging +from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes +from telegram import Update +logging.basicConfig(filename = 'bot.log', level=logging.INFO) + +async def greet_user(update: Update, context: ContextTypes.DEFAULT_TYPE): + await update.message.reply_text('Привет!') + print('Вызван/start') + print(1/0) + print(update) + + +def main(): + mybot = ApplicationBuilder().token('7054240709:AAGrU_8F5UD5GO1nxgxDXBamrVFjKfbBGNs').build() + + + start_handler = CommandHandler('start', greet_user) + mybot.add_handler(start_handler) + + logging.info('Bot run') + mybot.run_polling() + +main() + + From 69f39dacafb1ea8d8abd301623c264fe8864d9fc Mon Sep 17 00:00:00 2001 From: kagort Date: Sat, 30 Nov 2024 00:40:00 +0300 Subject: [PATCH 10/11] _ --- my_bot/bot.py | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 my_bot/bot.py diff --git a/my_bot/bot.py b/my_bot/bot.py deleted file mode 100644 index 470403bd..00000000 --- a/my_bot/bot.py +++ /dev/null @@ -1,25 +0,0 @@ -import logging -from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes -from telegram import Update -logging.basicConfig(filename = 'bot.log', level=logging.INFO) - -async def greet_user(update: Update, context: ContextTypes.DEFAULT_TYPE): - await update.message.reply_text('Привет!') - print('Вызван/start') - print(1/0) - print(update) - - -def main(): - mybot = ApplicationBuilder().token('7054240709:AAGrU_8F5UD5GO1nxgxDXBamrVFjKfbBGNs').build() - - - start_handler = CommandHandler('start', greet_user) - mybot.add_handler(start_handler) - - logging.info('Bot run') - mybot.run_polling() - -main() - - From 37e2dd419342d1bd4de334ae219c80da704f8389 Mon Sep 17 00:00:00 2001 From: kagort Date: Sat, 30 Nov 2024 01:17:39 +0300 Subject: [PATCH 11/11] _ --- 8_ephem_bot.py | 90 ++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 39 deletions(-) diff --git a/8_ephem_bot.py b/8_ephem_bot.py index e63b38c2..0021e46b 100644 --- a/8_ephem_bot.py +++ b/8_ephem_bot.py @@ -1,55 +1,67 @@ -""" -Домашнее задание №1 - -Использование библиотек: ephem - -* Установите модуль ephem -* Добавьте в бота команду /planet, которая будет принимать на вход - название планеты на английском, например /planet Mars -* В функции-обработчике команды из update.message.text получите - название планеты (подсказка: используйте .split()) -* При помощи условного оператора if и ephem.constellation научите - бота отвечать, в каком созвездии сегодня находится планета. - -""" import ephem +import logging +import datetime +from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters +from telegram import Update -logging.basicConfig(format='%(name)s - %(levelname)s - %(message)s', - level=logging.INFO, - filename='bot.log') +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' - } -} +async def greet_user(update: Update, context: ContextTypes.DEFAULT_TYPE): + await update.message.reply_text('Привет! Введи название планеты на английском в таком формате: /planet Mars') + print('Вызван /start') + print(update) -def greet_user(update, context): - text = 'Вызван /start' +#дальше - GPT- coding, но осмысленный :) И вцелом приглось структуру немного поменять, т.к библиотека Python-telegram изменилась. Код из видео не работал +async def planet_info(update: Update, context: ContextTypes.DEFAULT_TYPE): + user_text = update.message.text + try: + # Разделяем команду и название планеты + command, planet_name = user_text.split(maxsplit=1) + except ValueError: + await update.message.reply_text("Пожалуйста, введите название планеты после команды /planet.") + return + + # Приводим название планеты к правильному формату + planet_name_capitalized = planet_name.capitalize() + + # Проверяем, существует ли планета в модуле ephem + if hasattr(ephem, planet_name_capitalized): + # Получаем текущую дату + date = datetime.datetime.now() + # Создаём объект планеты + planet = getattr(ephem, planet_name_capitalized)(date) + # Определяем созвездие, в котором находится планета + constellation = ephem.constellation(planet) + # Отправляем ответ пользователю + await update.message.reply_text(f"Планета {planet_name_capitalized} сейчас находится в созвездии {constellation[1]}.") + else: + await update.message.reply_text("Извините, я не знаю такую планету. Пожалуйста, проверьте название и попробуйте снова.") + + +async def talk_to_me(update: Update, context: ContextTypes.DEFAULT_TYPE): + text = update.message.text print(text) - update.message.reply_text(text) + await update.message.reply_text(text) +def main(): + mybot = ApplicationBuilder().token('7054240709:AAGrU_8F5UD5GO1nxgxDXBamrVFjKfbBGNs').build() -def talk_to_me(update, context): - user_text = update.message.text - print(user_text) - update.message.reply_text(text) + start_handler = CommandHandler('start', greet_user) + mybot.add_handler(start_handler) -def main(): - mybot = Updater("КЛЮЧ, КОТОРЫЙ НАМ ВЫДАЛ BotFather", request_kwargs=PROXY, use_context=True) - dp = mybot.dispatcher - dp.add_handler(CommandHandler("start", greet_user)) - dp.add_handler(MessageHandler(Filters.text, talk_to_me)) + planet_handler = CommandHandler('planet', planet_info) + mybot.add_handler(planet_handler) + - mybot.start_polling() - mybot.idle() + message_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, talk_to_me) + mybot.add_handler(message_handler) + logging.info('Бот в деле...') + mybot.run_polling() -if __name__ == "__main__": +if __name__ == '__main__': main()