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 originaldef cuadrado(n):
r = n**2
print("El cuadrado de ",n ," es: ",r)
cuadrado(10)
cuadrado(20)
#Ejercicio2. Solicitar un numero y este elevarlo al cuadrado (usar la funcion anterior)
# -- mi primera solucion fue esta:
Código Python:
Ver originaldef cuadrado2():
i = input("Ingrese un numero: ")
cuadrado(n)
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 originaldef cuadrado2():
i = input("Ingrese un numero: ")
int(i)
cuadrado(i)
cuadrado2()
Arrojandome el mismo error,
# -- mi tercera solucion fue esta
Código Python:
Ver originaldef cuadrado2():
i = input("Ingrese un numero: ")
n = int(i)
cuadrado(n)
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.