Tell us what’s happening:
Describe your issue in detail here.
Re Hello to all
had a problem with indentation
I went from 3 to 8
Old 2:
Re Hello to all,
I found several errors by looking at others on the forum, I went from 0 to 3 tests OK
Honestly, I don’t understand why the rest don’t pass, could you help me?
Old :
Hello to all,
I have a difficulty to validate the unit tests. Indeed, on my side my code works
I did some tests of the instructions by hand and it works.
But if I launch with unit tests nothing is valid anymore, I don’t understand why
Could you look at my code and tell me or I made a mistake?
Thanks in advance
Arnaud
Link of code
arithmetic_arranger.py
def arithmetic_arranger(problems, solv=False):
#check_problems
if len(problems) > 5:
return "Error: Too many problems"
for problem in problems:
# check 1 per 1 problem
check_prob = problem.split(" ")
if check_prob[1] in "*/":
return "Error: Operator must be '+' or '-'."
if not (check_prob[0].isdigit() and check_prob[2].isdigit()):
return "Error: Numbers must only contain digits."
if len(check_prob[0]) > 4 or len(check_prob[2]) > 4:
return "Error: Numbers cannot be more than four digits."
# Formating the all problem in line per line
lines = ["", "", ""]
if solv:
lines.append("")
for problem in problems:
check_prob = problem.split(" ")
num_one = check_prob[0]
num_two = check_prob[2]
operator = check_prob[1]
list_of_nb_char = [len(num_one), len(num_two)]
if solv:
result = str(eval(problem))
list_of_nb_char.append(len(result))
nb_char_max = max(list_of_nb_char) + 2
lines[0] += ' ' * (nb_char_max - len(num_one)) + num_one + ' ' * 4
lines[1] += operator + ' ' * (nb_char_max - len(num_two) - 1) + num_two + ' ' * 4
lines[2] += '-' * nb_char_max + ' ' * 4
if solv:
lines[3] += ' ' * (nb_char_max - len(result)) + result + ' ' * 4
# concatenate all line in one
arranged_problems = ""
for line in lines:
arranged_problems += line[:-4] + "\n"
return arranged_problems[:-1]
Result run
python main.py
32 3801 45 123 12
+ 698 - 2 + 43 - 49 + 4
----- ------ ---- ----- ----
================= test session starts ==================
platform linux -- Python 3.8.13, pytest-7.1.1, pluggy-1.0.0 -- /nix/store/06c55y0c5yzx5gx4l6k0pp6071zf1y5i-python3-3.8.13/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/Arnaud-arithmetic-formatter
collected 10 items
test_module.py::test_template[test_two_problems_arrangement1] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 10%]
test_module.py::test_template[test_two_problems_arrangement2] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 20%]
test_module.py::test_template[test_four_problems_arrangement] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 30%]
test_module.py::test_template[test_five_problems_arrangement] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 40%]
test_module.py::test_template[test_too_many_problems] <- ../boilerplate-arithmetic-formatter/test_module.py FAILED [ 50%]
test_module.py::test_template[test_incorrect_operator] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 60%]
test_module.py::test_template[test_too_many_digits] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 70%]
test_module.py::test_template[test_only_digits] <- ../boilerplate-arithmetic-formatter/test_module.py PASSED [ 80%]
test_module.py::test_template[test_two_problems_with_solutions] <- ../boilerplate-arithmetic-formatter/test_module.py FAILED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] <- ../boilerplate-arithmetic-formatter/test_module.py FAILED [100%]
======================= FAILURES =======================
________ test_template[test_too_many_problems] _________
arguments = [['44 + 815', '909 - 2', '45 + 43', '123 + 49', '888 + 40', '653 + 87']]
expected_output = 'Error: Too many problems.'
fail_message = 'Expected calling "arithmetic_arranger()" with more than five problems to return "Error: Too many problems."'
> ???
E AssertionError: Expected calling "arithmetic_arranger()" with more than five problems to return "Error: Too many problems."
E assert 'Error: Too many problems' == 'Error: Too many problems.'
E - Error: Too many problems.
E ? -
E + Error: Too many problems
/home/runner/boilerplate-arithmetic-formatter/test_module.py:77: AssertionError
___ test_template[test_two_problems_with_solutions] ____
arguments = [['3 + 855', '988 + 40'], True]
expected_output = ' 3 988\n+ 855 + 40\n----- -----\n 858 1028'
fail_message = 'Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with ["3 + 855", "988 + 40"] and a second argument of `True`.'
> ???
E AssertionError: Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with ["3 + 855", "988 + 40"] and a second argument of `True`.
E assert ' 3 988\n+ 855 + 40\n----- ------\n 858 1028' == ' 3 988\n+ 855 + 40\n----- -----\n 858 1028'
E - 3 988
E + 3 988
E ? +
E - + 855 + 40
E + + 855 + 40
E ? +
E - ----- -----
E + ----- ------
E ? +
E - 858 1028
E + 858 1028
E ? +
/home/runner/boilerplate-arithmetic-formatter/test_module.py:77: AssertionError
___ test_template[test_five_problems_with_solutions] ___
arguments = [['32 - 698', '1 - 3801', '45 + 43', '123 + 49', '988 + 40'], True]
expected_output = ' 32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028'
fail_message = 'Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with five arithmetic problems and a second argument of `True`.'
> ???
E AssertionError: Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with five arithmetic problems and a second argument of `True`.
E assert (' 32 1 45 123 988\n'\n '- 698 - 3801 + 43 + 49 + 40\n'\n '------ ------- ---- ----- ------\n'\n ' -666 -3800 88 172 1028') == (' 32 1 45 123 988\n'\n '- 698 - 3801 + 43 + 49 + 40\n'\n '----- ------ ---- ----- -----\n'\n ' -666 -3800 88 172 1028')
E - 32 1 45 123 988
E + 32 1 45 123 988
E ? + + +
E - - 698 - 3801 + 43 + 49 + 40
E + - 698 - 3801 + 43 + 49 + 40
E ? + + +
E - ----- ------ ---- ----- -----
E + ------ ------- ---- ----- ------
E - -666 -3800 88 172 1028
E + -666 -3800 88 172 1028
E ? + + +
/home/runner/boilerplate-arithmetic-formatter/test_module.py:77: AssertionError
=============== short test summary info ================
FAILED test_module.py::test_template[test_too_many_problems]
FAILED test_module.py::test_template[test_two_problems_with_solutions]
FAILED test_module.py::test_template[test_five_problems_with_solutions]
============= 3 failed, 7 passed in 0.21s ==============
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Challenge: Scientific Computing with Python Projects - Arithmetic Formatter
Link to the challenge: