def cuadrado(x):
    print("El cuadrado de ",x," es:",x**2)
    return x**2

"""
Explanation: Funciones
Como en cualquier otro lenguaje, en Python también es posible definir funciones, es decir, secuencias de enunciados que reciben ciertos datos, ejecutan algunas operaciones sobre ellos y devuelven un resultado.
Para definir una función se usa la palabra clave def, y el valor que va a retornar siempre debe ser precedido por un return. La sintaxis de una función es como se ve a continuación::
python
def NOMBRE(LISTA DE ARGUMENTOS):
    ENUNCIADOS
    return VALOR
ó
python
def NOMBRE(LISTA DE ARGUMENTOS):
    ENUNCIADOS
    print(VALOR)
La línea que contiene el return (o print) es opcional, pues no todas las funciones deben retornar algo. Por ejemplo, hay algunas que sólo modifican los valores de ciertas variables, por lo que no necesitan retornar o imprimir ningún valor.
Nota:
Es muy importante tener en cuenta que los enunciados que hacen parte de la función deben estar cuatro espacios por dentro del encabezado. En otras palabras, todo lo que esté indentado con cuatro espacios por dentro de la definición, pertenece al cuerpo de la función, ya que en Python la indentación es lo único que define la forma en que se agrupa el código. Sólo cuando el nivel de indentación se retorne al punto en que se escribió el primer def se considera que ha terminado la definición de la función.
Un ejemplo muy sencillo de una función que toma un argumento x y retorna este argumento elevado al cuadrado es:
End of explanation
"""


cuadrado(3)

cuadrado(5)

cuadrado(10)

cuadrado('a')

"""
Explanation: Podemos comprobar que la función esta operando correctamente al pasarle varios argumentos y ver los resultados que retorna:
End of explanation
"""


# Escribir la solución aquí


# Evaluar la función aquí


"""
Explanation: En el último caso vemos que si intentamos pasarle a la función un argumento que no puede ser procesado, Python simplemente retorna un error.
Problemas
Problema 1
Definir una función imprimir_doble que tome un argumento x y lo imprima dos veces, con un espacio entre una palabra y la siguiente. Por ejemplo, al evaluarla debe retornar:
python
imprimir_doble(5)
5 5
python
imprimir_doble('hola')
hola hola
python
imprimir_doble([3,9,4])
[3,9,4] [3,9,4]
End of explanation
"""


# Escribir la solución aquí


# Evaluar la función


"""
Explanation: Problema 2
Definir una función distancia que tome dos argumentos x,y, que sean listas de dos elementos, y calcule la distancia entre ellos usando el teorema de Pitágoras:
$$\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}}$$
Pueden comprobar que la función está haciendo su trabajo correctamente si retorna estos valores:
python
distancia([0,0], [1,1])
1.4142135623730951
python
distancia([1,5], [2,2])
3.1622776601683795
End of explanation
"""


# Escribir la solución aquí


# Evaluar la función aquí


"""
Explanation: Problema 3
Definir una función digitos que tome un numero x y retorne los dígitos de que se compone, como cadenas. Por ejemplo, digitos debe retornar:
python
digitos(1234)
['1', '2', '3', '4']
python
digitos(99861)
['9', '9', '8', '6', '1']
Nota: Utilizar los comandos de conversión entre tipos de datos, vistos al final de la sección anterior
End of explanation
"""


