Files
2022-11-24 03:04:30 +09:00

7.2 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5e44413e903586ffb414c94e Додаток для ведення бюджету 10 462361 budget-app

--description--

Ви будете працювати над цим проєктом з нашим стартовим кодом Replit.

--instructions--

Завершіть клас Category у budget.py. Він повинен опрацьовувати об'єкти, базуючись на різних категоріях, наприклад їжа, одяг та розваги. Коли об'єкти створені, вони передаються в назву категорії. Клас повинен мати поле класу під назвою ledger, яке є списком. Клас також повинен містити наступні методи:

  • Метод deposit, що приймає суму та опис. Якщо жодного опису не дано, то воно автоматично переходить до порожнього рядка. Цей метод повинен додавати об'єкти до списку ledger у вигляді {"amount": amount, "description": description}.
  • Метод withdraw схожий до методу deposit, але сума, яку він передає, повинна зберігатися у списку як від'ємне число. Якщо недостатньо коштів, то нічого додавати не потрібно. Цей метод повинен повертати True, якщо зняття дійсне, а в іншому випадку повертати False.
  • Метод get_balance, що повертає поточний баланс категорії бюджету на основі депозитів і зняття.
  • Метод transfer, що приймає суму або іншу бюджетну категорію як аргументи. Цей метод повинен додавати виведення суми та опис "Transfer to [Destination Budget Category]" (перенести до [категорія]). Потім він повинен додати депозит до іншої категорії, що містить суму та опис "Transfer from [Source Budget Category]" (передача з [категорія]). Якщо недостатньо коштів, то нічого додавати не потрібно. Цей метод повинен повертати True, якщо переказ дійсний, а в іншому випадку повертати False.
  • Метод check_funds, що приймає суму як аргумент. Він повертає False, якщо сума більша за баланс бюджетної категорії, а в іншому випадку повертає True. Цей метод варто використовувати обом методам withdraw та transfer.

Якщо бюджетний об'єкт надрукований, він повинен відображатися:

  • Рядок заголовка із 30 символів, де назва категорії знаходиться у центрі рядка символів *.
  • Список елементів у записі. Кожен рядок повинен показувати опис і суму. Перші 23 символи опису повинні відображатися, а далі вже сума. Сума повинна бути вирівняною за правим краєм, містити два десяткові знаки та відображати максимум 7 символів.
  • Рядок, що показує загальну категорію.

Ось приклад виводу:

*************Food*************
initial deposit        1000.00
groceries               -10.15
restaurant and more foo -15.89
Transfer to Clothing    -50.00
Total: 923.96

Окрім класу Category створіть функцію під назвою create_spend_chart (за межами класу), яка приймає список категорій як аргумент. Вона повинна повертати рядок зі стовпчиковою діаграмою.

Діаграма повинна показувати відсотки, витрачені в кожній категорії, переданій до функції. Відсоток витраченого повинен бути розрахований лише за рахунок зняття, але не з депозитів. Внизу лівої частини графіку повинні бути мітки 0 - 100. Стовпчики у стовпчиковій діаграмі повинні бути створені із символу «o». Висота кожного стовпчика повинна бути округлена до найближчого 10. Горизонтальна лінія під стовпчиками повинна розташовуватись в двох пробілах від кінцевого стовпчика. Назва кожної категорії повинна бути написана вертикально під стовпчиком. Вгорі повинен бути заголовок "Percentage spent by category" (відсоток, витрачений у категорії).

Ця функція буде тестуватися чотирма категоріями.

Уважно розгляньте приклад виводу нижче і переконайтеся, що інтервал виводу повністю відповідає прикладу.

Percentage spent by category
100|          
 90|          
 80|          
 70|          
 60| o        
 50| o        
 40| o        
 30| o        
 20| o  o     
 10| o  o  o  
  0| o  o  o  
    ----------
     F  C  A  
     o  l  u  
     o  o  t  
     d  t  o  
        h     
        i     
        n     
        g     

Модульні тести для цього проєкту знаходяться в test_module.py.

Розробка

Запишіть свій код у budget.py. Для розробки ви можете використати main.py, щоб протестувати свій клас Category. Натисніть кнопку «run» і main.py запуститься.

Тестування

Ми імпортували тести з test_module.py до main.py для вашої зручності. Тести запустяться автоматично, коли ви натиснете на кнопку «run».

Надсилання

Скопіюйте URL-адресу свого проєкту та відправте її до freeCodeCamp.

--hints--

Проєкт повинен створити клас Category та пройти тестування.


--solutions--

/**
  Backend challenges don't need solutions,
  because they would need to be tested against a full working project.
  Please check our contributing guidelines to learn more.
*/