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[0]
        operator = new_list[1]
        row2 = new_list[2]

        # 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

ok that was fast, thank you for your answer.

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 :sweat_smile:

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 :slight_smile:

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[0]
        operator = new_list[1]
        row2 = new_list[2]

        # 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.