Files
2023-03-30 20:56:38 -07:00

7.4 KiB
Raw Blame History

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

--description--

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

  • Почніть з імпорту проєкту на Replit.
  • Потім ви побачите вікно .replit.
  • Оберіть Use run command та натисніть кнопку Done.

--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.
*/