From 8fb65b3cd3e0634e608961d98c6ed5fd94742cde Mon Sep 17 00:00:00 2001 From: Cristian García Date: Sun, 08 Sep 2013 12:57:33 +0000 Subject: Arreglando unos cuantos bugs --- 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 diff --git a/Errores conocidos b/Errores conocidos new file mode 100644 index 0000000..446e3b5 --- /dev/null +++ b/Errores conocidos @@ -0,0 +1,12 @@ +Operacion: -x +Traceback (most recent call last): + File "Calculadora.py", line 229, in + Calculadora(cuenta) + File "Calculadora.py", line 66, in __init__ + print self.reducir_polinomios(operacion) + File "Calculadora.py", line 189, in reducir_polinomios + res = str(eval(resultado)) + 'x' + File "", line 1 + - + ^ +SyntaxError: unexpected EOF while parsing -- cgit v0.9.1