# Arithmetic arranger - issue with characters added to return

Hello,

I’m currently on the arithmetic arranger problem described here https://repl.it/github/freeCodeCamp/boilerplate-arithmetic-formatter

My code seems very close to the expected result, BUT on some iterations there is a random

“F”

or a random

“.”

that is printed right before

This is arranged_problems

(which I use to visualize what my function returns).
It’s visible on loops 3 to 7. I don’t seem to have any capital F in my code, and I’ve also double-checked all the “.” and can’t understand where they come from.

My code:

``````def arithmetic_arranger(problems, calc = False):
#initialize all values that are needed outside of the loop
pbl_firstsplit = []
pbl_secondsplit = []
pbl_line1 = []
pbl_line2 = []
pbl_line3 = []
pbl_line4 = []
pbl_line1_joined = []
pbl_line2_joined = []
pbl_line3_joined = []
pbl_line4_joined = []
return_iffalse = []
return_iftrue = []
arranged_problems = []

# 1. count number of problems
count_problems_elements = len(problems)

# 2. identified non-authorised operators
substring_multiply = "*"
substring_divide = "/"
count_wrongoperators = str(problems).count(substring_divide) + str(problems).count(substring_multiply)

# 3. regex to check on nb of digits
import re
regex_maxfourdigits = '\d{5,}'
str_problems = str(problems)
match_maxfourdigits = re.search(regex_maxfourdigits, str_problems)
match_findnondigits = re.search('[a-zA-Z]', str_problems)

# make problems_str a string so it can be split
problems_str = str(problems)

#loop on the list of problems
i = 0
while i < len(problems):
pbl = problems[i]

# split each element within each problem - will be used to compute a result later on
pbl_split1 = pbl.split()
pbl_firstsplit.append(pbl_split1)
calc1 = pbl_firstsplit[i][0]
operator = pbl_firstsplit[i][1]
calc2 = pbl_firstsplit[i][2]

#now I have to re-split the pbl string to have "element one", "operator space element 2"
pbl_split2 = pbl.split(" ",1)
pbl_secondsplit.append(pbl_split2)

# now I will pad the elements using rjust
pbl_split2_str = str(pbl_split2)
longest_inpbl = max(pbl_split2, key=len)
len_longest_inpbl = len(longest_inpbl)
padded = [str(i).rjust(len_longest_inpbl, ' ') for i in pbl_split2]

#now appending the formatted elements to each list
pbl_line1.append(pbl_secondsplit_padded[i][0] + " " * 4)
pbl_line1_joined = ''.join(pbl_line1)
pbl_line2.append(pbl_secondsplit_padded[i][1] + " " * 4)
pbl_line2_joined = ''.join(pbl_line2)
pbl_line3.append("-"* len(pbl_secondsplit_padded[i][0]) + " " * 4)
pbl_line3_joined = ''.join(pbl_line3)

# doing the computation only if a True argument is passed
if calc == True:
if operator == '+':
result = int(calc1) + int(calc2)
else:
result = int(calc1) - int(calc2)
pbl_line4.append(" " * 4)
pbl_line4_joined = ''.join([str(i) for i in pbl_line4])
return_iftrue = "\n" +str(pbl_line1_joined) + "\n" + str(pbl_line2_joined) + "\n" + str(pbl_line3_joined) + "\n" + str(pbl_line4_joined)

else:
return_iffalse = "\n" + str(pbl_line1_joined) + "\n" + str(pbl_line2_joined) + "\n" + str(pbl_line3_joined)
i+=1

# error in nb of problems
if int(count_problems_elements) > 4:
arranged_problems ="Error: Too many problems."

# error in operators, ie if string contains * or /
elif count_wrongoperators > 0:
arranged_problems ="Error: Operator must be '+' or '-'."

# error if any number is more than 4 digit long
elif match_maxfourdigits is not None:
arranged_problems = "Error: Numbers cannot be more than four digits."

elif match_findnondigits is not None:
arranged_problems = "Error: Numbers must only contain digits."

# if all else ok, convert
elif calc == True:
arranged_problems = return_iftrue

else:
arranged_problems = return_iffalse

print("***This is arranged_problems: *** "+arranged_problems)

return arranged_problems
``````

This is my output:

``````***This is arranged_problems: ***
32    3801      45     123
+ 698     - 2    + 43    + 49
-----    ----    ----    ----

32    3801      45     123
+ 698     - 2    + 43    + 49
-----    ----    ----    ----
***This is arranged_problems: ***
3    3801      45     123
+ 855     - 2    + 43    + 49
-----    ----    ----    ----
F***This is arranged_problems: *** Error: Operator must be '+' or '-'.
.***This is arranged_problems: *** Error: Numbers must only contain digits.
.***This is arranged_problems: ***
32         1      45     123
- 698    - 3801    + 43    + 49
-----    ------    ----    ----
-666     -3800      88     172
F***This is arranged_problems: *** Error: Numbers cannot be more than four digits.
.***This is arranged_problems: *** Error: Too many problems.
.
``````

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