---
id: 5e44412c903586ffb414c94c
title: Арифметичне форматування
challengeType: 10
forumTopicId: 462359
dashedName: arithmetic-formatter
---

# --description--

Ви маєте [виконати цей проєкт за допомогою нашого стартового коду Replit](https://replit.com/github/freeCodeCamp/boilerplate-arithmetic-formatter).

Ми й досі в процесі розробки інтерактивної складової навчального курсу Python. Наразі можете ознайомитись із наступними відео на YouTube каналі freeCodeCamp.org. У них ви знайдете все необхідне для завершення цього проєкту:

- [Python for Everybody Video Course](https://www.freecodecamp.org/news/python-for-everybody/) (14 годин)
- [Learn Python Video Course](https://www.freecodecamp.org/news/learn-python-video-course/) (10 години)

# --instructions--

У початковій школі школярів вчать вирішувати арифметичні приклади вертикально, бо це легше. Наприклад, "235 + 52" перетворюється на:

```py
  235
+  52
-----
```

Створіть функцію, яка отримує список рядків з арифметичними завданнями та вводить їх послідовно у вертикальному вигляді. Функція повинна при необхідності брати другий аргумент. Коли другий аргумент встановлено на `True`, відповіді повинні відображатися.

## Приклад

Виклик функції:

```py
arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])
```

Виведення:

```py
   32      3801      45      123
+ 698    -    2    + 43    +  49
-----    ------    ----    -----
```

Виклик функції:

```py
arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"], True)
```

Виведення:

```py
  32         1      9999      523
+  8    - 3801    + 9999    -  49
----    ------    ------    -----
  40     -3800     19998      474
```

## Правила

Функція повернеться до правильного перетворення якщо наявні завдання відформатовані належним чином, в протилежному випадку, це буде **return** **string**, що описує помилку, яка має велике значення для користувача.


- Ситуації, які приводять до помилки:
  - Якщо ** забагато завдань ** з'являються для функції. Ліміт **five**, що-небудь ще повернеться:`Error: Забагато завдань.`
  - Відповідні оператори, які приймають функцію **addition** and **subtraction**. Множення і ділення породжує помилку. Інші оператори, які не згадані у цій точці, тестовані не будуть. Отримана помилка буде:`Error: Оператор повинен бути '+' або '-'.`
  - Кожне число (операнд) повинен містити лише цифри. В іншому випадку, функція буде така:`Error: Числа повинні містити тільки цифри.`
  - Кожен операнд (також номер один з кожної сторони оператора) максимум може мати по чотири цифри по ширині. В іншому випадку, помилковий рядок видасть наступне:`Error: Числа не можуть бути більше чотирьох цифр.`
- Якщо користувач подбав про правильний формат проблем, то перетворення буде слідувати наступним правилам:
  - Повинен бути лише один пробіл між оператором і найдовшим із двох операндів, оператор буде на тому ж рядку, що й другий операнд, обоє операндів будуть в однаковому порядку, як і надано (перший буде зверху, а другий - знизу).
  - Числа повинні бути вирівняні справа.
  - Має бути чотири пробіли між кожним завданням.
  - У нижній частині кожного завдання мають бути тире. Тире повинні йти по всій довжині кожного завдання індивідуально. (Приклад вище показує, як це повинно виглядати.)

## Розробка

Напишіть свій код на `arithmetic_arranger.py`. Для розробки, ви можете використати `main.py`, щоб перевірити вашу функцію `arithmetic_arranger()`. Натисніть кнопку "run" і `main.py` запуститься.

## Тестування

Розділи з тестами для цього проєкту знаходяться в `test_module.py`. Ми запускаємо тести з `test_module.py` в `main.py` для вашої зручності. Тести запустяться автоматично кожного разу, коли ви натиснете клавішу "run". Як альтернатива, ви можете запустити тести, ввівши у консолях `pytest`.

## Надіслати

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

# --hints--

Функція повинна правильно відформатувати арифметичні проблеми та пройти тестування.

```js

```

# --solutions--

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