Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/02/2015, 13:28
xredesycx
 
Fecha de Ingreso: diciembre-2012
Ubicación: Lima
Mensajes: 37
Antigüedad: 12 años
Puntos: 0
Pregunta conversion de string a entero

Buenas tardes amigos.

Actualmente estoy comenzando a estudiar Python y e intentado resolver el siguiente ejemplo encontrando algo que me quebro la cabeza

#Ejercicio1. creamos una funcion que imprima el cuadrado de un numero dado.

Código Python:
Ver original
  1. def cuadrado(n):
  2.     r = n**2
  3.     print("El cuadrado de ",n ," es: ",r)
  4.  
  5. cuadrado(10)
  6.  
  7. cuadrado(20)


#Ejercicio2. Solicitar un numero y este elevarlo al cuadrado (usar la funcion anterior)
# -- mi primera solucion fue esta:

Código Python:
Ver original
  1. def cuadrado2():
  2.     i = input("Ingrese un numero: ")
  3.     cuadrado(n)
  4.  
  5. cuadrado2()

pero me arrojo el siguiente error

Ingrese un numero: 10
Traceback (most recent call last):
File "classone.py", line 48, in <module>
cuadrado2()
File "classone.py", line 46, in cuadrado2
cuadrado(i)
File "classone.py", line 33, in cuadrado
r = n**2
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

Lo cual entendi que era; que al elevar al cuadrado no se estaba entregando una varaible entero por lo cual aparecia el error.

# -- mi segunda solucion fue esta:

Código Python:
Ver original
  1. def cuadrado2():
  2.     i = input("Ingrese un numero: ")
  3.     int(i)
  4.     cuadrado(i)
  5.  
  6. cuadrado2()

Arrojandome el mismo error,

# -- mi tercera solucion fue esta

Código Python:
Ver original
  1. def cuadrado2():
  2.     i = input("Ingrese un numero: ")
  3.     n = int(i)
  4.     cuadrado(n)
  5.  
  6. cuadrado2()
Y aqui si "Wa La" me funciono, mi pregunta principal es porque al parsear directamente la variable "i" a entero en la segunda solucion y despues pasandola como parametro a la funcion "cuadrado" me siguio votando error, porque tuve que utilizar otra variable "n" para almacenar la variable parseada y estada recien mandarla como parametro a la funcion "cuadrado".

Y otra pregunta, existe otra manera de realizar este ejemplito :)
Estoy utilizando Python 3.4.2 por cierta.
Gracias por su respuesta de ante mano.
__________________
**********
I can do it !!!
**********