Skip to main content
Curso Python 3.5

Curso Python – tema 6 – Programación estructurada, trabajando con funciones

La programación estructurada busca dividir o descomponer un problema complejo en pequeños problemas, haciendo más fácil la resolución de dicho problema.

Hasta el momento, hemos trabajado con una metodología de programación lineal, es decir, todas las instrucciones de nuestro script python se ejecutan de forma secuencial de principio a fin.

Esta forma de estructurar un programa, sólo podemos llevarla a cabo para aquellos que sean muy pequeños. En el momento en el que queremos resolver problemas más complejos, será necesario utilizar la programación estructurada.

La programación estructurada busca dividir o descomponer un problema complejo en pequeños problemas, haciendo más fácil la resolución de dicho problema. Estos pequeños problemas reciben el nombre de funciones.

 

¿Qué es una función?

Una función en python es un conjunto de instrucciones que resuelven un problema específico. Por defecto, python incluye algunas funciones como las utilizadas anteriormente, print, len, range…

Vamos a resolver un primer problema para aclarar este tema de las funciones.

Problema

Realizar un programa que muestre un mensaje de bienvenida, solicite la carga de dos valores, muestre la suma y finalmente un mensaje de despedida.

 

En el ejemplo anterior, podemos ver claramente como se declara una función. Utilizaremos la palabra clave def seguida del nombre de la función, el paréntesis donde se incluirán los parámetros que explicaremos a continuación y el carácter : para mostrar que hemos terminado de definir nuestra función.

A continuación añadiremos nuestro pequeño programa, en el caso de la función bienvenida() mostraremos varios mensajes por pantalla para dar la bienvenida a nuestro programa. Al igual que pasaba con las condicionales o los bucles, la indentación de la función con respecto al contenido debe de ser de 4 espacios para cada línea.

 

Una vez declaradas nuestras funciones, para cargar las mismas, lo haremos haciendo una simple llamada a la función correspondiente.

 

Definición de parámetros

Además de crear nuestras funciones, como dijimos anteriormente podemos incluir parámetros con los que poder enviar ciertos datos a la función, haciendo más flexible el trabajo con estas.

Vamos a verlo en un ejemplo

Realizar el mismo ejercicio anterior, mostrar mensajes de bienvenida, despedida, solicitar la carga de dos valores y calcular la suma de ambos. En este caso vamos a realizar lo mismo pero utilizando parámetros para obtener la información.

 

Como vemos en el ejemplo, a las funciones bienvenida y despedida, le pasamos el mensaje a través de un parámetro al llamar a dicha función.

 

Y cuando hacemos la llamada, especificamos el valor de ese parámetro.

Por parámetro, podemos pasar cualquier tipo de valor a una función, ya sea un string, entero, lista, booleano, etc.

 

Retorno de datos

Hemos comenzado a pensar ya un poco con la metodología de programación estructurada. Como vimos, una función la definimos mediante un nombre y a la cual podemos pasar valores por medio de sus parámetros. Otra característica de las funciones es la devolución o retorno de datos. Vamos a verlo con un ejemplo:

Realizar un programa con dos funciones. Una para solicitar datos por teclado, se deberá llamar dos veces a dicha función. La segunda para calcular la suma de ambos valores.

Para devolver un dato, nos ayudamos de la palabra clave return, la cual indica a python que tiene que devolver dicho valor como resultado de la función.

 

Funciones con parámetros por defecto

En python, al igual que en muchos otros lenguajes, también podemos asignar un valor por defecto a un parámetro y en el momento de llamar a la función, cambiarlo o no.

Problema

Realizar un programa que reciba un string como parámetro y como opcional, reciba un segundo string con un carácter. La función debe mostrar el carácter opcional subrayando el primer string.

 

Este ejemplo, al imprimirlo nos quedaría de la siguiente manera

 

Vemos el parámetro opcional como tiene por defecto un valor carácter=”-“. Este parámetro obtiene este valor originalmente y podemos cambiarlo o no como hemos visto en el ejercicio anterior.

Pero que pasa si al llamar a la función alteramos el orden de los parámetros, por ejemplo al llamar lo hacemos de la siguiente manera

 

En este caso, la consola de python nos mostraría un error, porque no podemos cambiar el orden de los parámetros a no ser que lo nombremos. En Python, al contrario que en otros lenguajes, podemos alterar el orden de los parámetros, especificándolo al llamar a dicha función. Un ejemplo sería con el anterior problema.

 

En este caso al llamar a la función en la segunda vez, hemos cambiado el orden de los parámetros. Esto podemos hacerlo siempre y cuando especifiquemos el nombre del parámetro que estamos añadiendo.

 

