# Scientific Computing with Python Projects - Arithmetic Formatter

I’ve written a code that seemingly returns the desired outcome but it only manages to pass the error tests (the ones where the operator is wrong, or there aren’t only digits, etc) although as far as I know the output should be what is demanded by the test.

This is the project’s replit link: Devfile for my arithmetic formatter thing - Replit

``````def addingprotocol(comps):
try:
comps0int = int(comps[0])
comps2int = int(comps[2])
oplist.append(str(comps[1].strip()))
result = comps0int + comps2int
if len(comps[0].strip()) > len(comps[2].strip()) :
longestvar = len(comps[0].strip())
elif len(comps[0].strip()) < len(comps[2].strip()):
longestvar = len(comps[2].strip())
else:
longestvar = len(comps[0].strip())
tmpdashbarlength = longestvar + 2
dashbarlengths.append(tmpdashbarlength)
spclen1 = tmpdashbarlength - len(str(comps[0]))
var1f = spacebar[0:spclen1] + str(comps[0])
var1list.append(var1f)
spclen2 = tmpdashbarlength - len(str(comps[2]))
var2f = comps[1].strip() + spacebar[0:(spclen2-1)] + str(comps[2])
var2list.append(var2f)
spclen3 = tmpdashbarlength - len(str(result))
res3f = spacebar[0:(spclen3)] + str(result)
resultlist.append(res3f)
dashbarlists.append(dashbar[0:tmpdashbarlength])

except:
return("Error: Numbers must only contain digits.")

def substractprotocol(comps):
try:
comps0int = int(comps[0])
comps2int = int(comps[2])
oplist.append(str(comps[1].strip()))
result = comps0int - comps2int
if len(comps[0].strip()) > len(comps[2].strip()) :
longestvar = len(comps[0].strip())
elif len(comps[0].strip()) < len(comps[2].strip()):
longestvar = len(comps[2].strip())
else:
longestvar = len(comps[0].strip())
tmpdashbarlength = longestvar + 2
dashbarlengths.append(tmpdashbarlength)
spclen1 = tmpdashbarlength - len(str(comps[0]))
var1f = spacebar[0:spclen1] + str(comps[0])
var1list.append(var1f)
spclen2 = tmpdashbarlength - len(str(comps[2]))
var2f = comps[1].strip() + spacebar[0:(spclen2-1)] + str(comps[2])
var2list.append(var2f)
spclen3 = tmpdashbarlength - len(str(result))
res3f = spacebar[0:(spclen3)] + str(result)
resultlist.append(res3f)
dashbarlists.append(dashbar[0:tmpdashbarlength])
except:
return("Error: Numbers must only contain digits.")

resultlist = []
var1list = []
var2list = []
oplist = []
errorstatus = 0
dashbarlengths = []
dashbar = "------"
dashbarlists = []
spacebar = "      "
space4bar = "    "

def finalconcatenationT():
line1 = " "
line2 = " "
line3 = " "
line4 = " "
for number in range(len(var1list)) :
if number < len(var1list):
line1 = line1 + var1list[number] + space4bar
line2 = line2 + var2list[number] + space4bar
line3 = line3 + dashbarlists[number] + space4bar
line4 = line4 + resultlist[number] + space4bar
else:
line1 = line1 + var1list[number]
line2 = line2 + var2list[number]
line3 = line3 + dashbarlists[number]
line4 = line4 + resultlist[number]
global finalline
finalline = line1 + "\n" + line2 + "\n" + line3 + "\n" + line4
return finalline

def finalconcatenationF():
line1 = " "
line2 = " "
line3 = " "
line4 = " "
for number in range(len(var1list)) :
if number < len(var1list):
line1 = line1 + var1list[number] + space4bar
line2 = line2 + var2list[number] + space4bar
line3 = line3 + dashbarlists[number] + space4bar
line4 = line4 + resultlist[number] + space4bar
else:
line1 = line1 + var1list[number]
line2 = line2 + var2list[number]
line3 = line3 + dashbarlists[number]
line4 = line4 + resultlist[number]
global finalline
finalline = line1 + "\n" + line2 + "\n" + line3
return finalline

def arithmetic_arranger(problems, truecond=None):
global errorstatus
finalline = ""
for problem in problems:
if len(problems) > 5:
return("Error: Too many problems.")
errorstatus = 1
break
comps = problem.split()
if len(comps[0]) < 5 and len(comps[2]) < 5 :
if comps[1] == "+":
elif comps[1] == "-":
substractprotocol(comps)
else:
return("Error: Operator must be '+' or '-'.")
errorstatus = errorstatus + 1
else:
return("Error: Numbers cannot be more than four digits.")
errorstatus = 1
try:
test1 = int(comps[0])
test2 = int(comps[2])
except:
return("Error: Numbers must only contain digits.")
if errorstatus == 0 and truecond == True:
finalconcatenationT()
elif errorstatus == 0 and truecond != True:
finalconcatenationF()
else:
return("Looks like this blew up. Woops!")
``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36`

Challenge: Scientific Computing with Python Projects - Arithmetic Formatter

When I run:

``````arithmetic_arranger(["32 + 698", "3801 - 2", "45 + 43", "123 + 49"])
``````

it returns `None`.

That’s weird, I did have it running before but it seems you are right, I must’ve messed up something and didn’t notice, thank you for the input!

Also, your replit does not have the other boilerplate code that includes the actual tests that would show that you have successfully or unsuccessfully fulfilled the user stories for this certification project.

Yes, I am aware, I accidentally deleted those but whenever I have to test I use a replit with the tests intact and paste my code there.
As for the code, I patched it and it seems I had white spaces before the linebreaks that I did not notice until further examination of the testing result + the original issue you pointed out, so the issue is resolved, thank you for the feedback.