Duda en Python

Iniciado por VonN, 6 Julio 2009, 04:09 AM

0 Miembros y 1 Visitante están viendo este tema.

VonN

Hola acabo de iniciarme en Python, y tengo el siguiente problema:

Código (python) [Seleccionar]
import math
a=raw_input("Ingresa a")
b=raw_input("Ingresa b")
c=raw_input("Ingresa c")
z=pow(b,2)
d=z-4*a*c
if d>0:
    w=sqrt(d)
    x1=(-b+w)/(2*a)
    x2=(-b-w)/(2*a)
    print x1
    print x2
elif d==0:
    x=-b/(2*a)
    print x
else:
    print "No hay solucion en reales"


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


¿A qué se debe?



Se toma por necios a aquellos que dicen lo que todos pesamos

Novlucker

Citar¿A qué se debe?
Código (python) [Seleccionar]
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 (python) [Seleccionar]
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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

VonN

Código (python) [Seleccionar]
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 (python) [Seleccionar]

import math
a=input("Ingresa a")
b=input("Ingresa b")
c=input("Ingresa c")
z=pow(b,2)
d=z-4*a*c
if d>0:
    w=math.sqrt(d)
    x1=(-b+w)/(2*a)
    x2=(-b-w)/(2*a)
    print x1
    print x2
elif d==0:
    x=-b/(2*a)
    print x
else:
    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!



Se toma por necios a aquellos que dicen lo que todos pesamos

Novlucker

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 (python) [Seleccionar]
a=input("Ingresa a")
print(type(a))


Saludos :D
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

VonN

CitarSi no estas seguro que tipo de dato contiene una variable puedes averiguarlo con type

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

Citarno 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!



Se toma por necios a aquellos que dicen lo que todos pesamos