# Scientific Computing with Python Projects - Arithmetic Formatter

Hello guys,

im desperatly trying to solve the Arithmetic Formatter…

im getting 10 of 10 failes, but if i check the first line and all the tries in my output, it looks exactly as it should.
I even checked other solutions to find somewhere a clue but i really have no idea what’s wrong…

help or a little hint would be great.

Best

seyjo

you can find my code here:

https://replit.com/@seyjo/boilerplate-arithmetic-formatter-2#arithmetic_arranger.py

or here:

``````summe=""
arranged_problems = ""
def arithmetic_arranger(problems,solve=True):

#error if too many probs
if len(problems)>5:
return "Error, Too many problems."

value1 =""
value2 =""
line =""
solution=""

arranged_problems =""

for problem in problems:
new_list=problem.split()
row1 = new_list
operator = new_list
row2 = new_list

# only + and -
if (operator !="+" or operator !="-"):
pass
else:
return "Error: Operator must be '+' or '-'."

# only numbers
if row1.isnumeric()==True and row2.isnumeric()==True:
pass
else:
return "Error: Numbers must be only contain digits."
# max 4 digits
if (len(row1)>5 or len(row2)>4):
return "Error Numbers cannot be more than four digits."

#calculation
summe = eval(problem)

#create line:
line_length = max(len(row1),len(row2)) +2

line_n =""
for leng in range(line_length):
line_n = line_n + "-"

#align operator and row2 line
oprow = operator + row2.rjust(line_length-1)

#align and define numrow
numrow = row1.rjust(line_length)

#align summe as sumrow
sumrow = str(summe).rjust(line_length)
#print(numrow)

#glue everything together
value1 = value1 + numrow + "    "
value2= value2 + oprow + "    "
line = line + line_n + "    "
solution = solution + sumrow + "    "
#print("x")
#arranged_problems = (value1,value2, line, solution+ "\n")

if solve == True:
arranged_problems = value1 + "\n" + value2 + "\n" + line + "\n" + solution
else:
arranged_problems = value1 + "\n" + value2 + "\n" + line + "\n"

#print(arranged_problems)
return arranged_problems
#arithmetic_arranger(["3801 - 2", "123 + 49"])
#print(arranged_problems)

``````

Always adding space will cause a problem

Double check punctuation and capitalization for your error messages - it must exactly, perfectly match

the first:
Don’t get it, how to set the space? i tried tabs, more and more less space.
tabs produce uneven spaces…

second:
thank you very much, now i passed 9/10 You need to use spaces, but not after every single problem. You shouldn’t have spaces after the rightmost problem.

ok, got it, thank you very much, makes complete sense.

i rechecked my code and let it run, got 6/4.
what ´s strange is, i passed the problems with solutions but not the problems arranged…:

Blockquote
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] PASSED [ 90%]
test_module.py::test_template[test_five_problems_with_solutions] PASSED [100%]

Blockquote

current code (is refreshed in replit as well):

and please only some hints, as before, like to learn ``````summe=""
arranged_problems = ""
def arithmetic_arranger(problems,solve=True):

#error if too many probs
if len(problems)>5:
return "Error: Too many problems."

value1 =""
value2 =""
line =""
solution=""

arranged_problems =""

for problem in problems:
new_list=problem.split()
row1 = new_list
operator = new_list
row2 = new_list

# only + and -
if (operator =="+" or operator =="-"):
pass
else:
return "Error: Operator must be '+' or '-'."

# only numbers
if row1.isnumeric()==True and row2.isnumeric()==True:
pass
else:
return "Error: Numbers must only contain digits."
# max 4 digits
if (len(row1)>4 or len(row2)>4):
return "Error: Numbers cannot be more than four digits."

#calculation
summe = eval(problem)

#create line:
line_length = max(len(row1),len(row2)) +2

line_n =""
for leng in range(line_length):
line_n = line_n + "-"

#align operator and row2 line
oprow = operator + row2.rjust(line_length-1)

#align and define numrow
numrow = row1.rjust(line_length)

#align summe as sumrow
sumrow = str(summe).rjust(line_length)
#print(numrow)

#glue everything together
if problem == problems[-1]:
value1 = value1 + numrow
value2= value2 + oprow
line = line + line_n
solution = solution + sumrow
else:
value1 = value1 + numrow + "    "
value2= value2 + oprow + "    "
line = line + line_n + "    "
solution = solution + sumrow + "    "

#print("x")
#arranged_problems = (value1,value2, line, solution+ "\n")

if solve == True:
arranged_problems = value1 + "\n" + value2 + "\n" + line + "\n" + solution
else:
arranged_problems = value1 + "\n" + value2 + "\n" + line + "\n"

#print(arranged_problems)
return arranged_problems
#arithmetic_arranger(["3801 - 2", "123 + 49"])
#print(arranged_problems)

``````
``````- ------    -----
+ ------    -----
?                +
``````
``````- ---    ------
+ ---    ------
?              +
``````
``````- -----    ------    ----    -----
+ -----    ------    ----    -----
?                                 +
``````
``````- ----    ------    ---    -----    ------
+ ----    ------    ---    -----    ------
?                                         +
``````

These errors are saying you have an extra character after your line of dashes.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.