forked from freeCodeCamp/boilerplate-arithmetic-formatter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharithmetic_arranger.py
74 lines (66 loc) · 1.97 KB
/
arithmetic_arranger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
def arithmetic_arranger(problems, mostrar=False):
texto = ""
lista = [x.split() for x in problems]
primeiro = [p[0] for p in lista]
operador = [o[1] for o in lista]
segundo = [s[2] for s in lista]
maxLen = []
for c in range(len(segundo)):
lenSegundo = len(segundo[c])
lenPrimeiro = len(primeiro[c])
# Colocando maior len entre o primeiro e segundo operador
maxLen.append(max(lenSegundo, lenPrimeiro))
if mostrar:
resposta = [eval(r) for r in problems]
# Primeiro numero
for i, m in enumerate(maxLen):
texto += f'{primeiro[i].rjust(m + 2)} '
texto = texto.rstrip()
texto += '\n'
# Operador e segundo numero
for i, m in enumerate(maxLen):
texto += f'{operador[i]} {segundo[i].rjust(m)} '
texto = texto.rstrip()
texto += "\n"
# Hifens
for m in maxLen:
texto += f'{"-" * (m + 2)} '
texto = texto.rstrip()
texto += "\n"
# Resposta
for i, m in enumerate(maxLen):
texto += f'{str(resposta[i]).rjust(m + 2)} '
texto = texto.rstrip()
else:
texto = ""
# Primeiro numero
for i, m in enumerate(maxLen):
texto += f'{primeiro[i].rjust(m + 2)} '
texto = texto.rstrip()
texto += "\n"
# Operador e segundo numero
for i, m in enumerate(maxLen):
texto += f'{operador[i]} {segundo[i].rjust(m)} '
texto = texto.rstrip()
texto += "\n"
# Hifens
for m in maxLen:
texto += f'{"-" * (m + 2)} '
texto = texto.rstrip()
# Erros
if len(problems) > 5:
return("Error: Too many problems.")
for c in primeiro + segundo:
if len(c) > 4:
return("Error: Numbers cannot be more than four digits.")
try:
int(c)
except:
return("Error: Numbers must only contain digits.")
finally:
pass
for c in problems:
if ("/" or "*") in c:
return("Error: Operator must be '+' or '-'.")
return texto
#print(arithmetic_arranger(["3 + 855", "3801 - 2", "45 + 43", "123 + 49"]))