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

[0] Índice de Mensajes

Ir a la versión completa