Formatting looks good, but 6 tests not passing

I’ve worked out arithmetic arranger() to satisfy all the criteria visually, but 6 of the tests are failing because the expected output does not match the string for the two-problem, four problem and five problem tests. The Full output is truncated, so I can’t see the whole error message. I’m supposed to use -vv to see it, but that command does not work in the console. Any ideas?
My code looks perfect in the output window, and I can’t get the actual string to print to compare it with the expected string. I just get the formatted view in the console window.
Any thoughts on how to proceed?

Your code so far

def arithmetic_arranger(problems, solve = False):
  if len(problems) > 5:
    return("Error: Too many problems.")
  arranged_problems = "wtf"
  if(not None):
    #these hold value of current problem
    firstNum = ''
    operator = ''
    secondNum = ''
    #these hold the current state of each row
    first_row = ''
    second_row = ''
    third_row = ''
    fourth_row = ''
    #this holds the final string to be returned
    format_string = ''

  for problem in problems:
    top_space = ''
    bottom_space = ''
    solution_space = ''
    solution = ''
    #print(re.search("[^\s0-9.+-]", problem))
    if(re.search("[^\s0-9.+-]", problem)):

      if ('/' in problem or '*' in problem):
        return("Error: Operator must be '+' or '-'.")

      return("Error: Numbers must only contain digits.")    
    #print(problem)
    #split problem into three parts
    column = problem.split(' ')
    firstNum = column[0]
    secondNum = column[2]
    #determine how many spaces are needed for top row alignment
    column_width = max(len(firstNum), len(secondNum)) + 2
    lines = ''
    top_spaces = column_width - len(firstNum)
    #print(top_spaces)
    #add required spaces to top row
    while top_spaces > 0:
      top_space = top_space + ' '
      top_spaces = top_spaces - 1
    #select operator and add 1 space
    operator = column[1] + ' '
    if operator == '+ ':
      solution = int(firstNum) + int(secondNum)
    else:
      solution = int(firstNum) - int(secondNum)

    string_solution = str(solution)
    #determine number of spaces needed for second row alignment
    bottom_spaces = column_width - 2 - len(secondNum)
    #add those spaces to second row
    while bottom_spaces > 0:
      bottom_space = bottom_space + ' '
      bottom_spaces = bottom_spaces - 1
    #check number length
    #determine spaces needed to format fourth row
    solution_spaces = column_width - len(string_solution)
    #print(column_width)
    #add spaces to current problem
    while solution_spaces > 0:
      solution_space = solution_space + ' '
      solution_spaces = solution_spaces - 1
    #add lines on third row
    while column_width > 0:
      lines = lines + '_'
      column_width = column_width - 1

    
    if (len(firstNum) > 4 or len(secondNum) > 4):
      return("Error: Numbers cannot be more than four digits.")

    first_row = first_row + top_space + firstNum + '    '
    second_row = second_row + operator + bottom_space + secondNum + '    '
    third_row = third_row + lines + '    '

    if solve:
      fourth_row = fourth_row + solution_space + string_solution + '    
   
    format_string = first_row + '\n' + second_row + '\n' + third_row + '\n' + fourth_row
  
  print(format_string)
  arranged_problems = format_string
  return arranged_problems

Your browser information:

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

Challenge: Arithmetic Formatter

Link to the challenge:

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

The URL doesn’t play nicely, I guess.

https://replit.com/@CarolMurphy/boilerplate-arithmetic-formatter#main.py

When I use the root URL (without the filename) it passes for me:

https://replit.com/@CarolMurphy/boilerplate-arithmetic-formatter

Thanks Kevin!

Finally got all six to pass by tweaking the final string that gets returned as arranged_problems.
The clues were in the failed test output, It just took me a while to figure out how to make sense of what the errors were telling me.

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