Добавить в корзинуПозвонить
Найти в Дзене
Движение-Жизнь

Вторая практическая работа python_advanced

Не только код, но и попытка объяснить себе и другим нюансы заданий данной работы. Так уж получилось что я подзапустил учебу. Теперь приходится все вспоминать что я уже делал несколько месяцев назад. Застрял я на третьей практической работе курса python_advanced. Все откладывал «на потом», вот итог – забыл что было в предыдущей работе. И чем дольше я туплю тем мне трудней вернуться к работе, и чем дольше я не возвращаюсь к работе тем больше я забываю о том что сделано и как это сделано. Блин, какой-то замкнутый круг. Вот по идее каждая образовательная платформа просто обязана как-то подпинывать своих студентов. Типа - «Эй братан, ты работу сдавать собираешься или нет?!» а то мы тебя атата!!! Хотя даже не знаю работает это или нет. Ну да ладно, ближе к делу! 1 Задача. Список процессов С помощью команды ps можно посмотреть список запущенных процессов. С флагами aux эта команда выведет информацию обо всех процессах, запущенных в системе. Напишите функцию get_summary_rss, которая на вход пр
Оглавление

Не только код, но и попытка объяснить себе и другим нюансы заданий данной работы.

Так уж получилось что я подзапустил учебу. Теперь приходится все вспоминать что я уже делал несколько месяцев назад.

Застрял я на третьей практической работе курса python_advanced. Все откладывал «на потом», вот итог – забыл что было в предыдущей работе. И чем дольше я туплю тем мне трудней вернуться к работе, и чем дольше я не возвращаюсь к работе тем больше я забываю о том что сделано и как это сделано. Блин, какой-то замкнутый круг.

Вот по идее каждая образовательная платформа просто обязана как-то подпинывать своих студентов. Типа - «Эй братан, ты работу сдавать собираешься или нет?!» а то мы тебя атата!!! Хотя даже не знаю работает это или нет. Ну да ладно, ближе к делу!

1 Задача. Список процессов

С помощью команды ps можно посмотреть список запущенных процессов. С флагами aux эта команда выведет информацию обо всех процессах, запущенных в системе.

Напишите функцию get_summary_rss, которая на вход принимает путь до файла с результатом выполнения команды ps aux, и возвращает суммарный объём потребляемой памяти в человекочитаемом формате. Это означает, что ответ надо перевести в байты, килобайты, мегабайты и так далее.

После выполнения команды ps aux > output_file.txt у нас появляется файл с примерно таким содержимым:

ам нужен столбец RSS
ам нужен столбец RSS

Наша программа должна открыть данный файл и суммировать все числа 6-го (если считать от нуля - 5 го столбца) ну и соответственно перевести в нужный формат.

В самом листинге программы я закомментировал основные моменты работы программы:

-3

2 Задача. Средний размер файла

Напишите функцию get_mean_size, которая на вход принимает результат выполнения команды ls -l, а возвращает средний размер файла в каталоге.

Запустив консоль, я выбрал некий каталог у себя на компьютере где есть какие-то файлы и в нем запустил команду ls –l, получился вот такой результат:

подчеркнут сам файл программы
подчеркнут сам файл программы

Теперь нужно написать программу которая при выполнении команды ls –l, перенаправляла вывод команды ни на экран, ни в файл а в нашу программу, которая бы обрабатывала эти данные и вывела примерно такой вывод:

-5

Ну и собственно листинг программы с комментариями:

-6

3. Задача. Дешифратор

Есть некие входные данные, у которых должны быть выходные данные, то есть принимаем шифровку и из нее делаем расшифровку. Шифровка-расшифровка осуществляется по таким закономерностям:

  1. Каждый символ строки — либо буква, либо пробел, либо точка «.», либо две точки «..».
  2. Если после какой-то буквы стоит точка, значит, мы оставляем букву без изменений Саму точку при этом надо удалить.
  3. Если после какой-то буквы стоят две точки, то предыдущий символ надо стереть. Обе точки при этом тоже нужно удалить.
  4. Возможна ситуация, когда сообщение после расшифровки будет пустым. В качестве результата можно вернуть просто пустую строку.

Это всё должно выглядеть примерно так:

-7

Программа должна работать через конвейер (pipe), например:

-8

Я данную задачу решил при помощи «регулярных выражений»:

-9

А далее, 3м модуле, когда идет разбор домашнего задания, там задача решена другим способом:

-10

Задача 4. Хорошего дня!

Реализуйте endpoint /hello-world/<имя>, который возвращает строку «Привет, <имя>. Хорошей пятницы!». Вместо хорошей пятницы
endpoint должен уметь желать хорошего дня недели в целом, на русском языке.
Пример запроса, сделанного в субботу:
/hello-world/Саша → Привет, Саша. Хорошей субботы!

Дополнительно нужно определить сколько памяти занимают list, tuple, dict с помощью "print.getsizeof(list or tuple or dict)".

Как показали опыты, кортеж (tuple) меньше всего занимает памяти - 96 байт, list - 120, dict 360 байт. Но словарь (dict), мне кажется, наиболее удобным. Программу я написал с использованием кортежа, было жеж условие - выбрать оптимальный способ хранения дней недели.

-11

В следующем модуле (при написании тестов) используется другой вариант программы:

-12

5 Задача. Максимальное число

Реализуйте endpoint, начинающийся с /max_number, в который можно передать список чисел, разделённых слешем /. Endpoint должен
вернуть текст «Максимальное переданное число {number}», где number — выделенное курсивом наибольшее из переданных чисел.
Примеры:
/max_number/10/2/9/1
Максимальное число: 10
/max_number/1/1/1/1/1/1/1/2
Максимальное число: 2

Тут сложного ничего нет. Используется конструкция <path:nunbers>, там всё что идет после endpoint /max_number/ будет восприниматься как одна строка и остается только разбить ее с помощью split('/') привести к int и найти максимальное число.

Само собой делаем обработку ошибок чтобы в строчку не затесались символы отличные от цифр.

-13

6 Задача. Превью файла

Реализуйте endpoint, который показывает превью файла, принимая на вход два параметра: SIZE (int) и RELATIVE_PATH — и возвращая
первые SIZE символов файла по указанному в RELATIVE_PATH пути.
Endpoint должен вернуть страницу с двумя строками.
В первой строке будет содержаться информация о файле: его абсолютный путь и размер файла в символах, а во второй строке — первые SIZE символов из файла:

Пример:
docs/simple.txt:
hello world!
/preview/8/docs/simple.txt
/home/user/module_2/docs/simple.txt 8
hello wo
/preview/100/docs/simple.txt
/home/user/module_2/docs/simple.txt 12
hello world!

-14

7 Задача. Учет финансов

Реализуйте приложение для учёта финансов, умеющее запоминать, сколько денег было потрачено за день, а также показывать затраты
за отдельный месяц и за целый год.
В программе должно быть три endpoints:

  • /add/<date>/<int:number> — сохранение информации о совершённой в рублях трате за какой-то день;
  • /calculate/<int:year> — получение суммарных трат за указанный год;
  • /calculate/<int:year>/<int:month> — получение суммарных трат за указанные год и месяц.

Дата для /add/ передаётся в формате YYYYMMDD, где YYYY — год, MM — месяц (от 1 до 12), DD — число (от 01 до 31). Гарантируется, что
переданная дата имеет такой формат и она корректна (никаких 31 февраля).

-15
-16
-17

В принципе, по коду все понятно, но если кому-то нужно какое-то пояснение, обязательно отвечу в комментариях.

На этом всё, всем всяческих благ и успехов в учебе.