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
def 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 original
def 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 original
def cuadrado2(): i = input("Ingrese un numero: ") int(i) cuadrado(i) cuadrado2()
Arrojandome el mismo error,
# -- mi tercera solucion fue esta
Código Python:
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".Ver original
def cuadrado2(): i = input("Ingrese un numero: ") n = int(i) cuadrado(n) cuadrado2()
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.