Funciones en Python
Siguiendo con el Tutorial Python desde cero, hoy toca hablar de las funciones. Las funciones en Python se utilizan para ejecutar un bloque de código en más de un lugar en un programa. Las funciones también pueden ser conocidas como métodos o procedimientos. El lenguaje de programación Python ya viene con muchas funciones incorporadas, un ejemplo de ello es la función print() que ya hemos utilizado, pero también nos da la posibilidad de crear nuestras propias funciones.
Como definir y llamar a una función en Python
Las funciones en python se definen con la declaración "def", seguido del nombre de la función y los paréntesis ().
Ejemplo:
Vamos a definir una función mediante el comando "def saludo()" y la salida de la función será "Estamos aprendiendo funciones en Python". Luego llamaremos la función para que se ejecute.
def saludo(): print "Estamos aprendiendo funciones en Python" saludo()
Donde:
- def saludo(): - es como se define la función
- print "Estamos aprendiendo funciones en Python" - es el contenido
- saludo() - es como se llama a la función
- Estamos aprendiendo funciones en Python - será la salida en pantalla
Hay un conjunto de reglas en Python para definir una función:
- Todos los argumentos o parámetros de entrada deben definirse dentro de los paréntesis de la función.
- La primera sentencia de una función puede ser una cadena de documentación (opcional). Esta sirve de ayuda para entender el comportamiento de la función.
- El código dentro de una función se inicia luego de los : (dos puntos) y debe tener una sangría de espacio.
La importancia de la sangría (espacio) en Python
Antes de familiarizarnos con las funciones en python, es necesario entender la regla de la sangría para declarar una función y estas reglas también son aplicables a otros elementos de Python (condicionales, bucles, etc).
Python sigue un estilo particular de sangría para definir el código, ya que las funciones en python no tienen llaves para indicar el inicio y fin de una función (debemos confiar en las sangrías).
Veremos un ejemplo donde utilizaremos la función "print" sin sangría para ver como nos devuelve un mensaje de error.
Si agregamos la sangría antes de la función "print" la salida debe ser la esperada:
Tip: Por lo menos un salto de línea es necesario para llamar a la función (saludo()), pero una buena práctica es utilizar 3 o 4 saltos de línea.
Si bien declaramos la sangría, es necesario mantener esa sangría para el resto del código. Por ejemplo, en la siguiente captura de pantalla, cuando llamamos a otra declaración "todavía estoy en la función saludo()" y no le asignemos la sangría, nos mostrará un mensaje de error.
Ahora, cuando colocamos la sangría de la segunda sentencia en el mismo nivel que la primera, el resultado es el esperado:
Como funciona el valor de retorno
El comando de retorno en Python especifica que valor se devolverá cuando se llama una función.
Veamos un ejemplo:
Paso 1: Aquí veremos cuando la función no tiene retorno. Por ejemplo, queremos hacer el cuadrado de 4 y que nos devuelva 16 cuando se ejecute la función. Esto lo logramos haciendo "print x * x", pero cuando se llama a la función "print cuadrado" la salida será "None". Esto se debe a que cuando se llama a la función, la recursividad no sucede y se cae al final de la función.
Paso 2: Para ver esto más claro, reemplazaremos el comando de impresión con una asignación y veremos la salida:
Cuando se ejecuta "print cuadrado(4)" lo que hace es devolver el valor del objeto y como no tiene ninguna función específica devuelve "None"
Paso 3: Ahora vamos a ver como recuperar la salida con el comando "return". Cuando se utiliza la función "return" y ejecutamos el código, obtendremos el valor 16.
Paso 4: Las funciones en python son en si un objeto, y un objeto tiene un cierto valor. Ahora vamos a ver como trata un objeto Python. Cuando se ejecuta "print cuadrado", el comando devuelve el valor del objeto. Puesto que no hemos pasado ningún argumento, no tenemos ninguna función específica así que devuelve un valor predeterminado (0x7f2a22fcc578) que es la ubicación del objeto. En la práctica de Python, es probable que nunca tengas que hacer esto.
Argumentos en funciones
El argumento es un valor que se pasa a la función cuando se llama. En otras palabras, cuando se llama a la función es un argumento y cuando se declara la función es un parámetro.
Veamos como funciona un argumento en Python
Paso 1 - Los argumentos se declaran cuando se crea la función.
Paso 2 - Para declarar un valor predeterminado en el argumento, lo hacemos asignándolo cuando definimos la función:
Ejemplo: x no tiene ningún valor predeterminado y el valor por defecto de y = 0. Cuando suministramos solo un argumento y llamamos a la función "multiplicar", Python asigna el valor suministrado para x y mantiene el valor de y = 0. Por lo tanto la multiplicación de x * y será 0.
Paso 3 - Esta vez vamos a cambiar el valor de y = 2 en lugar de 0, y esto nos dará la salida (4x2)=8.
Paso 4 - También podemos cambiar el orden de como se van a pasar los argumentos en Python. Acá invertimos el orden del valor de x e y para x = 4 e y = 2.
Paso 5 - Múltiples argumentos también se pueden pasar como una matriz. En este ejemplo llamamos múltiples argumentos (1,2,3,4,5) con la función (*args).
Tips:
- Hay una gran confusión en Python sobre los métodos y las funciones. Los métodos en python están asociados a instancias de objetos mientras que las funciones no. Cuando Python llama un método, se une el primer parámetro de la llamada a la referencia del objeto apropiado. En términos simples, una función independiente en Python es una "función", en tanto una función que es un atributo de una clase o una instancia es un "método".
Conclusión: Una función en Python es una pieza de código que puede realizar una o varias tareas y que puede ser re utilizada en cualquier parte del código.
-
-
Corregido, gracias!!!
-
-
complejo "Casa de playa", cuenta con 20 casas de diferentes capacidades que se alquilan por mes: Enero, Febrero, Marzo. Cada cabaña se identifica por un número del 1 a 20. Todas cuentan con cocina y comedor, se diferencian por la cantidad de baños, cantidad de habitaciones, si la cabaña tiene vista al mar o no, si tiene cochera o no, capacidad máxima de huéspedes a (2, 4, 6 y 8) y, precio por día.
Se pide realizar un programa que lea la información sobre todas las cabañas: nro. de cabaña, cantidad de baños, cantidad de habitaciones, vista al mar (si o no), cochera (si o no), capacidad máxima, precio, reservada Enero (si o no), reservada Febrero (si o no) y, reservada Marzo (si o no).
Una vez finalizada la carga de información, se comienza a leer consultas sobre información de cabañas.
Para las consultas se pide ingresar una opción: 1, 2, 3, o 4
Si la opción es:1: Se pide información sobre cabañas libres para una cantidad de personas en un mes determinado. En ese caso el programa debe solicitar se ingrese información sobre cantidad de personas, y mes (Enero, Febrero o Marzo). El programa debe imprimir información sobre las cabañas libres para ese mes pedido y que puedan albergar a esa cantidad de personas.
IMPORTANTE: Si se ingresa 1 persona se ofrece cabaña de 2, si se ingresa 3 personas, se ofrece cabaña de 4, y así con el resto.2: Se pide información sobre cabañas libres para un mes determinado que tengan vista al mar y también cochera. En este caso el programa debe solicitar que se ingrese mes (Enero, Febrero, Marzo) y listar todas las cabañas que cuentes con esas características que estén libres en el mes anotado.
3: Se pide información sobre una cabaña determinada. En este caso se pide ingresar el número de cabaña y, el programa debe imprimir información sobre meses reservados.
4: Fin de las consultas
y fin del programa.
Nesesito ayuda con este ejercicio-
casa1 = {"numero":"1","reservada":"enero","baños":"2","hab":"3","vistas":"yes","cochera":"no","max":2,"pvp":30}
casa2 = {"numero":"2","reservada":"marzo","baños":"4","hab":"1","vistas":"yes","cochera":"yes","max":5,"pvp":40}
casa3 = {"numero":"3","reservada":"junio","baños":"3","hab":"3","vistas":"no","cochera":"no","max":6,"pvp":50}
casa4 = {"numero":"4","reservada":"mayo","baños":"2","hab":"6","vistas":"yes","cochera":"yes","max":8,"pvp":60}
casa5 = {"numero":"5","reservada":"septiembre","baños":"5","hab":"7","vistas":"no","cochera":"yes","max":10,"pvp":70}
print ("--------------------------------")
print ("1. Informacion casas libres")
print ("2. Informacion opciones casas")
print ("3. Casa determinada")
print ("4. Salir")
print ("--------------------------------")
print ("")
opcion = int(input ("Elige una opcion: "))
if (opcion == 1):
mes = input ("Mes para la reserva: ")
personas = int(input ("Numero de personas: ")) + 1
if (casa1["reservada"] != mes and casa1["max"] < personas):
print ("La casa para la reserva es",casa1["numero"])
elif (casa2["reservada"] != mes and casa2["max"] < personas):
print ("La casa para la reserva es",casa2["numero"])
elif (casa3["reservada"] != mes and casa3["max"] < personas):
print ("La casa para la reserva es",casa3["numero"])
elif (casa4["reservada"] != mes and casa4["max"] < personas):
print ("La casa para la reserva es",casa4["numero"])
else:
print ("Estan todas las casas ocupadas")
-
-
elif (opcion == 2):
print ("Se pide información sobre cabañas libres para un mes determinado que tengan vista al mar y también cochera")
mes = input ("Mes para consultar: ")
if (casa1["reservada"] != mes and casa1["vistas"] == "yes" and casa1["cochera"] == "yes"):
print ("La casa libre para este mes es",casa1["numero"])
elif (casa2["reservada"] != mes and casa2["vistas"] == "yes" and casa2["cochera"] == "yes"):
print ("La casa libre para este mes es",casa2["numero"])
elif (casa3["reservada"] != mes and casa3["vistas"] == "yes" and casa3["cochera"] == "yes"):
print ("La casa libre para este mes es",casa3["numero"])
elif (casa4["reservada"] != mes and casa4["vistas"] == "yes" and casa4["cochera"] == "yes"):
print ("La casa libre para este mes es",casa4["numero"])
else:
print ("No hay cabañas disponibles")elif (opcion == 3):
ncasa = input ("Introduce el numero de cabaña para consultar: ")
#Recorremos todos los diccionarios en busca del numero
if (casa1["numero"] == ncasa):
print ("La casa se encuentra reservada en",casa1["reservada"])
elif(casa2["numero"] == ncasa):
print ("La casa se encuentra reservada en",casa1["reservada"])
elif(casa3["numero"] == ncasa):
print ("La casa se encuentra reservada en",casa1["reservada"])
elif(casa4["numero"] == ncasa):
print ("La casa se encuentra reservada en",casa1["reservada"])
elif(casa5["numero"] == ncasa):
print ("La casa se encuentra reservada en",casa1["reservada"])
else:
print ("No se encuentra la casa")elif (opcion == 4):
print ("SALIR")
else:
print ("No elegiste ninguna opcion") -
O casi que mejor asi:
Dr:casas = [{"numero":"1","reservada":"enero","baños":"2","hab":"3","vistas":"yes","cochera":"no","max":2,"pvp":30},
{"numero":"2","reservada":"marzo","baños":"4","hab":"1","vistas":"yes","cochera":"yes","max":5,"pvp":40},
{"numero":"3","reservada":"junio","baños":"3","hab":"3","vistas":"no","cochera":"no","max":6,"pvp":50},
{"numero":"4","reservada":"mayo","baños":"2","hab":"6","vistas":"yes","cochera":"yes","max":8,"pvp":60},
{"numero":"5","reservada":"septiembre","baños":"5","hab":"7","vistas":"no","cochera":"yes","max":10,"pvp":70}]
Deja una respuesta
¿No se supone que la raiz cuadrada es el número que debe elevarse para que dé otro? En el caso del 4 su raiz es dos, porque 2 elevado a 2 es igual 4. En este caso me confundió mucho esa parte, deberías corregirla.