Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: VonN en 6 Julio 2009, 04:09 am



Título: Duda en Python
Publicado por: VonN en 6 Julio 2009, 04:09 am
Hola acabo de iniciarme en Python, y tengo el siguiente problema:

Código
  1. import math
  2. a=raw_input("Ingresa a")
  3. b=raw_input("Ingresa b")
  4. c=raw_input("Ingresa c")
  5. z=pow(b,2)
  6. d=z-4*a*c
  7. if d>0:
  8.    w=sqrt(d)
  9.    x1=(-b+w)/(2*a)
  10.    x2=(-b-w)/(2*a)
  11.    print x1
  12.    print x2
  13. elif d==0:
  14.    x=-b/(2*a)
  15.    print x
  16. else:
  17.    print "No hay solucion en reales"

Pero me larga el siguiente error:
Código:
<module>
    z=pow(b,2)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

¿A qué se debe?


Título: Re: Duda en Python
Publicado por: Novlucker en 6 Julio 2009, 13:32 pm
Citar
¿A qué se debe?
Código
  1. z=pow(b,2)

Cual es el problema? ... el problema es que raw_input devuelve un valor de tipo string, por lo que al querer elevar la b da error, .. letra al cuadrado = error :P

Debes de hacer algo como:
Código
  1. a=int(input("Ingresa a"))

También nota que he sustituído el raw_input por input, ya que a partir de la versión 3 de python se ha reemplazado dicha función (quizás has descargado python 2.6), por lo que deja de funcionar

Saludos


Título: Re: Duda en Python
Publicado por: VonN en 6 Julio 2009, 15:41 pm
Código
  1. a=int(input("Ingresa a"))

Eso era precisamente, hace unas horas comencé a leer la propia documentación de Python. Muchas gracias Novlucker, aqui dejo el código:
Código
  1. import math
  2. a=input("Ingresa a")
  3. b=input("Ingresa b")
  4. c=input("Ingresa c")
  5. z=pow(b,2)
  6. d=z-4*a*c
  7. if d>0:
  8.    w=math.sqrt(d)
  9.    x1=(-b+w)/(2*a)
  10.    x2=(-b-w)/(2*a)
  11.    print x1
  12.    print x2
  13. elif d==0:
  14.    x=-b/(2*a)
  15.    print x
  16. else:
  17.    print "No hay solucion en reales"

Solo me ha quedado una duda. En python es necesario declarar los tipos de variables? Estuve leyendo un manual y hasta ahora no he visto que lo haga  :-\ o tal vez se me salteó :S

Un saludo!


Título: Re: Duda en Python
Publicado por: Novlucker en 6 Julio 2009, 15:52 pm
En realidad es una de las características de python .. el tipado dinámico .. lo que quiere decir que no es necesario declarar el tipo de una variable, sino que el tipo se determina en tiempo de ejecución según el valor que se le haya asignado  :P

Si no estas seguro que tipo de dato contiene una variable puedes averiguarlo con type, revisando tu primer ejemplo

Código
  1. a=input("Ingresa a")
  2. print(type(a))

Saludos :D


Título: Re: Duda en Python
Publicado por: VonN en 6 Julio 2009, 16:48 pm
Citar
Si no estas seguro que tipo de dato contiene una variable puedes averiguarlo con type

Claro eso es lo que ejemplificaba el libro.  :-\

Citar
no es necesario declarar el tipo de una variable, sino que el tipo se determina en tiempo de ejecución según el valor que se le haya asignado

 :xD Muchas gracias, esto me ha aclarado el panorama.

Un Saludo!