---
title: Curso de Python &#8211; 4. Estructuras de control de flujo
url: https://jarroba.com/curso-de-python-4-estructuras-de-control-de-flujo/
author: Ramón Invarato
date: 2020-07-17
modified: 2026-10-21
language: es
license: CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/) — attribution: "Curso de Python &#8211; 4. Estructuras de control de flujo", Ramón Invarato, jarroba.com
categories: Lenguajes de Programación
tags: python
series: Curso de Python (part 5 of 9)
repository: https://github.com/jarroba/Curso-Python/tree/master/Ejercicios
---

# Curso de Python &#8211; 4. Estructuras de control de flujo

> Aprende a controlar el flujo en Python con if, bucles for y while: alcance de los cuerpos, uso de break y ejercicios prácticos con vídeos y teoría.

Tomar decisiones, dar inteligencia a los datos para que se realicen acciones automáticamente, como subir la temperatura si hace frío o bajarla si hace calor, o escribir un millón de veces una frase con solo dos líneas.

 

 

## Teoría

 Saltar al contenido del PDF

 

[**Descargar Teoría**](https://github.com/jarroba/Curso-Python/raw/master/Teoria/4-Estructuras%20de%20control%20de%20flujo.pdf)

 

 

## 4.1- If – Sentencia Condicional

 

Quiero un helado ¿Qué camino he de tomar? ¿El que lleva a la heladería o a todo lo demás? Es una decisión sencilla pero hay que tomar la decisión correctamente, hay que pensarla por poco que sea; de lo contrario, acabaremos en cualquier otro sitio que no es nuestro objetivo.

 

 

 

## 4.2- If – Sentencia Condicional – Alcance

 

El alcance del código limitará las líneas de código que se ejecutarán si se toma un camino u otro. Dependerá del cuerpo en ejecución.

 

 

 

## 4.3- Ejemplo – If – Sentencia Condicional

 

Ejemplo rápido de una sentencia condicional con código real y funcional.

 

 

 

## 4.4- Bucle For

 

Escribir una vez, y otra vez lo mismo, y una vez más exactamente lo mismo ¿Por qué repetir el código si se puede auto-repetir a sí mismo tantas veces como queramos?

 

 

 

## 4.5- Bucle For – Alcance básico de cuerpos

 

El código que se repetirá dentro de un bucle for y el código que NO se repetirá.

 

 

 

## 4.6- Ejemplo – Bucle For – Alcance básico de cuerpos

 

Ejemplo con código de un bucle for para distinguir claramente su alcance.

 

 

 

## 4.7- Bucle For – Control del Bucle

 

Un bucle for se puede ejecutar un millón de veces, pero ¿Y si queremos terminarlo antes? ¿Esperamos a que termine el millón de ejecuciones? ¿O lo controlamos para que termine en el momento que queramos?

 

 

 

## 4.8- Bucle For – Alcance de varios cuerpos

 

El alcance de un cuerpo puede estar dentro de otro cuerpo que a su vez tiene su propio alcance.

 

 

 

## 4.9- Ejemplo – Bucle For – Alcance de varios cuerpos

 

Un ejemplo de como se utilizan varios bucles for y como afecta a cada uno de los cuerpos.

 

 

 

## 4.10- While – Bucle Condicional

 

Un bucle for se puede controlar con break y finally, pero no es elegante ¿No sería ideal tener lo mejor del bucle for y de la condicional if en una sola estructura? Pues se llama bucle While.

 

 

 

## 4.11- While – Alcance del Bucle Condicional

 

Al ser el bucle while una mezcla entre el bucle for y la condicional if, está sujeta a que el alcance varíe ligeramente.

 

 

 

## 4.12- Ejemplo – While

 

Ejemplo de uso del bucle While.

 

 

 

## Ejercicios

 

### Ejercicio [4.1-pan_y_chocolate.py](https://github.com/jarroba/Curso-Python/blob/master/Ejercicios/4.1-pan_y_chocolate.py)

 

Crea un programa que pregunte por teclado (pista: input) si hay “chocolate” primero y si hay “harina” después (pista: bool(“Cualquier valor”) es True o bool(“”) es False).

 

Si ambos son ciertos imprimiremos “Cocinamos una tarta”

 

Si solo es cierto “chocolate” imprimiremos “Haremos bombones”

 

Si solo es cierto “harina” imprimiremos “Hornearemos pan”

 

Si ninguna es cierta imprimiremos “Hoy descanso”

 

![Salida de consola del ejercicio: pregunta por chocolate y harina, y como solo hay harina imprime «Hornearemos pan»](https://jarroba.com/wp-content/uploads/2020/07/Ejercicio-pan-y-chocolate-www.jarroba.com_.png)

 

 

### Ejercicio [4.2-tablas_de_la_verdad.py](https://github.com/jarroba/Curso-Python/blob/master/Ejercicios/4.2-tablas_de_la_verdad.py)

 

Crea un programa que cree las tablas de la verdad AND y OR.

 

Para ello utiliza dos variables «a» y «b» que se vayan actualizando en cada iteración de un bucle «while» y que termine después de que «a» y «b» sean False (pista: empieza programando la tabla del AND; y continúa con la tabla del OR ayudándote de una variable auxiliar «ultima_iteracion»).

 

E imprima cada resultado de la iteración con un formato legible como (no hace falta que los espacios estén perfectos, aunque puede ayudar tabular \t):

 

![Tabla de verdad del operador OR con las cuatro combinaciones de A y B; solo False o False da False](https://jarroba.com/wp-content/uploads/2020/07/Ejercicio-AND-y-OR-www.jarroba.com_.png)

 

 

### Ejercicio [4.3-base_de_datos_banco.py](https://github.com/jarroba/Curso-Python/blob/master/Ejercicios/4.3-base_de_datos_banco.py)

 

Trabajamos para un banco y tenemos que crear una base de datos para guardar dinero de nuestros usuarios. El programa nos preguntará eternamente (pista: while true) por el nombre del usuario (clave) y luego un dinero positivo o negativo (un valor numérico; valor). En caso de que el usuario ya exista habrá que sumar al dinero que hubiera el nuevo dinero introducido, sino existiera simplemente lo guardaríamos.

 

Podremos imprimir el diccionario en cada iteración para saber qué hemos introducido y qué se ha actualizado.

 

![Salida de consola del ejercicio del banco: el diccionario de usuarios y dinero se actualiza, Juan pasa de 100 a 70](https://jarroba.com/wp-content/uploads/2020/07/Ejercicio-banco-www.jarroba.png)

 

 

### Ejercicio [4.4.-diccionario_seleccion_futbol.py](https://github.com/jarroba/Curso-Python/blob/master/Ejercicios/4.4.-diccionario_seleccion_futbol.py)

 

Dado el siguiente listado que representan a los jugadores de la selección Española de fútbol que jugó el mundial del 2010:

 

```python
futbolistas = ["1 - Casillas", "15 - Ramos", "3 - Pique", "5 - Puyol",
               "11 - Capdevila", "14 - Xabi Alonso", "16 - Busquets",
               "8 - Xavi Hernandez", "18 - Pedrito", "6 - Iniesta",
               "7 - Villa"]
```

 

Se pide:

 
1. Recorriendo una sola vez el listado, añadir a otro listado llamado “pares” los jugadores cuya clave sea par  
(clave: dorsal, valor: nombre) y en una lista llamada “impares” los nombres de los jugadores cuya clave sea impar.
2. Orden por orden alfabético la lista “impares”.
3. Dado el listado “pares”, crear otro listado “pares_al_reves” que tenga como clave el nombre del jugador y  
como valor el dorsal del jugador.

## Serie: Curso de Python

1. [Curso de Python &#8211; 0. Entorno de desarrollo para Python](https://jarroba.com/curso-de-python-0-entorno-de-desarrollo-para-python.md)
2. [Curso de Python &#8211; 1. Introducción](https://jarroba.com/curso-de-python-1-introduccion.md)
3. [Curso de Python &#8211; 2. Tipos básicos de datos](https://jarroba.com/curso-de-python-2-tipos-basicos-de-datos.md)
4. [Curso de Python &#8211; 3. Colecciones](https://jarroba.com/curso-de-python-3-colecciones.md)
5. [Curso de Python &#8211; 4. Estructuras de control de flujo](https://jarroba.com/curso-de-python-4-estructuras-de-control-de-flujo.md)
6. [Curso de Python &#8211; 5. Funciones](https://jarroba.com/curso-de-python-5-funciones.md)
7. [Curso de Python &#8211; 6. Bibliotecas/Paquetes](https://jarroba.com/curso-de-python-6-bilbiotecas-paquetes.md)
8. [Curso de Python &#8211; 7. Excepciones](https://jarroba.com/curso-de-python-7-excepciones.md)
9. [Curso de Python &#8211; 8. Ficheros](https://jarroba.com/curso-de-python-8-ficheros.md)

