From d507f4c5db840df28818d286580f05d844872d73 Mon Sep 17 00:00:00 2001 From: Alex <109306886+alexandreevich@users.noreply.github.com> Date: Mon, 21 Aug 2023 15:28:12 +0300 Subject: [PATCH 1/3] Update README.md --- 1.python.console/README.md | 51 +++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/1.python.console/README.md b/1.python.console/README.md index 1886711..dd0bee1 100644 --- a/1.python.console/README.md +++ b/1.python.console/README.md @@ -20,6 +20,16 @@ Пример: ссылка на аккаунт eshmargunov - hackerrank.com/eshmargunov +## Ответ №1 +1. ![Снимок экрана 2023-08-21 в 14 39 58](https://github.com/alexandreevich/py-homeworks-basic/assets/109306886/52f711ae-d994-4e55-a752-1a84e3061845) +2. ![Снимок экрана 2023-08-21 в 14 42 26](https://github.com/alexandreevich/py-homeworks-basic/assets/109306886/c088a2d4-2f66-451e-8f20-c8c0385e5278) +3. ![Снимок экрана 2023-08-21 в 14 55 11](https://github.com/alexandreevich/py-homeworks-basic/assets/109306886/81475042-9f37-4b97-9ab2-e9c0fd4ff5b9) +4. https://www.hackerrank.com/alexash1109 + + + + + ## Задача №2 Квадрат и прямоугольник. @@ -47,6 +57,30 @@ Программа запрашивает у пользователя длину стороны квадрата и выводит его периметр и площадь. Сразу после этого пользователю предлагается ввести длину и ширину прямоугольника, для которого рассчитывается периметр и площадь. Обратите внимание, что программа должна работать корректно при любых введённых значениях длины и ширины фигуры. + + +## Ответ №2 +``` +a = int(input('Введите сторону квадрата: ')) +perimeter = (4 * a) +area = (a * a) +print ('Периметр: ', perimeter) +print ('Площадь: ', area) + +b = int(input('Введите длину прямоугольника: ')) +c = int(input('Введите ширину прямоугольника: ')) +perimeter2 = ((b+c) * 2) +area2 = (b * c) +print ('Периметр: ', perimeter2) +print ('Площадь: ', area2) +``` + +![Снимок экрана 2023-08-21 в 15 13 54](https://github.com/alexandreevich/py-homeworks-basic/assets/109306886/079f9147-f052-454c-840e-5284d3dbb33d) + + + + + ## Задача №3 Нужно разработать приложение для финансового планирования. Приложение учитывает, какой процент от заработной платы уходит на ипотеку и ежемесячные расходы. @@ -70,6 +104,21 @@ Было накоплено: 240000 рублей ``` +## Ответ №3 +``` +salary = int(input('Введите заработную плату в месяц: ')) +ipoteka = int(input('Введите, какой процент(%) уходит на ипотеку: ' )) +expenses = int(input('Введите, какой процент(%) уходит на жизнь: ' )) +ipoteka_v_god = int(salary * 12 * (ipoteka / 100)) +expenses_v_god = int(salary * 12 * (expenses/100)) +nakoplenia = int(salary * 12 - ipoteka_v_god - expenses_v_god) +print ('На ипотеку было потрачено: ', ipoteka_v_god , 'рублей') +print ('Было накоплено: ', nakoplenia , 'рублей') + +``` +![Снимок экрана 2023-08-21 в 15 27 45](https://github.com/alexandreevich/py-homeworks-basic/assets/109306886/58e475f5-05d4-418c-a02e-1951f313fb1b) + + --- Инструкция по выполнению домашнего задания: @@ -82,4 +131,4 @@ 7. После окончания работы скопируйте ссылку на ваш repl в адресной строке браузера. 8. В личном кабинете на сайте [netology.ru](http://netology.ru/) в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку. -*Никаких файлов прикреплять не нужно.* \ No newline at end of file +*Никаких файлов прикреплять не нужно.* From cf8b65ac4be210c1594a4320750ea72f715482ab Mon Sep 17 00:00:00 2001 From: Alex <109306886+alexandreevich@users.noreply.github.com> Date: Fri, 25 Aug 2023 20:31:11 +0300 Subject: [PATCH 2/3] Update README.md --- 3.introduce_datatypes/README.md | 134 +++++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 1 deletion(-) diff --git a/3.introduce_datatypes/README.md b/3.introduce_datatypes/README.md index ce1c071..d0ef48f 100644 --- a/3.introduce_datatypes/README.md +++ b/3.introduce_datatypes/README.md @@ -1 +1,133 @@ -# Домашнее задание к лекции 3. «Введение в типы данных и циклы» ## Задача 1 Мы делаем MVP dating-сервиса, и у нас есть список парней и девушек — их число может варьироваться: ``` boys = ['Peter', 'Alex', 'John', 'Arthur', 'Richard'] girls = ['Kate', 'Liza', 'Kira', 'Emma', 'Trisha'] ``` Выдвигаем гипотезу: лучшие рекомендации мы получим, если просто отсортируем имена по алфавиту и познакомим людей с одинаковыми индексами после сортировки. «Познакомить» пары нам поможет функция `zip`. В цикле распакуем zip-объект и выведем информацию в виде: ``` Идеальные пары: Alex и Emma Arthur и Kate John и Kira Peter и Liza Richard и Trisha ``` **Внимание. Если количество людей в списках будет не совпадать, то мы никого знакомить не будем и выведем пользователю предупреждение, что кто-то может остаться без пары.** ## Задача 2 Есть структура данных `cook_book`, в которой хранится информация об ингредиентах блюд и их количестве в расчёте на одну порцию: ``` cook_book = [ ['салат', [ ['картофель', 100, 'гр.'], ['морковь', 50, 'гр.'], ['огурцы', 50, 'гр.'], ['горошек', 30, 'гр.'], ['майонез', 70, 'мл.'], ] ], ['пицца', [ ['сыр', 50, 'гр.'], ['томаты', 50, 'гр.'], ['тесто', 100, 'гр.'], ['бекон', 30, 'гр.'], ['колбаса', 30, 'гр.'], ['грибы', 20, 'гр.'], ], ], ['фруктовый десерт', [ ['хурма', 60, 'гр.'], ['киви', 60, 'гр.'], ['творог', 60, 'гр.'], ['сахар', 10, 'гр.'], ['мед', 50, 'мл.'], ] ] ] ``` и переменная, в которой хранится количество людей, на которых нужно приготовить эти блюда: ``` person = 5 ``` Нужно вывести пользователю список покупок необходимого количества ингредиентов для приготовления блюд на определённое число персон в следующем виде: ``` Салат: картофель, 500гр. морковь, 250гр. огурцы, 250гр. горошек, 150гр. майонез, 350мл. Пицца: сыр, 250гр. томаты, 250гр. тесто, 500гр. бекон, 150гр. колбаса, 150гр. грибы, 100гр. Фруктовый десерт: хурма, 300гр. киви, 300гр. творог, 300гр. сахар, 50гр. мед, 250мл. ``` **Внимание. Реализация не должна зависеть от количества блюд, их названий и количества ингредиентов в них.** ## Задание 3 К следующей лекции прочитайте про [типы данных](https://habr.com/ru/post/319164/). --- Инструкция по выполнению домашнего задания: 1. Зарегистрируйтесь на сайте [Repl.IT](https://repl.it/). 2. Перейдите в раздел **my repls**. 3. Нажмите кнопку **Start coding now!**, если приступаете впервые, или **New Repl**, если у вас уже есть работы. 4. В списке языков выберите Python. 5. Код пишите в левой части окна. 6. Посмотреть результат выполнения файла можно, нажав на кнопку **Run**. Результат появится в правой части окна. 7. После окончания работы нажмите кнопку **Share** и скопируйте ссылку из поля *Share link*. 8. В личном кабинете на сайте [netology.ru](http://netology.ru/) в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку. *Никаких файлов прикреплять не нужно.* \ No newline at end of file +# Домашнее задание к лекции 3. «Введение в типы данных и циклы» + +## Задача 1 +Мы делаем MVP dating-сервиса, и у нас есть список парней и девушек — их число может варьироваться: + +``` +boys = ['Peter', 'Alex', 'John', 'Arthur', 'Richard'] +girls = ['Kate', 'Liza', 'Kira', 'Emma', 'Trisha'] +``` + +Выдвигаем гипотезу: лучшие рекомендации мы получим, если просто отсортируем имена по алфавиту и познакомим людей с одинаковыми индексами после сортировки. +«Познакомить» пары нам поможет функция `zip`. В цикле распакуем zip-объект и выведем информацию в виде: + +``` +Идеальные пары: +Alex и Emma +Arthur и Kate +John и Kira +Peter и Liza +Richard и Trisha +``` + +**Внимание. Если количество людей в списках будет не совпадать, то мы никого знакомить не будем и выведем пользователю предупреждение, что кто-то может остаться без пары.** + + +### Ответ 1 +``` +boys = ['Peter', 'Alex', 'John', 'Arthur', 'Richard'] +girls = ['Kate', 'Liza', 'Kira', 'Emma', 'Trisha'] +b1 = sorted(boys) +g1 = sorted(girls) +if len(b1) == len(g1): + couples = zip(b1,g1) + print ('Идеальные пары: ') + for couple in couples: + print(couple[0], 'и', couple[1]) +else: print ('Кто-то останется без пары') +``` + +## Задача 2 +Есть структура данных `cook_book`, в которой хранится информация об ингредиентах блюд и их количестве в расчёте на одну порцию: + +``` +cook_book = [ + ['салат', + [ + ['картофель', 100, 'гр.'], + ['морковь', 50, 'гр.'], + ['огурцы', 50, 'гр.'], + ['горошек', 30, 'гр.'], + ['майонез', 70, 'мл.'], + ] + ], + ['пицца', + [ + ['сыр', 50, 'гр.'], + ['томаты', 50, 'гр.'], + ['тесто', 100, 'гр.'], + ['бекон', 30, 'гр.'], + ['колбаса', 30, 'гр.'], + ['грибы', 20, 'гр.'], + ], + ], + ['фруктовый десерт', + [ + ['хурма', 60, 'гр.'], + ['киви', 60, 'гр.'], + ['творог', 60, 'гр.'], + ['сахар', 10, 'гр.'], + ['мед', 50, 'мл.'], + ] + ] +] +``` +и переменная, в которой хранится количество людей, на которых нужно приготовить эти блюда: +``` +person = 5 +``` + +Нужно вывести пользователю список покупок необходимого количества ингредиентов для приготовления блюд на определённое число персон в следующем виде: + +``` +Салат: +картофель, 500гр. +морковь, 250гр. +огурцы, 250гр. +горошек, 150гр. +майонез, 350мл. + +Пицца: +сыр, 250гр. +томаты, 250гр. +тесто, 500гр. +бекон, 150гр. +колбаса, 150гр. +грибы, 100гр. + +Фруктовый десерт: +хурма, 300гр. +киви, 300гр. +творог, 300гр. +сахар, 50гр. +мед, 250мл. +``` +### Ответ 2 +``` +number_of_guest = 5 +for name,lists in cook_book: + print(name,':') + for list in lists: + print(list[0],',',list[1]*number_of_guest, list[2]) + print() +``` + +**Внимание. Реализация не должна зависеть от количества блюд, их названий и количества ингредиентов в них.** + +## Задание 3 +К следующей лекции прочитайте про [типы данных](https://habr.com/ru/post/319164/). + +--- +Инструкция по выполнению домашнего задания: + +1. Зарегистрируйтесь на сайте [Repl.IT](https://repl.it/). +2. Перейдите в раздел **my repls**. +3. Нажмите кнопку **Start coding now!**, если приступаете впервые, или **New Repl**, если у вас уже есть работы. +4. В списке языков выберите Python. +5. Код пишите в левой части окна. +6. Посмотреть результат выполнения файла можно, нажав на кнопку **Run**. Результат появится в правой части окна. +7. После окончания работы нажмите кнопку **Share** и скопируйте ссылку из поля *Share link*. +8. В личном кабинете на сайте [netology.ru](http://netology.ru/) в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку. + +*Никаких файлов прикреплять не нужно.* + From f7f74e50790642659a098b6d1e5f2519dae067f3 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 10 Oct 2023 13:11:07 +0300 Subject: [PATCH 3/3] HomeworkDone --- 5.functions/README.md | 140 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/5.functions/README.md b/5.functions/README.md index 0260807..45573b8 100644 --- a/5.functions/README.md +++ b/5.functions/README.md @@ -41,6 +41,146 @@ ## Задача №4 Для подготовки к следующей лекции прочитайте про [классы](https://pythonworld.ru/osnovy/obektno-orientirovannoe-programmirovanie-obshhee-predstavlenie.html). + + +## Ответ №1 +* `p` – people – команда, которая спросит номер документа и выведет имя человека, которому он принадлежит; + +# 1. People - Номер документа и кому принадлежит +``` +def number_of_document(documents): + nomer = input('Введите номер документа: ') + for doc in documents: + if doc['number'] == nomer: + print(f"Имя владельца документа:{doc['name']}") + return + print("Док не найден") +``` + +* `s` – shelf – команда, которая спросит номер документа и выведет номер полки, на которой он находится; + +# 2. Shelf - Вывод кому принадлежит и где находиться документ по номеру +``` +def number_of_document_and_shelf(shelf): + nomer = input('Введите номер документа: ') + for key, values in shelf.items(): + if nomer in values: + return key + if key == None: + print('Документа не существует') +# print(number_of_document_and_shelf(directories)) + +``` + `l`– list – команда, которая выведет список всех документов в формате `passport "2207 876234" "Василий Гупкин"`; + + +# 3.List - выведет все список всех документов + +``` +def print_documents(documents): + for doc in documents: + doc_type = doc['type'] + doc_number = doc['number'] + doc_name = doc['name'] + + print(f'{doc_type} "{doc_number}" "{doc_name}"') +``` +* `a` – add – команда, которая добавит новый документ в каталог и в перечень полок, спросив его номер, тип, имя владельца и номер полки, на котором он будет храниться. *Корректно обработайте ситуацию, когда пользователь будет пытаться добавить документ на несуществующую полку*. + + +# 4.Add - Внесет новый документ везде +``` +def add_new_doc(doc,dir): + doc_number = input('Введите номер документа: ') + doc_type = input('Введите тип документа: ') + doc_owner = input('Введите имя владельца документа: ') + shelf_number = input('Введите номер полки: ') + new_doc = {"type": doc_type , "number": doc_number, "name": doc_owner} + if shelf_number in dir: + doc.append(new_doc) + print('Док добавлен') + print(doc) + else: print('Полки нету') +``` + + + +## Ответ №2 + +* `d` – delete – команда, которая спросит номер документа и удалит полностью документ из каталога и его номер из перечня полок. *Предусмотрите сценарий, когда пользователь вводит несуществующий документ*; + +# 2.1 Удаление документа из документов и из полки +``` +def delete_from_doc_and_shelf (documents,directories): + # запрашиваем номер документа у пользователя + doc_number= input('Введите номер документа: ') + + found_doc = None + for doc in documents: + if doc["number"] == doc_number: + found_doc = doc + break + +# Если док найден + if found_doc != None: + documents.remove(found_doc) + for shelf, docs in directories.items(): + if doc_number in docs : + docs.remove(doc_number) + break + print('Док удален успешно') + else: + print('Док не найден') +``` + +* `m` – move – команда, которая спросит номер документа и целевую полку и переместит его с текущей полки на целевую. *Корректно обработайте кейсы, когда пользователь пытается переместить несуществующий документ или переместить документ на несуществующую полку*; + +# 2.2 Move - Номер документа и нужной полки. Найдет и переставит его. +``` +def move_doc_on_right_shelf(documents,directories): + number = input('Введите номер документа: ') + shelf = input('Введите номер полки: ') + first_shelf = "" + + # Находим текущую полку, на которой находится документ + for dir,document in directories.items(): + if number in document: + first_shelf = dir + break + + # Проверяем, что документ существует + if first_shelf == "": + print('Док не сущетсвует') + return + + # Проверяем, что целевая полка существует + if shelf not in directories.keys(): + print('Полки нэма') + return + # Перемещаем документ + directories[first_shelf].remove(number) + directories[shelf].append(number) + print("success") + print(documents,directories) +``` + +* `as` – add shelf – команда, которая спросит номер новой полки и добавит ее в перечень. *Предусмотрите случай, когда пользователь добавляет полку, которая уже существует*.; + + +``` +def add_shelf(directories): + new_shelf = input('Введите номер новой полки: ') + if new_shelf in directories.keys(): + print('Полка уже есть') + return + else: + directories[new_shelf] = [] + + +add_shelf(directories) +print(directories) +``` + --- Инструкция по выполнению домашнего задания: