Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Calculadora.py
diff options
context:
space:
mode:
Diffstat (limited to 'Calculadora.py')
-rw-r--r--Calculadora.py104
1 files changed, 65 insertions, 39 deletions
diff --git a/Calculadora.py b/Calculadora.py
index 4f59e15..f5b2cd8 100644
--- a/Calculadora.py
+++ b/Calculadora.py
@@ -92,7 +92,7 @@ class Calculadora():
for x in miembro2:
for x2 in miembro2[x]:
miembro2_str += x2
-
+
ecuacion = miembro1_str + '=' + miembro2_str
return ecuacion
@@ -119,89 +119,115 @@ class Calculadora():
"""
Realizando la reducción de polinomios.
"""
-
+
operacion = self.limpiar_valor(operacion)
diccionario = {}
- resultado = []
if '+' in operacion:
operacion = operacion.replace('+', ' +')
if '-' in operacion:
operacion = operacion.replace('-', ' -')
-
+
lista = operacion.split(' ')
lista = self.limpiar_valor(lista)
- resultado = 0
for x in lista:
- if x and x[0] != '-' and x[0] != '+':
- x = '+' + x
-
+ if x[0] != '-' and x[0] != '+':
+ _numero = lista.index(x)
+ lista.remove(x)
+ lista.insert(_numero, '+' + x)
+
if 'x' in x and not 'e' in x:
if not diccionario.get(1):
diccionario[1] = []
-
+
diccionario[1].append(x)
-
+
elif 'x' in x and 'e' in x:
- numero = x.split('e')[1]
+ numero = str(int(x.split('e')[1]))
+
if not diccionario.get(numero):
diccionario[numero] = []
-
+
diccionario[numero].append(x)
elif not 'x' in x and 'e' in x:
- x = int(x.split('e')[0]) ** int(x.split('e'))[1]
-
+ x = str(int(x.split('e')[0]) ** int(x.split('e')[1]))
+
if not diccionario.get(0):
diccionario[0] = []
-
+
diccionario[0].append(x)
else: # not 'x' in x and not 'e' in x:
if not diccionario.get(0):
diccionario[0] = []
-
- diccionario[0].append(x)
-
+
+ diccionario[0].append(str(x))
+
for x in diccionario:
resultado = ''
lista = diccionario[x]
-
+
for valor in lista:
- if 'x' in valor:
+ if 'x' in valor and valor != '+x' and not 'e' in valor:
numero = valor.split('x')[0]
- if not 'x' in valor:
- if 'e' in valor:
- numero = x.split('e')
-
- else:
- numero = x
+ elif valor == '+x':
+ lista.remove('+x')
+ lista.append('+1x')
+ numero = '+1'
- print resultado, numero
- if type(numero) == int and type(resultado) == str:
- resultado += str(numero)
+ elif valor == '-x':
+ lista.remove('-x')
+ lista.append('-1x')
+ numero = '-1'
- resultado += numero
+ if not 'x' in valor and 'e' in valor:
+ numero = str(int(valor.split('e')[0] ** valor.split('e')[1]))
- if resultado == '0x':
- resultado = '0'
+ if 'x' in valor and 'e' in valor:
+ numero = valor.split('xe')[0]
- print resultado
+ resultado += numero
if x == 0:
- print eval(resultado)
+ res = str(eval(resultado))
elif x == 1:
- print str(eval(resultado)) + 'x'
-
- else:
- print str(eval(resultado)) + 'xe' + str(x)
+ res = str(eval(resultado)) + 'x'
+
+ elif x > 1 or x < 0:
+ res = str(eval(resultado)) + 'xe' + str(x)
+
+ diccionario[x] = [res]
+
+ _lista = []
+ _resultado_final = ''
+
+ for x in diccionario:
+ _lista.append(x)
+
+ _lista.sort()
+ _lista.reverse()
+
+ for x in _lista:
+ lista = diccionario[x]
+ for valor in lista:
+ if valor[0] != '+' and valor[0] != '-':
+ valor = '+' + valor
+
+ _resultado_final += valor
+
+ if _resultado_final[0] == '+':
+ _resultado_final = _resultado_final[1:]
+
+ print diccionario
+ return _resultado_final
- return diccionario
+ #return diccionario
if __name__ == '__main__':
cerrar = False