Domingo 22 de Diciembre de 2024, 20:52
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
Ecuacion 2do Grado.
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ecuacion 2do Grado. (Leído 2349 veces)
ganryu
Nuevo Miembro
Mensajes: 4
Ecuacion 2do Grado.
«
en:
Miércoles 27 de Enero de 2010, 10:12 »
0
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
. Disculpen si mi pregunta es muy básica
.
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
)
Tweet
RadicalEd
Moderador
Mensajes: 2430
Nacionalidad:
Re: Ecuacion 2do Grado.
«
Respuesta #1 en:
Miércoles 27 de Enero de 2010, 13:41 »
0
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ón
def
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
=
0
for
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
El pasado son solo recuerdos, el futuro son solo sueños
ganryu
Nuevo Miembro
Mensajes: 4
Re: Ecuacion 2do Grado.
«
Respuesta #2 en:
Miércoles 27 de Enero de 2010, 20:41 »
0
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
Moderador
Mensajes: 2430
Nacionalidad:
Re: Ecuacion 2do Grado.
«
Respuesta #3 en:
Miércoles 27 de Enero de 2010, 20:43 »
0
Eres bienvenido y
por escoger Python, es un gran lenguaje y estás en el mejor foro en todo el multiverso y paralelos.
El pasado son solo recuerdos, el futuro son solo sueños
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
Python
(Moderador:
arielb
) »
Ecuacion 2do Grado.