106 lines
6.2 KiB
Markdown
106 lines
6.2 KiB
Markdown
---
|
||
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.
|
||
*/
|
||
```
|