Programación Web y Scripting > Python
Ecuacion 2do Grado.
(1/1)
ganryu:
Holas, hice este programita para resolver ecuaciones de segundo grado, pero querria mejorar el código de manera que no tenga tantos condicionales anidados, pero no se me ocurre como hacerlo :brickwall:. Disculpen si mi pregunta es muy básica :P .
--- Código: Python ---# -*- coding: UTF-8 -*-print "Ecuación ax² + bx + c = 0" a = float(raw_input("Escribe el valor del coeficiente a: "))b = float(raw_input("Escribe el valor del coeficiente b: "))c = float(raw_input("Escribe el valor del coeficiente c: "))det = b ** 2 - 4 * a * c #cuando es mayor que 0 la raiz da un numero real, cuando es menor la raiz no tiene solucion real. if det < 0: print "Sin solución real."elif det == 0: if a == 0 and c == 0: #esto es para evitar usar -b/2a que da como resultado 0/0. print "Todos los números son solución." elif a == 0: print "No tiene solución" else: print "Una única solución real:", (-b) / (2 * a) #debido a que la raiz vale 0.elif a == 0: #en este caso la ecuacion es una ecuacion de primer grado. if b == 0: if c == 0: print "Todos los numeros son solución" else: print "No tiene solución" else: print "Una solución:", -c / b else: print "Dos soluciones reales:", (-b +(det ** 0.5)) / (2*a), (-b -(det ** 0.5)) / (2 * a)
RadicalEd:
Pos ayer estaba haciendo lo mismo, si te sirve mira este código aunque realmente si lo que te interesa son las decisiones tú lo acomodarás, no es difícil:
--- Código: Python ---import math def separar(ecu): """Esta funcion separara cada valor de la ecuacion""" ecu = ecu.replace('t', '') #Se reemplazan los tabulados nueva = ecu.split('x^2') #quitamos los valores con x^2 y x nueva += nueva[1].split('x') #Se elimina el indice 1 de la lista y lo dejamos #con los datos necesarios nueva.remove(nueva[1]) #Ahora recorremos la lista para no dejar signos sin valores #creamos un contador para el indice cont = 0 for h in nueva: if h == '+' or h == '-' or h == '': #Si es un signo +/- o sino es nada h += '1' nueva.remove(nueva[cont]) nueva.insert(cont, h) cont += 1 x = cuadratica(int(nueva[0]), int(nueva[1]), int(nueva[2])) return x ##Esta es tú funcióndef cuadratica(a, b, c): """Vamos a obtener el valor de X por medio de la ecuacion cuadratica""" raiz = math.sqrt((b**2)-(4*a*c)) x1 = (-b + raiz)/(2*a) x2 = (-b - raiz)/(2*a) lista = [str(x1), str(x2)] return lista archi = open('quadratic.txt').readlines()suma = 0for h in archi: z = separar(h) for l in z: #Si al final sale un .0 entonces lo volvemos entero y se suma if l[-2:] == '.0': suma += int(l.replace('.0', '')) print suma
ganryu:
Muchas gracias, soy nuevo en esto de programar asi que me van a ver durante un tiempo por aca :), la idea que tengo es ir aprendiendo sobre la marcha haciendo programas.
RadicalEd:
Eres bienvenido y :good: por escoger Python, es un gran lenguaje y estás en el mejor foro en todo el multiverso y paralelos.
Navegación
Ir a la versión completa