Autor
|
Tema: Error en iniciación a Python. (Leído 4,733 veces)
|
RodrigoGuitar
Desconectado
Mensajes: 4
|
[MOD]: Usa las etiquetas de código.
Hola, hace un par de días empecé a mirar algo de Python. Mi contacto previo con la programación fue corto, en Java, y hace un año, así que se podría decir que estoy de cero. Empecé a familiarizarme con la IDLE de python, y algunas cosas básicas como comparaciones, loops y cadenas, y después de crear el primer "programa"(una copia de la idle funcionando sólo como calculadora) estaba probando a hacer uno para calcular ecuaciones de segundo grado. El caso es que me tira error, y aunque seguro que es una cosa muy básica no consigo apreciarlo ni nada, a ver si me podéis ayudar: while True: #Loop print("A partir de la forma: a*x^2+b*x+c=0") a=input("Introduce \"a\"") b=input("Introduce \"b\"") c=input("Introduce \"c\"") d=((b**2)-(4*a*c)) if d<0: print("No tiene solución") if d==0: x=(-b/(2*a)) print("Solucion unica, x=",x) if d>0: x1=((-b+((b**2 - 4*a*c))**0.5)/(2*a)) x2=((-b-((b**2 - 4*a*c))**0.5)/(2*a)) print("Las soluciones son las siguientes: ",x1," ",x2)
El error aparece después de introducir las tres variables, en la línea en la que se determina "d", y es el siguiente: Traceback (most recent call last): File "<pyshell#21>", line 6, in <module> d=((b**2)-(4*a*c)) TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Gracias de antemano
|
|
« Última modificación: 21 Febrero 2014, 04:18 am por Eleкtro »
|
En línea
|
|
|
|
Sainshaca
Desconectado
Mensajes: 9
|
Tambien soy nuevo y creo que tu error esta en que no estas declarando tus input como INT ya que por defecto un raw_input viene como tipo string deberias declararlo tipo int es decir
a = int(raw_input("Introduce \a\"))
|
|
|
En línea
|
|
|
|
WaAYa HaCK
Desconectado
Mensajes: 292
Arduino, Android and music
|
La función raw_input() recoge los datos en forma de cadena, aunque entres un número. Por eso no puede elevar un texto al cuadrado. Siguiendo el consejo de Sainshaca, con poner int() y dentro el raw_input() lo reconocerá como un entero.
Saludos!
|
|
|
En línea
|
La cacatúa yoyó es nueva en el zoo!
|
|
|
RodrigoGuitar
Desconectado
Mensajes: 4
|
Gracias pero con ese código no me reconoce la función raw_input() Anoche estuve probando y al final sí caí en lo que decís, que está declarado como cadena, por lo que añadí a todos los input() un float(input()), con lo que se me resolvió(aunque también tuve que arreglar que cuando la ecuación era en realidad de 1º grado dividía entre cero y daba error). Aun así, ¿me podéis explicar por favor qué pasa con el raw_input()? Edito: la versión "final" de lo que terminé anoche fue esta: while True: print("A partir de la forma: a*x^2+b*x+c=0") a=float(input("Introduce \"a\": ")) b=float(input("Introduce \"b\": ")) c=float(input("Introduce \"c\": ")) d=float((b**2)-(4*a*c))
if a==0: x=float(-c/b) print("Solucion unica, x=",x) else: if d<0: print("No tiene solucion.") if d==0: x=(-b/(2*a)) print("Solucion unica, x=",x) if d>0: x1=float((-b+((b**2 - 4*a*c))**0.5)/(2*a)) x2=float((-b-((b**2 - 4*a*c))**0.5)/(2*a)) print("Las soluciones son las siguientes: ","x1=",x1," x2=",x2)
|
|
« Última modificación: 17 Febrero 2014, 14:54 pm por RodrigoGuitar »
|
En línea
|
|
|
|
WaAYa HaCK
Desconectado
Mensajes: 292
Arduino, Android and music
|
¿Dónde te salta el error esta vez?
|
|
|
En línea
|
La cacatúa yoyó es nueva en el zoo!
|
|
|
RodrigoGuitar
Desconectado
Mensajes: 4
|
En el código que he puesto no me salta error, funciona bien pero la duda era cómo usar el raw_input() que me comentasteis. Al utilizarlo, ni siquiera me lo reconoce como algo más que una cadena de texto. No se si tendrá algo que ver, pero estoy usando la shell IDLE 3.3.4.
|
|
|
En línea
|
|
|
|
tmb90
Desconectado
Mensajes: 35
|
[MOD]: Usa las etiquetas de código.
No entiendo bien cual es el problema. Simplemente podrias hacer eso, que no seria mas que agregar "raw_" a los "input" while True: print("A partir de la forma: a*x^2+b*x+c=0") a=float(raw_input("Introduce \"a\": ")) b=float(raw_input("Introduce \"b\": ")) c=float(raw_input("Introduce \"c\": ")) d=((b**2)-(4*a*c)) if a==0: x=float(-c/b) print("Solucion unica, x=",x) else: if d<0: print("No tiene solucion.") if d==0: x=(-b/(2*a)) print("Solucion unica, x=",x) if d>0: x1=float((-b+((b**2 - 4*a*c))**0.5)/(2*a)) x2=float((-b-((b**2 - 4*a*c))**0.5)/(2*a)) print("Las soluciones son las siguientes: ","x1=",x1," x2=",x2)
Como ves es exactamente lo mismo. Tal vez sea porque uso la version 2.7 de Python, porque en la version 3 fue reformado y ahora solo se llama "input" y no se si el "raw_input" fue deshabilitado. Pero como veras es lo mismo
|
|
« Última modificación: 21 Febrero 2014, 04:19 am por Eleкtro »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
a partir de la versión 3x raw_input no funciona más, solo input
|
|
|
En línea
|
|
|
|
RodrigoGuitar
Desconectado
Mensajes: 4
|
Pues eso era, uso la 3.3.4
Gracias!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Manual de Iniciación Python
Scripting
|
Lopi
|
4
|
9,156
|
2 Agosto 2005, 12:32 pm
por >biTTercold<
|
|
|
Python Error
Scripting
|
kyps
|
9
|
6,991
|
4 Enero 2010, 16:14 pm
por kyps
|
|
|
[Python] Error con PIL y py2exe
Scripting
|
Carloswaldo
|
8
|
7,979
|
18 Septiembre 2010, 08:37 am
por Carloswaldo
|
|
|
Error en Python
Scripting
|
Fyrox
|
2
|
2,735
|
31 Agosto 2011, 20:04 pm
por Fyrox
|
|
|
error en python
Scripting
|
0xDani
|
3
|
2,647
|
12 Mayo 2012, 21:09 pm
por Runex
|
|