Describe your issue in detail here.
I have the code working so that when I manually call the function and compare the output to the expected output they appear to be the same.
For some reason however the code is not passing the test_module and produces a failure for the test_arrangement and the test_solutions. For both if I compare the print of the expected string and the returned string they look identical to me.
Your code so far
def arithmetic_arranger(problems,SecondValue = False):
line1 = ""
line2 = ""
line3 = ""
line4 = ""
Allthelines = ""
i = 0
if len(problems) > 5 :
return "Error: Too many problems."
for n in problems:
n= n.split()
if n[1] != "+" and n[1] != "-":
return "Error: Operator must be '+' or '-'."
if len(n[0])>4 or len(n[2])>4:
return "Error: Numbers cannot be more than four digits."
if not str.isdigit(n[0]) or not str.isdigit(n[2]):
return "Error: Numbers must only contain digits."
if int(n[0])>=int(n[2]):
abbbb = str(int(n[0]) + int(n[2]))
else:
abbbb = "-" + str(int(n[2])-int(n[0]))
n[0]= " " + n[0]
n[2]= " " + n[2]
while len(n[0])>len(n[2]) :
n[2]= " " + n[2]
while len(n[0])<len(n[2]) :
n[0]= " " + n[0]
while len(n[0])> len(abbbb):
abbbb = " " + abbbb
nline3 ="-"
for d in n[0]:
nline3 = nline3 + "-"
nline1 = " " + n[0]
nline2 = n[1] + n[2]
nline4 = " " + abbbb
if i< len(problems):
nline1 = nline1 + " "
nline2 = nline2 + " "
nline3 = nline3 + " "
nline4 = nline4 + " "
i += 1
line1 = line1 + nline1
line2 = line2 + nline2
line3 = line3 + nline3
line4 = line4 + nline4
Allthelines = line1 + "\n" + line2 + "\n" + line3
if SecondValue:
Allthelines = Allthelines + "\n" + line4
return Allthelinestype or paste code here
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73
Thanks for the quick reply here the console log:
I actually accounted for that and I am only adding the 4 spaces to the string if it is not the last one in the line.
======================================================================
FAIL: test_arrangement (test_module.UnitTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/boilerplate-arithmetic-formatter/test_module.py", line 10, in test_arrangement
self.assertEqual(actual, expected, 'Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]')
AssertionError: ' [23 chars] 123 \n+ 855 - 2 + 43 + 49 [35 chars] ' != ' [23 chars] 123\n+ 855 - 2 + 43 + 49\n-----[23 chars]----'
- 3 3801 45 123
? ----
+ 3 3801 45 123
- + 855 - 2 + 43 + 49
? ----
+ + 855 - 2 + 43 + 49
- ----- ------ ---- ----- ? ----
+ ----- ------ ---- ----- : Expected different output when calling "arithmetic_arranger()" with ["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]
======================================================================
FAIL: test_solutions (test_module.UnitTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/runner/boilerplate-arithmetic-formatter/test_module.py", line 39, in test_solutions
self.assertEqual(actual, expected, 'Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with arithmetic problems and a second argument of `True`.')
AssertionError: ' 3[23 chars] 123 \n- 698 - 3801 + 43 + 49 [73 chars] ' != ' 3[23 chars] 123\n- 698 - 3801 + 43 + 49\n-----[57 chars] 172'
- 32 1 45 123
? ----
+ 32 1 45 123
- - 698 - 3801 + 43 + 49
? ----
+ - 698 - 3801 + 43 + 49
- ----- ------ ---- -----
? ----
+ ----- ------ ---- -----
- -666 -3800 88 172 ? ----
+ -666 -3800 88 172 : Expected solutions to be correctly displayed in output when calling "arithmetic_arranger()" with arithmetic problems and a second argument of `True`.
----------------------------------------------------------------------
Ran 6 tests in 0.004s
FAILED (failures=2)