Skip to content

Instantly share code, notes, and snippets.

@ragne
Created July 21, 2021 10:33
Show Gist options
  • Save ragne/38f6b29b18f78dc63ae5e5a04f1d656f to your computer and use it in GitHub Desktop.
Save ragne/38f6b29b18f78dc63ae5e5a04f1d656f to your computer and use it in GitHub Desktop.
hw2

Я вижу, что вопросы есть :)

Итак, что нужно сделать в дз: у вас есть три функции (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) и запустить тесты. Если все тесты прошли, или вы считаете что все сделано верно, но в тестах есть баг -- присылайте дз.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment