Tell us what’s happening:
I’ve been having problems with returning a string instead of just printing out the formatted calculation thing. I’ve managed to ‘solve’ the problem and print out the numbers correctly formated but it obviously doesn’t return as a string and i have no idea how to do that.
Can i even do something like (" " * x) on a string like i can on a print statement? Which is something i’ve used, this is getting frustrating because it’s such a dumb issue
x, y and z are basically the number of spaces i have to print out, it’s probably not obvious to someone reading the code
Your code so far
def arithmetic_arranger(problems): # error checking before any calculations are made, starting by the number of problems provided if len(problems) > 5: return 'Error: Too many problems.' # checking for more errors for value in problems: # number of digits and operator error checking if len(value.split()) > 4 or len(value.split()) > 4: return 'Error: Numbers cannot be more than four digits.' elif value.split() not in ['+', '-']: return "Error: Operator must be '+' or '-'." # now this actually works, didn't expect it to. I don't think it's the correct way to do it though, however it's there and it works. checking if the number is actually a number try: test_var1 = int(value.split()) test_var2 = int(value.split()) except: return "Error: Numbers must only contain digits." # actually writing the function now first_number = list() second_number = list() operators = list() # creating lists for value in problems: first_number.append(value.split()) second_number.append(value.split()) operators.append(value.split()) print("first", first_number, "operator", operators, "second", second_number) for j in range(3): for i in range(len(problems)): flen = len(first_number[i]) slen = len(second_number[i]) if flen > slen: y = 2 x = 1 + flen - slen z = 2 + flen elif slen > flen: x = 1 y = 2 + slen - flen z = slen + 2 elif slen == flen: x = 1 y = 2 z = flen + 2 if j == 0: #print("first line") print(" " * y, first_number[i], " " * 4,sep="", end="") elif j == 1: if i == 0: print() print(operators[i], " " * x, second_number[i], " " * 4, sep = "", end="") elif j == 2: if i == 0: print() print("-" * z, " " * 4, end="", sep="") return
Your browser information:
User Agent is:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36.
Challenge: Arithmetic Formatter
Link to the challenge: