elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Error en iniciación a Python.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en iniciación a Python.  (Leído 4,733 veces)
RodrigoGuitar

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Error en iniciación a Python.
« en: 16 Febrero 2014, 21:19 pm »


[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:

Código
  1. while True: #Loop
  2.  
  3. print("A partir de la forma: a*x^2+b*x+c=0")
  4.  
  5. a=input("Introduce \"a\"")
  6.  
  7. b=input("Introduce \"b\"")
  8.  
  9. c=input("Introduce \"c\"")
  10.  
  11. d=((b**2)-(4*a*c))
  12.  
  13. if d<0:
  14. print("No tiene solución")
  15.  
  16. if d==0:
  17. x=(-b/(2*a))
  18. print("Solucion unica, x=",x)
  19.  
  20. if d>0:
  21. x1=((-b+((b**2 - 4*a*c))**0.5)/(2*a))
  22. x2=((-b-((b**2 - 4*a*c))**0.5)/(2*a))
  23. 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:

Código
  1. Traceback (most recent call last):
  2.  File "<pyshell#21>", line 6, in <module>
  3.    d=((b**2)-(4*a*c))
  4. 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 Desconectado

Mensajes: 9


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #1 en: 17 Febrero 2014, 07:32 am »

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 Desconectado

Mensajes: 292


Arduino, Android and music


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #2 en: 17 Febrero 2014, 08:13 am »

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 Desconectado

Mensajes: 4


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #3 en: 17 Febrero 2014, 14:41 pm »

Gracias pero con ese código no me reconoce la función raw_input()  :huh:

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:

Código:
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 Desconectado

Mensajes: 292


Arduino, Android and music


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #4 en: 17 Febrero 2014, 17:29 pm »

¿Dónde te salta el error esta vez?
En línea

La cacatúa yoyó es nueva en el zoo!
RodrigoGuitar

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #5 en: 17 Febrero 2014, 21:12 pm »

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 Desconectado

Mensajes: 35


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #6 en: 18 Febrero 2014, 00:44 am »


[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"


Código
  1. while True:
  2. print("A partir de la forma: a*x^2+b*x+c=0")
  3. a=float(raw_input("Introduce \"a\": "))
  4. b=float(raw_input("Introduce \"b\": "))
  5. c=float(raw_input("Introduce \"c\": "))
  6. d=((b**2)-(4*a*c))
  7.  
  8. if a==0:
  9. x=float(-c/b)
  10. print("Solucion unica, x=",x)
  11. else:
  12. if d<0:
  13. print("No tiene solucion.")
  14. if d==0:
  15. x=(-b/(2*a))
  16. print("Solucion unica, x=",x)
  17. if d>0:
  18. x1=float((-b+((b**2 - 4*a*c))**0.5)/(2*a))
  19. x2=float((-b-((b**2 - 4*a*c))**0.5)/(2*a))
  20. 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 Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #7 en: 18 Febrero 2014, 04:57 am »

a partir de la versión 3x raw_input no funciona más, solo input
En línea

RodrigoGuitar

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Error en iniciación a Python.
« Respuesta #8 en: 18 Febrero 2014, 22:20 pm »

Pues eso era, uso la 3.3.4

Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manual de Iniciación Python
Scripting
Lopi 4 9,156 Último mensaje 2 Agosto 2005, 12:32 pm
por >biTTercold<
Python Error
Scripting
kyps 9 6,991 Último mensaje 4 Enero 2010, 16:14 pm
por kyps
[Python] Error con PIL y py2exe
Scripting
Carloswaldo 8 7,979 Último mensaje 18 Septiembre 2010, 08:37 am
por Carloswaldo
Error en Python
Scripting
Fyrox 2 2,735 Último mensaje 31 Agosto 2011, 20:04 pm
por Fyrox
error en python
Scripting
0xDani 3 2,647 Último mensaje 12 Mayo 2012, 21:09 pm
por Runex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines