Hi! I am having trouble formatting the results, I don’t undestand what the error is saying.
This is my code:
And this is the error:
Hi! I am having trouble formatting the results, I don’t undestand what the error is saying.
This is my code:
And this is the error:
Please post your actual code and error message instead of pictures. Thanks
def arithmetic_arranger(problems, results = False):
arranged_problems = []
solved_problems = []
if len(problems) > 5:
return "Error: Too many problems."
for problem in problems:
num1, op, num2 = problem.split()
if op != "+" and op != "-":
return "Error: Operator must be '+' or '-'."
if not num1.isdigit() or not num2.isdigit():
return "Error: Numbers must only contain digits."
if len(num1) > 4 or len(num2) > 4:
return "Error: Numbers cannot be more than four digits."
ans = eval(problem)
l = max(len(num1),len(num2)) + 2
line1 = str(num1).rjust(l)
line2 = op + "" + str(num2).rjust(l-1)
dashes = ""
for i in range(l):
dashes = dashes + "-"
line3 = str(ans).rjust(l)
if results:
solved_problems = f"{line1}\n{line2}\n{dashes}\n{line3}"
arranged_problems = arranged_problems.append(solved_problems)
else:
solved_problems = f"{line1}\n{line2}\n{dashes}"
arranged_problems = arranged_problems.append(solved_problems)
return arranged_problems
None
============================= test session starts ==============================
platform linux -- Python 3.10.8, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /home/runner/boilerplate-arithmetic-formatter/venv/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/boilerplate-arithmetic-formatter
collected 10 items
test_module.py::test_template[test_two_problems_arrangement1] FAILED [ 10%]
test_module.py::test_template[test_two_problems_arrangement2] FAILED [ 20%]
test_module.py::test_template[test_four_problems_arrangement] FAILED [ 30%]
test_module.py::test_template[test_five_problems_arrangement] FAILED [ 40%]
test_module.py::test_template[test_too_many_problems] PASSED [ 50%]
test_module.py::test_template[test_incorrect_operator] PASSED [ 60%]
test_module.py::test_template[test_too_many_digits] PASSED [ 70%]
test_module.py::test_template[test_only_digits] PASSED [ 80%]
test_module.py::test_template[test_two_problems_with_solutions] FAILED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] FAILED [100%]
=================================== FAILURES ===================================
________________ test_template[test_two_problems_arrangement1] _________________
arguments = [['3801 - 2', '123 + 49']]
expected_output = ' 3801 123\n- 2 + 49\n------ -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]
E assert None == ' 3801 123\n- 2 + 49\n------ -----'
E +None
E -' 3801 123\n- 2 + 49\n------ -----'
test_module.py:77: AssertionError
________________ test_template[test_two_problems_arrangement2] _________________
arguments = [['1 + 2', '1 - 9380']]
expected_output = ' 1 1\n+ 2 - 9380\n--- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]
E assert None == ' 1 1\n+ 2 - 9380\n--- ------'
E +None
E -' 1 1\n+ 2 - 9380\n--- ------'
test_module.py:77: AssertionError
________________ test_template[test_four_problems_arrangement] _________________
arguments = [['3 + 855', '3801 - 2', '45 + 43', '123 + 49']]
expected_output = ' 3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]
E assert None == (' 3 3801 45 123\n'\n '+ 855 - 2 + 43 + 49\n'\n '----- ------ ---- -----')
E +None
E -' 3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----'
test_module.py:77: AssertionError
________________ test_template[test_five_problems_arrangement] _________________
arguments = [['11 + 4', '3801 - 2999', '1 + 2', '123 + 49', '1 - 9380']]
expected_output = ' 11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]
E assert None == (' 11 3801 1 123 1\n'\n '+ 4 - 2999 + 2 + 49 - 9380\n'\n '---- ------ --- ----- ------')
E +None
E -' 11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------'
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 None == ' 3 988\n+ 855 + 40\n----- -----\n 858 1028'
E +None
E -' 3 988\n+ 855 + 40\n----- -----\n 858 1028'
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 None == (' 32 1 45 123 988\n'\n '- 698 - 3801 + 43 + 49 + 40\n'\n '----- ------ ---- ----- -----\n'\n ' -666 -3800 88 172 1028')
E +None
E -' 32 1 45 123 988\n- 698 - 3801 + 43 + 49 + 40\n----- ------ ---- ----- -----\n -666 -3800 88 172 1028'
test_module.py:77: AssertionError
=========================== short test summary info ============================
FAILED test_module.py::test_template[test_two_problems_arrangement1] - Assert...
FAILED test_module.py::test_template[test_two_problems_arrangement2] - Assert...
FAILED test_module.py::test_template[test_four_problems_arrangement] - Assert...
FAILED test_module.py::test_template[test_five_problems_arrangement] - Assert...
FAILED test_module.py::test_template[test_two_problems_with_solutions] - Asse...
FAILED test_module.py::test_template[test_five_problems_with_solutions] - Ass...
========================= 6 failed, 4 passed in 0.30s ==========================
The error messages say you are returning None
, so you need to start looking there. I’d be suspicious of this line
What does list.append()
return?
Hi again
I am still stuck on this. I have added new lines, removed spaces, removed new lines, etc and I still don’t get it to show as expected. I am not seeing any “?” in my error message to see what the difference is. Thanks.
def arithmetic_arranger(problems, results=False):
for problem in problems:
num1, op, num2 = problem.split()
if len(problems) > 5:
return "Error: Too many problems."
if op != "+" and op != "-":
return "Error: Operator must be '+' or '-'."
if not num1.isdigit() or not num2.isdigit():
return "Error: Numbers must only contain digits."
if len(num1) > 4 or len(num2) > 4:
return "Error: Numbers cannot be more than four digits."
ans = eval(problem)
l = max(len(num1), len(num2)) + 2
line1 = num1.rjust(l)
line2 = op + num2.rjust(l - 1)
dashes = ""
for i in range(l):
dashes = dashes + "-"
line3 = str(ans).rjust(l)
if results:
arranged_problems = f"{line1}\n{line2}\n{dashes}\n{line3}"
else:
arranged_problems = f"{line1}\n{line2}\n{dashes}"
return arranged_problems
Error message:
32
+ 698
-----
============ test session starts =============
platform linux -- Python 3.10.8, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /home/runner/boilerplate-arithmetic-formatter/venv/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/boilerplate-arithmetic-formatter
collected 10 items
test_module.py::test_template[test_two_problems_arrangement1] FAILED [ 10%]
test_module.py::test_template[test_two_problems_arrangement2] FAILED [ 20%]
test_module.py::test_template[test_four_problems_arrangement] FAILED [ 30%]
test_module.py::test_template[test_five_problems_arrangement] FAILED [ 40%]
test_module.py::test_template[test_too_many_problems] PASSED [ 50%]
test_module.py::test_template[test_incorrect_operator] PASSED [ 60%]
test_module.py::test_template[test_too_many_digits] PASSED [ 70%]
test_module.py::test_template[test_only_digits] PASSED [ 80%]
test_module.py::test_template[test_two_problems_with_solutions] FAILED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] FAILED [100%]
================== FAILURES ==================
_ test_template[test_two_problems_arrangement1] _
arguments = [['3801 - 2', '123 + 49']]
expected_output = ' 3801 123\n- 2 + 49\n------ -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]
E assert ' 3801\n- 2\n------' == ' 3801 123\n- 2 + 49\n------ -----'
E - 3801 123
E - - 2 + 49
E - ------ -----
E + 3801
E + - 2
E + ------
test_module.py:77: AssertionError
_ test_template[test_two_problems_arrangement2] _
arguments = [['1 + 2', '1 - 9380']]
expected_output = ' 1 1\n+ 2 - 9380\n--- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]
E assert ' 1\n+ 2\n---' == ' 1 1\n+ 2 - 9380\n--- ------'
E - 1 1
E - + 2 - 9380
E - --- ------
E + 1
E + + 2
E + ---
test_module.py:77: AssertionError
_ test_template[test_four_problems_arrangement] _
arguments = [['3 + 855', '3801 - 2', '45 + 43', '123 + 49']]
expected_output = ' 3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]
E assert ' 3\n+ 855\n-----' == (' 3 3801 45 123\n'\n '+ 855 - 2 + 43 + 49\n'\n '----- ------ ---- -----')
E - 3 3801 45 123
E - + 855 - 2 + 43 + 49
E - ----- ------ ---- -----
E + 3
E + + 855
E + -----
test_module.py:77: AssertionError
_ test_template[test_five_problems_arrangement] _
arguments = [['11 + 4', '3801 - 2999', '1 + 2', '123 + 49', '1 - 9380']]
expected_output = ' 11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]
E assert ' 11\n+ 4\n----' == (' 11 3801 1 123 1\n'\n '+ 4 - 2999 + 2 + 49 - 9380\n'\n '---- ------ --- ----- ------')
E - 11 3801 1 123 1
E - + 4 - 2999 + 2 + 49 - 9380
E - ---- ------ --- ----- ------
E + 11
E + + 4
E + ----
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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\n+ 855\n-----\n 858' == ' 3 988\n+ 855 + 40\n----- -----\n 858 1028'
E - 3 988
E - + 855 + 40
E - ----- -----
E - 858 1028
E + 3
E + + 855
E + -----
E + 858
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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\n- 698\n-----\n -666' == (' 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 - - 698 - 3801 + 43 + 49 + 40
E - ----- ------ ---- ----- -----
E - -666 -3800 88 172 1028
E + 32
E + - 698
E + -----
E + -666
test_module.py:77: AssertionError
========== short test summary info ===========
FAILED test_module.py::test_template[test_two_problems_arrangement1]
FAILED test_module.py::test_template[test_two_problems_arrangement2]
FAILED test_module.py::test_template[test_four_problems_arrangement]
FAILED test_module.py::test_template[test_five_problems_arrangement]
FAILED test_module.py::test_template[test_two_problems_with_solutions]
FAILED test_module.py::test_template[test_five_problems_with_solutions]
======== 6 failed, 4 passed in 0.30s =========```
- 3801 123
- - 2 + 49
- ------ -----
+ 3801
+ - 2
+ ------
This is what the first error message is telling you. You are only returning one problem now.
Hi! I was able to display all the problems and they look OK but I keep getting an error, something about a space I think. Could you please explain it to me?
def arithmetic_arranger(problems, results=True):
line1 = ""
line2 = ""
line3 = ""
dashes = ""
for problem in problems:
num1, op, num2 = problem.split()
if len(problems) > 5:
return "Error: Too many problems."
if op != "+" and op != "-":
return "Error: Operator must be '+' or '-'."
if not num1.isdigit() or not num2.isdigit():
return "Error: Numbers must only contain digits."
if len(num1) > 4 or len(num2) > 4:
return "Error: Numbers cannot be more than four digits."
line1 = line1 + " "
line2 = line2 + " "
line3 = line3 + " "
ans = eval(problem)
l = max(len(num1), len(num2)) + 2
line1 += num1.rjust(l)
line2 += op + num2.rjust(l-1)
dashes += " "
for i in range(l):
dashes = dashes + "-"
line3 += str(ans).rjust(l)
if results:
arranged_problems = line1 + "\n" + line2 + "\n" + dashes + "\n" + line3
else:
arranged_problems = line1 + "\n" + line2 + "\n" + dashes
return arranged_problems
32 3801 45 123
+ 698 - 2 + 43 + 49
----- ------ ---- -----
730 3799 88 172
================ test session starts =================
platform linux -- Python 3.10.8, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /home/runner/boilerplate-arithmetic-formatter/venv/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/boilerplate-arithmetic-formatter
collected 10 items
test_module.py::test_template[test_two_problems_arrangement1] FAILED [ 10%]
test_module.py::test_template[test_two_problems_arrangement2] FAILED [ 20%]
test_module.py::test_template[test_four_problems_arrangement] FAILED [ 30%]
test_module.py::test_template[test_five_problems_arrangement] FAILED [ 40%]
test_module.py::test_template[test_too_many_problems] PASSED [ 50%]
test_module.py::test_template[test_incorrect_operator] PASSED [ 60%]
test_module.py::test_template[test_too_many_digits] PASSED [ 70%]
test_module.py::test_template[test_only_digits] PASSED [ 80%]
test_module.py::test_template[test_two_problems_with_solutions] FAILED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] FAILED [100%]
====================== FAILURES ======================
___ test_template[test_two_problems_arrangement1] ____
arguments = [['3801 - 2', '123 + 49']]
expected_output = ' 3801 123\n- 2 + 49\n------ -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]
E assert ' 3801 123\n - 2 + 49\n ------ -----\n 3799 172' == ' 3801 123\n- 2 + 49\n------ -----'
E - 3801 123
E ? ---
E + 3801 123
E ? +
E - - 2 + 49
E ? ---
E + - 2 + 49
E ? +
E - ------ -----
E ? ---
E + ------ -----
E ? + +
E + 3799 172
test_module.py:77: AssertionError
___ test_template[test_two_problems_arrangement2] ____
arguments = [['1 + 2', '1 - 9380']]
expected_output = ' 1 1\n+ 2 - 9380\n--- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]
E assert ' 1 1\n + 2 - 9380\n --- ------\n 3 -9379' == ' 1 1\n+ 2 - 9380\n--- ------'
E - 1 1
E ? ---
E + 1 1
E ? +
E - + 2 - 9380
E ? ---
E + + 2 - 9380
E ? +
E - --- ------
E ? ---
E + --- ------
E ? + +
E + 3 -9379
test_module.py:77: AssertionError
___ test_template[test_four_problems_arrangement] ____
arguments = [['3 + 855', '3801 - 2', '45 + 43', '123 + 49']]
expected_output = ' 3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]
E assert (' 3 3801 45 123\n'\n ' + 855 - 2 + 43 + 49\n'\n ' ----- ------ ---- -----\n'\n ' 858 3799 88 172') == (' 3 3801 45 123\n'\n '+ 855 - 2 + 43 + 49\n'\n '----- ------ ---- -----')
E - 3 3801 45 123
E ? --- --- ---
E + 3 3801 45 123
E ? +
E - + 855 - 2 + 43 + 49
E ? --- --- ---
E + + 855 - 2 + 43 + 49
E ? +
E - ----- ------ ---- -----
E ? --- --- ---
E + ----- ------ ---- -----
E ? + +
E + 858 3799 88 172
test_module.py:77: AssertionError
___ test_template[test_five_problems_arrangement] ____
arguments = [['11 + 4', '3801 - 2999', '1 + 2', '123 + 49', '1 - 9380']]
expected_output = ' 11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]
E assert (' 11 3801 1 123 1\n'\n ' + 4 - 2999 + 2 + 49 - 9380\n'\n ' ---- ------ --- ----- ------\n'\n ' 15 802 3 172 -9379') == (' 11 3801 1 123 1\n'\n '+ 4 - 2999 + 2 + 49 - 9380\n'\n '---- ------ --- ----- ------')
E - 11 3801 1 123 1
E ? --- --- --- ---
E + 11 3801 1 123 1
E ? +
E - + 4 - 2999 + 2 + 49 - 9380
E ? --- --- --- ---
E + + 4 - 2999 + 2 + 49 - 9380
E ? +
E - ---- ------ --- ----- ------
E ? --- --- --- ---
E + ---- ------ --- ----- ------
E ? + +
E + 15 802 3 172 -9379
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 ? ---
E + 3 988
E ? +
E - + 855 + 40
E ? ---
E + + 855 + 40
E ? +
E - ----- -----
E ? ---
E + ----- -----
E ? +
E - 858 1028
E ? ---
E + 858 1028
E ? +
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 ? --- --- --- ---
E + 32 1 45 123 988
E ? +
E - - 698 - 3801 + 43 + 49 + 40
E ? --- --- --- ---
E + - 698 - 3801 + 43 + 49 + 40
E ? +
E - ----- ------ ---- ----- -----
E ? --- --- --- ---
E + ----- ------ ---- ----- -----
E ? +
E - -666 -3800 88 172 1028
E ? --- --- --- ---
E + -666 -3800 88 172 1028
E ? +
test_module.py:77: AssertionError
============== short test summary info ===============
FAILED test_module.py::test_template[test_two_problems_arrangement1]
FAILED test_module.py::test_template[test_two_problems_arrangement2]
FAILED test_module.py::test_template[test_four_problems_arrangement]
FAILED test_module.py::test_template[test_five_problems_arrangement]
FAILED test_module.py::test_template[test_two_problems_with_solutions]
FAILED test_module.py::test_template[test_five_problems_with_solutions]
============ 6 failed, 4 passed in 0.34s =============
Hi! I don’t understand what’s wrong with my code now. It looks the same to me.
Code and error below, thanks for the help.
def arithmetic_arranger(problems, results=True):
line1 = ""
line2 = ""
line3 = ""
dashes = ""
for problem in problems:
num1, op, num2 = problem.split()
if len(problems) > 5:
return "Error: Too many problems."
if op != "+" and op != "-":
return "Error: Operator must be '+' or '-'."
if not num1.isdigit() or not num2.isdigit():
return "Error: Numbers must only contain digits."
if len(num1) > 4 or len(num2) > 4:
return "Error: Numbers cannot be more than four digits."
line1 = line1 + ""
line2 = line2 + ""
line3 = line3 + ""
ans = eval(problem)
l = max(len(num1), len(num2)) + 2
line1 += num1.rjust(l) + " "
line2 += op + num2.rjust(l - 1) + " "
dashes += ""
for i in range(l):
dashes = dashes + "-"
line3 += str(ans).rjust(l) + " "
for d in range(3):
dashes = dashes + " "
if results:
arranged_problems = line1 + "\n" + line2 + "\n" + dashes + "\n" + line3
else:
arranged_problems = line1 + "\n" + line2 + "\n" + dashes
return arranged_problems
32 3801 45 123
+ 698 - 2 + 43 + 49
----- ------ ---- -----
======================== test session starts ========================
platform linux -- Python 3.10.8, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- /home/runner/boilerplate-arithmetic-formatter/venv/bin/python
cachedir: .pytest_cache
rootdir: /home/runner/boilerplate-arithmetic-formatter
collected 10 items
test_module.py::test_template[test_two_problems_arrangement1] FAILED [ 10%]
test_module.py::test_template[test_two_problems_arrangement2] FAILED [ 20%]
test_module.py::test_template[test_four_problems_arrangement] FAILED [ 30%]
test_module.py::test_template[test_five_problems_arrangement] FAILED [ 40%]
test_module.py::test_template[test_too_many_problems] PASSED [ 50%]
test_module.py::test_template[test_incorrect_operator] PASSED [ 60%]
test_module.py::test_template[test_too_many_digits] PASSED [ 70%]
test_module.py::test_template[test_only_digits] PASSED [ 80%]
test_module.py::test_template[test_two_problems_with_solutions] FAILED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] FAILED [100%]
============================= FAILURES ==============================
___________ test_template[test_two_problems_arrangement1] ___________
arguments = [['3801 - 2', '123 + 49']]
expected_output = ' 3801 123\n- 2 + 49\n------ -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3801 - 2", "123 + 49"]
E assert ' 3801 123 \n- 2 + 49 \n------ ----- ' == ' 3801 123\n- 2 + 49\n------ -----'
E - 3801 123
E ? -
E + 3801 123
E ? +++
E - - 2 + 49
E ? -
E + - 2 + 49
E ? +++
E - ------ -----
E ? -
E + ------ -----
E ? +++
test_module.py:77: AssertionError
___________ test_template[test_two_problems_arrangement2] ___________
arguments = [['1 + 2', '1 - 9380']]
expected_output = ' 1 1\n+ 2 - 9380\n--- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["1 + 2", "1 - 9380"]
E assert ' 1 1 \n+ 2 - 9380 \n--- ------ ' == ' 1 1\n+ 2 - 9380\n--- ------'
E - 1 1
E ? -
E + 1 1
E ? +++
E - + 2 - 9380
E ? -
E + + 2 - 9380
E ? +++
E - --- ------
E ? -
E + --- ------
E ? +++
test_module.py:77: AssertionError
___________ test_template[test_four_problems_arrangement] ___________
arguments = [['3 + 855', '3801 - 2', '45 + 43', '123 + 49']]
expected_output = ' 3 3801 45 123\n+ 855 - 2 + 43 + 49\n----- ------ ---- -----'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]
E assert (' 3 3801 45 123 \n'\n '+ 855 - 2 + 43 + 49 \n'\n '----- ------ ---- ----- ') == (' 3 3801 45 123\n'\n '+ 855 - 2 + 43 + 49\n'\n '----- ------ ---- -----')
E - 3 3801 45 123
E ? - - -
E + 3 3801 45 123
E ? +++
E - + 855 - 2 + 43 + 49
E ? - - -
E + + 855 - 2 + 43 + 49
E ? +++
E - ----- ------ ---- -----
E ? - - -
E + ----- ------ ---- -----
E ? +++
test_module.py:77: AssertionError
___________ test_template[test_five_problems_arrangement] ___________
arguments = [['11 + 4', '3801 - 2999', '1 + 2', '123 + 49', '1 - 9380']]
expected_output = ' 11 3801 1 123 1\n+ 4 - 2999 + 2 + 49 - 9380\n---- ------ --- ----- ------'
fail_message = 'Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
E AssertionError: Expected different output when calling "arithmetic_arranger()" with ["11 + 4", "3801 - 2999", "1 + 2", "123 + 49", "1 - 9380"]
E assert (' 11 3801 1 123 1 \n'\n '+ 4 - 2999 + 2 + 49 - 9380 \n'\n '---- ------ --- ----- ------ ') == (' 11 3801 1 123 1\n'\n '+ 4 - 2999 + 2 + 49 - 9380\n'\n '---- ------ --- ----- ------')
E - 11 3801 1 123 1
E ? - - - -
E + 11 3801 1 123 1
E ? +++
E - + 4 - 2999 + 2 + 49 - 9380
E ? - - - -
E + + 4 - 2999 + 2 + 49 - 9380
E ? +++
E - ---- ------ --- ----- ------
E ? - - - -
E + ---- ------ --- ----- ------
E ? +++
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 ? -
E + 3 988
E ? +++
E - + 855 + 40
E ? -
E + + 855 + 40
E ? +++
E - ----- -----
E ? -
E + ----- -----
E ? +++
E - 858 1028
E ? -
E + 858 1028
E ? +++
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`.'
@pytest.mark.parametrize('arguments,expected_output,fail_message', test_cases)
def test_template(arguments, expected_output, fail_message):
actual = arithmetic_arranger(*arguments)
> assert actual == expected_output, fail_message
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 ? - - - -
E + 32 1 45 123 988
E ? +++
E - - 698 - 3801 + 43 + 49 + 40
E ? - - - -
E + - 698 - 3801 + 43 + 49 + 40
E ? +++
E - ----- ------ ---- ----- -----
E ? - - - -
E + ----- ------ ---- ----- -----
E ? +++
E - -666 -3800 88 172 1028
E ? - - - -
E + -666 -3800 88 172 1028
E ? +++
test_module.py:77: AssertionError
====================== short test summary info ======================
FAILED test_module.py::test_template[test_two_problems_arrangement1]
FAILED test_module.py::test_template[test_two_problems_arrangement2]
FAILED test_module.py::test_template[test_four_problems_arrangement]
FAILED test_module.py::test_template[test_five_problems_arrangement]
FAILED test_module.py::test_template[test_two_problems_with_solutions]
FAILED test_module.py::test_template[test_five_problems_with_solutions]
==================== 6 failed, 4 passed in 0.22s ====================
The tests are telling you that you have extra spaces at the end of lines