Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:cursos:introduccion_programacion_python:sentencias_de_control

¡Esta es una revisión vieja del documento!


Sentencias de control

Bloque perteneciente al curso Introducción a la programación con Python.

Condicionales

if, if-else, if-elif-else

condicion = True
 
if condicion:
    print("Código condicional")

Si hay alguna operación que deba hacerse en base a si se da o no una determinada circunstancia, lo ponemos en un bloque if

En Python, el sangrado de código (indentation), es un elemento sintáctico. Es obligatorio mantener un sangrado correcto para que el intérprete de Python lo procese adecuadamente y sepa a qué bloque de código pertenecen ciertas instrucciones.

x = 3
 
if x < 5:
    print("El valor de x es pequeño")

Responderá:

El valor de x es pequeño
x = 1
cond = False
 
if x < 100 or cond:
    print("Al menos una de las dos es cierta")

Responderá:

Al menos una de las dos es cierta
x = 1000
cond = True
 
if x < 100 and cond:
    print("Las dos deben cumplirse")

Responderá:

Las dos deben cumplirse
x = 10
cond = False
 
if (x < 100 or x > 100000) and not cond:
    print("Las dos deben cumplirse")

Responderá:

Las dos deben cumplirse

Mediante la palabra clave else se puede indicar otro bloque de instrucciones que se llevarán a cabo únicamente en el caso de que la condición del if no se cumpla.

condicion = False
 
if condicion:
    print("Esto se hará si la condición es cierta")
else:
    print("Si no es cierta, se hará esto otro")

Responderá:

Si no es cierta, se hará esto otro

Ejemplo de resolución de ecuación de segundo grado:

from math import sqrt
 
print("ax^2 + bx + c = 0")
 
# Toma de datos:
a = float(input("Coeficiente a:"))
b = float(input("Coeficiente b:"))
c = float(input("Coeficiente c:"))
 
# Cálculo de las raíces
d = b ** 2 - 4 * a * b * c
 
if d >= 0:
    # Ahora podemos ejecutar las siguientes operaciones sin temor a que 
    # dé error de dominio
    x1 = (-b + sqrt(b**2 - 4 * a * c)) / (2 * a)
    x2 = (-b - sqrt(b**2 - 4 * a * c)) / (2 * a)
    print(f"Soluciones: {x1} y {x2}")
else:
    # Para el caso de la raíz cuadrada negativa, mostramos un aviso
    print("Su ecuación no tiene soluciones reales")

Para encadenar varias comprobaciones o condiciones de tal modo que si no se cumple una de ellas, pase a comprobar la siguiente, y así varias veces hasta un else final, utilizamos la palabra reservada elif

temperatura = 25
 
if temperatura < 20:
    print("Tiempo fresco")
elif temperatura > 30:
    print("Tiempo caluroso")
else:
    print("Temperatura agradable")

Responderá:

Temperatura agradable

Bucles

Cuando necesitamos que ciertas instrucciones se repitan un número (determinado o indeterminado) de veces, tenemos las construcciones for, while

while

Sintaxis:

while condicion:
    instruccion1
    instruccion2
    ...
from math import sin, abs
 
x = 1.0
e = 1000.0
 
while e > 0.0001:
    x0 = x
    x = cos(x)
    e = abs(x0 - x)
    print(x, e)
cuenta = 10
 
while cuenta > 0:
    print(cuenta)
    cuenta -= 1 # cuenta = cuenta - 1
 
print("It's the final countdown!")

Devolverá:

10
9
8
7
6
5
4
3
2
1
It's the final countdown!
s = 0
 
while True:
    x = float(input("Introduzca un número (0 para terminar):"))
    if x==0:
        break
    s += x  # Suma a s el valor de x 
print(f"La suma de todos los valores es {s}")

Ejemplo de uso del programa:

Introduzca un número (0 para terminar): 4
Introduzca un número (0 para terminar): 5
Introduzca un número (0 para terminar): 0
La suma de todos los valores es 9.0

Algunas notas acerca de while:

  • Un bucle while puede ejecutarse 0 o mas veces. Si la condición no se cumple de entrada, no se ejecutará el código de dentro ni siquiera la primera vez.
  • La comprobación de la condición se hace al principio de cada vuelta / iteración. Si en algún momento, durante la ejecución de las instrucciones de dentro del bucle esa condición pasase a ser falsa, no será hasta que comience la siguiente vuelta que se termine el bucle.
  • Si se indica como condición la constante True, el bucle será infinito ya que la condición se cumple siempre.
  • Si deseamos interrumpir forzosamente un bucle (independientemente de si la condición se cumple o no), podemos utilizar la orden break. Lo normal es que dicha orden se lance de forma condicionada; con un if, por ejemplo.
s = 0
while True:
    try:
        x = float(input("Introduzca un número (0 para terminar):"))
        if x==0:
            break
        s += x  # Suma a s el valor de x
    except:
        print("Inténtelo otra vez")
 
print(f"La suma de todos los valores es {s}")

Ejemplo de ejecución del programa:

Introduzca un número (0 para terminar): 6
Introduzca un número (0 para terminar): siete
Inténtelo otra vez
Introduzca un número (0 para terminar): 7
Introduzca un número (0 para terminar): 0
La suma de todos los valores es 13.0

for

Permite recorrer secuencias, ejecutando un bloque de instrucciones en cada iteración. Se utiliza una variable para recorrer la secuencia. Dicha variable tomará el valor de cada uno de los elementos de la secuencia en cada iteración, respetando el orden.

Sintaxis:

for variable in secuencia:
    instruccion1
    instruccion2
    ...

Ejemplos:

palabras = ["alpha", "bravo", "charlie", "delta"]
 
for p in palabras:
    print(p)

Resultado:

alpha
bravo
charlie
delta
for i in range(10):
    print(i)

Resultado:

0
1
2
3
4
5
6
7
8
9
for i in range(0, 20, 2):
    print(i)

Resultado:

0
2
4
6
8
10
12
14
16
18
for i in range(10, 0, -1):
    print(i)

Resultado:

10
9
8
7
6
5
4
3
2
1

Los rangos son muy útiles para hacer secuencias de números que podemos utilizar con el bucle for. Más información sobre rangos en la documentación oficial

Alteración de la ejecución con break y continue

  • La palabra clave break sirve para interrumpir la ejecución de un bucle while o for.
  • La palabra continue interrumple solo la iteración actual, saltando a la iteración siguiente.
s = 0
while True:
    x = float(input("Introduzca un número positivo (0 para terminar):"))
    if x==0:
        break
    if x<0:
        print("Solo se admiten positivos")
        continue
    s += x  # Suma a s el valor de x
 
print(f"La suma de todos los valores es {s}")

Ejemplo de ejecución:

Introduzca un número positivo (0 para terminar): 4
Introduzca un número positivo (0 para terminar): 3
Introduzca un número positivo (0 para terminar): -5
Solo se admiten positivos
Introduzca un número positivo (0 para terminar): 0
La suma de todos los valores es 7.0

do-while

En otros lenguajes de programación existe una estructura llamada do-while, que es muy parecida al while, pero que hace la comprobación de la condición al final de cada iteración (no al principio).

Podemos emular un do-while mediante el uso de break:

En C haríamos algo así:

x = 1e10;
do {
    print(x);
    x /= 2.0;
} (while x >= 0.0001);

En Python:

x = 1e10
 
while True:
    print(x)
    x /= 2.0
    if x < 0.0001:
        break

match (switch)

En Python no tenemos la construcción switch-case de otros lenguajes, pero hay algo parecido con match.

Match permite evaluar diferentes casos y ejecutar grupos de instrucciones en función del valor que toma una variable.

match aparece en la versión 3.10 de Python, así que todo el código que aparecerá aquí no funcionará con versiones anteriores

mes = int(input("Introduzca el mes en número: "))
 
match mes:
    case 1: 
        print("Enero")
    case 2:
        print("Febrero")
    # ...
informatica/programacion/python/cursos/introduccion_programacion_python/sentencias_de_control.1681735724.txt.gz · Última modificación: por tempwin