Hasta ahora, en el curso de Python, hemos visto cómo resolver los problemas más sencillos pero no podemos resolver todo utilizando estructuras secuenciales. Cuando tenemos que tomar una decisión aparecen las estructuras condicionales. Por ejemplo, en nuestra vida diaria hay momentos donde tenemos que decidir entre un pantalón u otro, un camino u otro. En estos casos es común resolver un problema combinando estructuras secuenciales y condicionales.
Estructura condicional simple
Podemos ver un ejemplo de una simple estructura condicional con el siguiente esquema
Podemos observar en el esquema que el rombo representa la condición y tenemos dos opciones que podemos tomar. Si la condición devuelve un resultado verdadero, ejecutará las opciones que se encuentren en su interior, si por el contrario es falso no realizará dicha acción.
Explicado esto, vamos a realizar el primer ejercicio, se plantea el siguiente problema.
Ingresar un valor por teclado, si es mayor que 5 mostrar un mensaje confirmándolo.
1 2 3 |
num=int(input("Ingrese el valor del numero:")) if num>5: print("El numero es mayor de 5") |
Podemos observar que siempre se hace la carga del número pero, en caso de ser inferior a 5, no mostraría ningún mensaje. La palabra clave if implica el inicio de una condición, seguidamente incluimos la condición y finalizamos la línea con el carácter dos puntos.
Una de las características de python que además ayuda a tener una estructura organizada es la indentación o sangrado de texto con cuatro espacios. Es decir, si queremos incluir una condición, el texto que deba ir en su interior debe ir con cuatro espacios con respecto al inicio de la palabra if. Podemos ver un listado de los posibles operadores, al final de este capítulo, justo antes de los ejercicios.
Estructura condicional compuesta
Podemos ver un ejemplo en el siguiente esquema
Cuando se presenta una elección, tenemos la opción de realizar una actividad u otra, es decir, tenemos operaciones diferentes a ejecutar si la condición es verdadera o es falsa. Lo más importante se tener claro que, una operación incluida en uno de los dos resultados de la condición, jamás se podrá ver desde el resultado opuesto al que esperamos. Por ejemplo, volviendo al ejercicio anterior, nunca habrá un momento en el cual nos aparezca el mensaje de que el número es mayor que 5 si el número no lo es (a no ser que cambiemos la condición).
Vamos a volver a realizar el ejercicio anterior pero, con la diferencia, de que si el número es menor de 5 nos informará también de este resultado. El problema en python sería de la siguiente forma:
1 2 3 4 5 |
num=int(input("Ingrese el valor del numero:")) if num>5: print("El numero es mayor de 5") else: print("El numero es menor de 5") |
Como podemos ver, si la condición es falsa, y queremos que realice una operación la forma sería incluyendo la palabra else en una línea nueva seguida del carácter dos puntos. Después las operaciones necesarias que queramos ejecutar separadas con 4 espacios con respecto a la línea de la palabra else.
Estructuras condicionales anidadas
Podemos ver un ejemplo en el siguiente esquema
Podemos tener infinidad de condiciones anidadas al igual que podemos ver en el ejemplo de la imagen. La principal condición que podemos ver es una estructura compuesta y la segunda condición es en este caso, una estructura simple. Es común que se representen este tipo de condiciones anidadas aunque esto es un simple ejemplo en comparación con lo que se puede ver normalmente en cualquier código.
Planteamos un ejemplo con el siguiente problema.
Confeccionar un programa que pida por teclado 3 notas de 3 alumnos diferentes, calcular el promedio e imprimir por pantalla alguno de los siguientes mensajes.
Si el promedio es mayor o igual a 7, mostrar “Promocionado”
Si el promedio es mayor o igual a 4 y menor que 7, mostrar “Regular”
Si el promedio es menor que 4, mostrar “Suspendido”
Ahora mostramos el problema ya codificado como ejemplo.
1 2 3 4 5 6 7 8 9 10 11 |
nota1=int(input("Ingrese la primera nota:")) nota2=int(input("Ingrese la segunda nota:")) nota3=int(input("Ingrese la tercera nota:")) promedio=(nota1+nota2+nota3)/3 if promedio>=7: print("Promocionado") else: if promedio>=4: print("Regular") else: print("Suspendido") |
Como podemos ver, lo primero es obtener el valor de las tres notas. Una vez obtenidas calculamos el promedio, como podemos observar, podemos realizar operaciones separadas, separando cada operación entre paréntesis () y calculando posteriormente el valor en base a este primer resultado.
Tratando la condición, podemos observar cómo además la indentación es mayor conforme anidamos más condiciones.
Uso de operadores lógicos
Aparte de los operadores relacionales y matemáticos que podemos ver después de este pequeño apartado, podemos encontrar los operadores lógicos, los cuales nos permiten agrupar varias condiciones simples en una misma condicional.
Podemos ver un ejemplo en el siguiente problema.
Realizar un programa que permita la carga por teclado de un número entero e imprimir un mensaje si el número es mayor que 5 y menor que 10.
1 2 3 |
num=int(input("Ingresar el valor:")) if num>5 and num<10: print(“El número es superior a 5 e inferior a 10”) |
Como podemos ver en el ejemplo, realizamos dos comprobaciones en la misma condicional. En este caso, se utiliza el operador lógico ‘and’ que permite obtener un resultado si las dos condiciones son verdaderas, también podríamos utilizar el operador ‘or’, si queremos que realice nuestras operaciones si se cumple alguna de las condiciones, por ejemplo con el siguiente problema.
Se pide realizar un programa que permita cargar 2 números enteros y muestre un mensaje si uno de los dos tiene un valor superior a 5.
1 2 3 4 |
num1=int(input("Ingresar el primer valor:")) num2=int(input("Ingresar el primer valor:")) if num1>5 or num2>5: print(“Uno de los valores es superior a 5”) |
Con este ejemplo, vemos como utilizando el operador or, podemos realizar la operación si se realiza una de las dos condiciones, es decir, que uno de los dos números sea superior a 5.
Operadores
En una condición deben disponerse únicamente variables, valores constantes, operadores relacionales y operadores lógicos. Entre los diferentes operadores podemos ver los siguientes:
Operadores relacionales
- == Igualdad
- != Desigualdad
- < Menor
- > Mayor
- <= Menor o igual
- >= Mayor o igual
Operadores matemáticos
- + Suma
- – Resta
- * Multiplicación
- / División de flotantes
- // División de enteros
- % Resto de una división
- ** Exponenciación
Operadores lógicos
- and Y
- or O
Los operadores and y or, nos permiten crear una mejor estructura condicional, permitiéndonos de esta manera, incluir varias comprobaciones en una misma condicional.
Los problemas que pueden presentarse son infinitos y la correcta elección del operador dependerá de lo que queramos obtener.
Se plantean los siguientes problemas para las estructuras condicionales simples y compuestas.
Problemas propuestos
Ejercicio1
Realizar un programa que solicite la carga por teclado de dos valores enteros. Si el primero es mayor al segundo, informar de la suma y la resta de ambos valores, si por el contrario es inferior, calcular el producto y la división de estos números.
Ejercicio 2
Se ingresa la nota de un alumno, si la nota es igual o superior a 5 informar de que ha aprobado, si es inferior informar de que ha suspendido.
Ejercicio 3
Se ingresa por teclado un número entero positivo de uno o dos dígitos, mostrar un mensaje con el número de dígitos de los que está compuesto.
Ejercicio 4
Realizar un programa que pida cargar tres números enteros. Mostrar por pantalla el mayor de ellos.
Ejercicio 5
Realizar un programa que pida cargar un número entero por teclado. Mostrar un mensaje si el número es positivo, negativo o nulo (es decir, 0)
Ejercicio 6
Realizar un programa que permita cargar un número entero de 1, 2 o 3 dígitos. Mostrar un mensaje con el número de dígitos de que está compuesto o un mensaje de error si tiene más de 3 dígitos.
Ejercicio 7
Un alumno realiza un examen. Se requiere la creación de un programa que solicite cargar el total de preguntas del examen y el total de respuestas correctas que ha ingresado el alumno. Calcular el promedio y mostrar un mensaje en función de las respuestas correctas.
Sobresaliente -> promedio mayor o igual al 90%
Notable -> promedio mayor o igual al 70% y menor del 90%
Aprobado -> promedio mayor o igual al 50% y menor del 70%
Suspendido -> promedio menor del 50%
Ejercicio 8
Realizar un programa que solicite la carga de tres valores enteros. Estos valores serán día, mes y año. Comprobar si corresponde al día 1 de los meses enero o febrero.
Ejercicio 9
Realizar un programa que solicite la carga de tres valores enteros. Si los tres números son iguales realizar la suma de los dos primeros y el producto de estos con el tercero. Si son diferentes mostrar un mensaje informando de ello.
Ejercicio 10
Realizar un programa que solicite 3 valores enteros. Imprimir un mensaje mostrando si todos son menores de 10.
Además tenéis la lista completa de ejercicios en nuestro repositorio en github.
Con esto acabamos el segundo 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 las estructuras repetitivas.
<- Anterior | Volver al índice | Siguiente -> |
Después de estar buscando por todas lás páginas dedicadas a Python, encuentro ésta que está muy bien, pero que muy reqeuetebien. Todo explicado muy sencillamente, con muchos ejercicios. Inmejorable. Hay una notable diferencia entre saber y saber explicar lo que se sabe. Son pocos los que explican tan bien como el apreciado autor de estas instrucciones. No me despegaré de este tutorial hasta que me lo sepa bien sabido. Si pudiera encontrar un libro tan bien explicado como este manual..sería maravilloso. Mil gracias al autor..
Muchas gracias a ti Alberto por leernos y por tus maravillosos comentarios que nos ayudan a seguir mejorando.
Saludos