Я вижу, что вопросы есть :)
Итак, что нужно сделать в дз: у вас есть три функции (format_with_fstring
, format_with_format
, format_with_percent
).
Все они принимают только один параметр data: Metrics
, такой синтаксис это описание входного типа, здесь использован чтобы
показать вам, что тип принимаемой переменной это класс Metrics
, написанный выше.
Это сделано для того, чтобы ваш редактор (если вы используете IDE), мог подсвечивать вам поля класса когда вы пишете, например, data.
(и IDE показывает все доступные поля\методы).
Как делать дз?
Все что вам нужно сделать - это написать код в трех ф-циях (format_with_fstring
, format_with_format
, format_with_percent
),
который будет возвращать форматированную строку. Для примера: format_with_fstring должна вернуть строку, которая отформатирована
с использованием f-string (ссылка в комментарии ф-ции).
Т.е вы изменяете существующий скрипт, например, так:
def format_with_fstring(data: Metrics):
"""Return a string that is formatted with `data` by using an "f-string"
that would have the following format:
CPU #1: 10%, Memory used: 450, Load avg: 3.23
Requirements:
* The string should limit all floats to two digits after decimal (e.g. 3.1415 -> 3.14)
* The text format should be exactly as in comment (tests would check for that)
* The string should be centered and padded with asterisks ("*") to have a total length of 64.
For example:
"CPU #1: 10%, Memory used: 450, Load avg: 3.23"
should become
"*********CPU #1: 10%, Memory used: 450, Load avg: 3.23**********"
Args:
data (Metrics): Data you have to format
Links:
https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals
"""
# ... write the code...
# note: you might have an temporary string here, that's fine!
cpu_1 = data.cpu_data[1] # data -- это объект класса (instance) с типом Metrics, у него есть поля,
# к которым можно обратиться через "."
mem_used = data.memory_used
load_avg = data.load_avg
# нас просят сделать строку "CPU #1: 10%, Memory used: 450, Load avg: 3.23" (без кавычек)
# сделаем ее и используем f-string:
tmp = f"CPU #1: {cpu_1}%, Memory used: {mem_used}, Load avg: {load_avg}"
# но так же нас просят отцентровать строку, смотрим документацию из коммента
# ... читаем документацию, ничего не понятно...
# идем в гугл: https://letmegooglethat.com/?q=how+to+align+%22f-string%22
# первой ссылкой мне выдается: https://www.geeksforgeeks.org/string-alignment-in-python-f-string/
# замечаем что alignment syntax очень похож на такой же из string.format
# пробуем варианты в интерпретаторе (это важно!)
return f"{tmp:*^64}"
После того как мы написали ф-цию, проверили в интерпретаторе что она возвращает то что нам надо, мы запускаем тесты для
самопроверки: python hw2.py
.
Т.е вам нужно написать код для трех функций (format_with_fstring
, format_with_format
, format_with_percent
) и запустить
тесты. Если все тесты прошли, или вы считаете что все сделано верно, но в тестах есть баг -- присылайте дз.