Funciones con cantidad de parámetros variable

Otra variante a tener en cuenta en python es la definición de una cantidad variable de parámetros. Para ello nos ayudamos del carácter asterisco precediendo al último parámetro de la función. Veámoslo con un ejemplo

Realizar una función que reciba entre 2 y n valores enteros. Retornar la suma de dichos parámetros.

 

Vemos como para declarar una lista de n valores utilizamos el carácter *

Recorremos la lista ayudándonos de un bucle for y devolvemos el resultado obtenido.

 

Problemas propuestos

Ejercicio 1

Realizar un programa con dos funciones. La primera debe solicitar la carga de un valor entero y mostrar el cuadrado de dicho valor. La segunda que solicite la carga de dos valores y muestre el producto de los mismos. Deberán llamar a estas dos funciones desde el bloque principal (Fuera de toda función, como en el ejemplo realizado al principio de este tema).

Ver

 

Ejercicio 2

Realizar un programa que tenga una función que reciba un string como parámetro. Debe mostrar la cantidad de vocales que tiene dicho string. Se deberá llamar 3 veces desde el bloque principal, con 3 strings diferentes.

Ver

 

Ejercicio 3

Realizar un programa que conste de 4 funciones. La primera solicitará la carga de un valor entero. La segunda calculará la suma de los valores, la tercera la resta y la cuarta mostrará cada uno de los valores. Cargar al menos dos valores enteros.

Ver

 

Ejercicio 4

Realizar un programa que permita ingresar por teclado los nombres de 5 artículos y sus precios, definir para ellos las siguientes funciones.

Cargar los nombres de los artículos y sus precios.

Imprimir cada artículo con sus datos.

Imprimir el nombre del artículo más caro.

Solicitar la carga de un importe por teclado, mostrar después todos los artículos con un precio inferior al insertado.

Ver

 

Ejercicio 5

Realizar un programa que cargue una lista de n valores enteros. Generar dos listas, una con valores negativos y otra con los valores positivos e imprimir ambas listas.

Ver

 

Ejercicio 6

Realizar un programa que muestre la tabla de multiplicar del valor que le enviemos como parámetro. Definir un segundo parámetro con el valor 10 por defecto. Se deben mostrar tantos términos de la tabla de multiplicar como indique el segundo parámetro. Llamar a la función desde el bloque principal nombrando los argumentos.

Ver

 

Ejercicio 7

Realizar un programa que reciba una serie de edades y retorne la cantidad de personas con una edad igual o superior a 18 (como mínimo deben introducirse 3 valores enteros).

Ver

 

Además tenéis la lista completa de ejercicios en nuestro repositorio en github.

Con esto acabamos el sexto capítulo de nuestro curso de python 3.5. Si tienen cualquier duda relacionada con el contenido explicada en este capítulo, pueden exponerla en sus comentarios y le ayudaremos a resolverla lo antes posible. Nos vemos en el siguiente capítulo con la estructura de datos de tipo tupla.

<- Anterior Volver al índice Siguiente ->

4 thoughts on “Curso Python – tema 6 – Programación estructurada, trabajando con funciones

  1. hola, en los ejercicios 5, 6 y 7 no entiendo como toman los valores las funciones por ejemplo: en el ejercicio 7 como toma el valor edad, gracias

    1. Hola Andres,

      Si te fijas en la función, se inicializa la variable con el valor 0
      cant=0

      Luego en el bucle( for x in range(len(edades)): ) se itera sobre cada uno de los valores pasados a la función, de tal forma que la variable cant aumentará en 1 por cada iteración que se haga en el bucle.
      La función range, permite especificar un rango de valores, mientras que la función len() obtiene el total de valores existentes.

      Espero haber resuelto tu duda, si tienes alguna más no dudes en preguntar.
      Saludos

  2. Buenos tardes,yo la parte que no entiendo es el mensaje del ejercicio 5
    # declaramos una tercera función para imprimir los valores
    def imprimir(mensaje,lista):
    print(“-“*10)
    print(mensaje)
    print(lista)
    print(“-“*10
    ¿no se de donde toma los argumentos mensaje?
    gracias

    1. Hola Ana,

      En el ejercicio que indicas, en la función imprimir, la variable mensaje es el nombre que se le da para llamar a dicha variable desde dentro de la función, te lo explico con un ejemplo.
      En el código llamamos a la función con:
      imprimir(“Imprimimos la lista original”,lista)

      Dentro de la función imprimir los argumentos que necesita son mensaje y lista, por lo cual mensaje sería el primer valor que le pasamos, en este caso sería el texto “Imprimimos la lista original”.
      Espero haber resuelto tu duda, si tienes alguna más no dudes en preguntarla.

      Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *