I’ve been trying to solve this for weeks.
Been reading from the forum & watching videos but I can’t get it right.
https://replit.com/@suphawadeeth/boilerplate-arithmetic-formatter-2#arithmetic_arranger.py
I don’t know exactly how to read the error message on replit but it seemed I got an extra line in my output.
Please help me point out where’s wrong here.
import re
def arithmetic_arranger(problems, check = False):
if len(problems) > 5:
return 'Error: Too many problems'
top = ''
bottom = ''
dashes = ''
result = ''
output = ''
for i in problems:
if i == re.search('[a-zA-Z]', i):
return 'Error: Numbers must only contain digits'
pie = i.split()
info1 = int(pie[0])
info2 = int(pie[2])
if len(pie[0]) > 4 or len(pie[2]) > 4:
return 'Error: Numbers cannot be more than four digits'
if pie[1] == '+':
num = info1 + info2
elif pie[1] == '-':
num = info1 - info2
else:
return 'Error: Operator must be '+' or '-''
if len(str(num)) == max(len(pie[0]), len(pie[2]), len(str(num))):
space = len(str(num))
elif len(pie[0]) >= len(pie[2]):
space = len(pie[0])
else:
space = len(pie[2])
width = space + 2
line1 = str(info1).rjust(width)
line2 = pie[1] + str(info2).rjust(width - 1)
line3 = '-'.rjust(width, '-')
line4 = str(num).rjust(width)
if i != problems[-1]:
top = line1 + ' '
bottom = line2 + ' '
dashes = line3 + ' '
result = line4
else:
top = line1
bottom = line2
dashes = line3
result = line4
if check:
output = top + '\n' + bottom + '\n' + dashes + '\n' + result
else:
output = top + '\n' + bottom + '\n' + dashes
return output
My Output:
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 ' 988\n+ ...-----\n 1028' == ' 32 ... 172 1028'
E - 32 1 45 123 988
E - - 698 - 3801 + 43 + 49 + 40
E - ----- ------ ---- ----- -----
E - -666 -3800 88 172 1028
E + 988
E + + 40
E + ------...
E
E ...Full output truncated (2 lines hidden), use '-vv' to show
test_module.py:77: AssertionError