Arithmetic Arranger posible solution / Posible solución del Arithmetic Arranger

Hi, wassup? Here is my solution to the introductory python arithmetic arranger exercise. I’m just getting started on this, so sure someone can make some more <> code. What would you improve ?:

Hola, que tal? Les dejo mi solución al ejercicio arithmetic arranger para python introductorio. Recién empiezo con esto, asique seguro alguien puede hacer un codigo más <>. Que le mejorarian?:

def arithmetic_arranger(problems, showAns = False):
    #Chequear problemas maximos:
    if len(problems) > 5 :
        return "Error: Too many problems."
    else:
        #print(arranged_problems)
        #print(problems)
        #Separar datos
        primera_linea = ""
        segunda_linea = ""
        linea_punteada = ""
        linea_respuesta = ""
        for problem in problems:
            a = problem.split()
            primero = a[0]
            segundo = a[-1]
            operador = a[1]
            #print(primero, operador, segundo)
            #Chequear que los números sean numeros
            if not primero.isnumeric() or not segundo.isnumeric():
                return "Error: Numbers must only contain digits."
            #print(primero, operador, segundo)
            #Chequear longitud de los numeros
            if len(primero) > 4 or len(segundo) > 4:
                return "Error: Numbers cannot be more than four digits."
            #print(primero, operador, segundo)
            #Chequear operadores
            if operador == '+':
                respuesta = int(primero) + int(segundo)
            elif operador == '-':
                respuesta = int(primero) - int(segundo)
            else:
                return "Error: Operator must be '+' or '-'."
            #Poner espacios
            ancho = (max(len(segundo),len(primero))+ 2)
            primera_linea += str(primero).rjust(ancho)
            segunda_linea += operador +str(segundo).rjust(ancho - 1)
            linea_punteada += "-" * ancho
            linea_respuesta += str(respuesta).rjust(ancho)
            # En caso de que haya otra operación, deja 4 espacios
            if len(problems) >= 1:
                primera_linea += "    "
                segunda_linea += "    "
                linea_punteada += "    "
                linea_respuesta += "    "
            #Resuelva ecuaciones
            if showAns == True:
                arranged_problems = (primera_linea.rstrip() + "\n" + segunda_linea.rstrip() + '\n' + linea_punteada.rstrip() + '\n' + linea_respuesta.rstrip())
            else:
                arranged_problems = (primera_linea.rstrip() + "\n" + segunda_linea.rstrip() + '\n' + linea_punteada.rstrip())
    

    return arranged_problems

Greetings!

Saludos!

I have edited your post.

If you post a full passing solution to a challenge and have questions about it, please surround it with [spoiler] and [/spoiler] tags on the line above and below your solution code.

1 Like