Controlando el flujo con sentencias en Python 3

1. Sentencia If

Permite dividir el flujo de un programa en diferentes caminos.

if True:

print(“Se cumple la condición”)

Se cumple la condición

 

if False:

print(“Se cumple la condición”)

Nota: esta sentencia no se ejecutaría, ya que es False.

a = 5

if a == 2:

print(“a vale 2”)

if a == 5:

print(“a vale 5”)

a vale 5

 

a = 5

b = 10

if a == 5:

print(“a vale”, a)

if b == 10:

print(“y b vale”, b)

a vale 5

y b vale 10

Aunque también podemos hacer ambas comprobaciones a la vez, gracias a la expresión lógica and: 

if a == 5 and b == 10:

print(“a vale 5 y b vale 10”)

a vale 5 y b vale 10

La sentencia if tiene una especie de hermano denominado Else, para indicar el caso contrario cuando no se cumple la condición.

n = 10

if n % 2 == 0:

print(n, “es un número par”)

else:

print(n, “es un número impar”)

10 es un número par

También existe la sentencia Elif (Sino Si) : para comprobar otra posible condición, siempre que la anterior no se cumpla.

comando = “SALIR”

if comando == “ENTRAR”:

print(“Bienvenido al sistema”)

elif comando == “SALUDAR”:

print(“Hola, espero que te lo estés pasando bien aprendiendo Python”)

elif comando == “SALIR”:

print(“Saliendo del sistema…”)

else:

print(“Este comando no se reconoce”)

Saliendo del sistema …

Ejemplo:

nota = float(input(“Introduce una nota: “))

if nota >= 9:

print(“Sobresaliente”)

elif nota >= 7:

print(“Notable”)

elif nota >= 6:

print(“Bien”)

elif nota >= 5:

print(“Suficiente”)

else:

print(“Insuficiente”)

La palabra pass se puede utilizar para definir un bloque vació.

if True:

pass

 

2. Sentencia While

Se basa en repetir un bloque a partir de verificar una condición lógica, la cual siempre debe devolver True, para ejecutarse.

c = 0

while c <= 5:

c += 1

print(“c vale”, c)

else:

print(“Se ha completado todo el código y c vale”,c)

Si queremos romper la sentencia en algún momento tendremos que hacer uso de la sentencia break:

c = 0

while c < 5:

c+=1

if (c == 4):

print(“Romper bucle cuando c vale”,c)

break

print(“c vale”, c)

else:

print(“Se ha completado todo el código y c vale”,c)

c vale 1

c vale 2

c vale 3

Rompemos el bucle cuando c vale 4

O si por el caso contrario queremos romper un momento de la iteración, pero queremos que el programa siga ejecutandose, se usa continue:

c = 0

while c < 5:

c+=1

if (c == 4):

print(“Continuamos con la siguiente iteración”,c)

continue

print(“c vale”, c)

else:

print(“Se ha completado toda la iteración y c vale”,c)

c vale 1

c vale 2

c vale 3

Continuamos con la siguiente iteración 4

c vale 5

c vale 6

Se ha completado toda la iteración y c vale 6

Ejemplo para la terminal:

print(“Bienvenido al menú interactivo”)

while(True):

print(“””¿Qué quieres hacer? Escribe una opción

1) Saludar

2) Sumar dos números

3) Salir”””)

opcion = input()

if opcion == ‘1’ :

print(“Hola, espero que te lo estés pasando bien”)

elif opcion == ‘2’:

n1 = float(input(“Introduce el primer número: “))

n2 = float(input(“Introduce el segundo número: “))

print(“El resultado de la suma es: “,n1+n2)

elif opcion == ‘3’:

print(“¡Hasta luego! Ha sido un placer ayudarte”)

break

else:

print(“Comando desconocido, vuelve a intentarlo”)

Nota: Si nos fijamos en el código anterior, es un bucle infinito pero para, esperando a que le introduzcamos información por teclado y gracias al break del elif de la opción 3 el programa se detiene.

Recorrer una lista con el bucle while:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

indice = 0

while (indice < len(numeros)):

print(numeros[indice])

indice += 1

3. Sentencia For

Con la sentencia for  podemos recorrer una lista como la anterior pero sin embargo, no es necesario declarar una variable como contador y saber la longitud de la lista.

for numero in numeros:

print(numero)

El problema vendría si queremos modificar el valor de la variable numero a medida que se recorre la lista, ya que dicho cambio se realiza solamente en la iteración y no en la lista:

for numero in numeros:

numero *= 10

numeros

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Solución básica( creando un indice externo a modo de contador ) :

indice = 0

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for numero in numeros:

numeros[indice] *= 10

indice += 1

numeros

[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Solución con enumerate:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for indice, numero in enumerate(numeros):

numeros[indice] *= 10

numeros

[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

Con el for también podemos recorrer todos los caracteres de una cadena:

cadena = “Hola amigos”

for caracter in cadena:

print(caracter)

Nota: las cadenas de caracteres son inmutables pero podemos hacer un pequeño truco ( Almacenando la información en otra variable ):

cadena2 = “”

for caracter in cadena:

cadena2 += “*”

cadena2

‘***********’

Si queremos simular una especie de lista numérica podemos hacer uso de range:

for i in range(10):

print(i)

Nota: el 10 lo excluye.

 

Ejercicios resueltos

1. Realiza un programa que lea dos números por teclado y permita elegir entre 3 opciones en un menú:

  • Mostrar una suma de los dos números
  • Mostrar una resta de los dos números ( el primero menos el segundo )
  • Mostrar una multiplicación de los dos números
  • En caso de no introducir una opción válida, el programa informará de que no es correcta.

n1 = float(input(“Introduce un número: “))

n2 = float(input(“Introduce otro número: “))

print(“Qué quieres hacer?”)

print(“[1] Sumar los dos números”)

print(“[2] Restar los dos números”)

print(“[3] Multiplicar los dos números”)

opcion = input(“Introduce una opción: “)

if opcion == “1”:

print(“La suma de”, n1,“+”,n2,“es”,n1+n2)

elif opcion == “2”:

print(“La resta de”, n1,“-“,n2,“es”,n1-n2)

elif opcion == “3”:

print(“La producto de”, n1,“*”,n2,“es”,n1*n2)

else:

print(“La opción es incorrecta.”)

2. Realiza un programa que lea un número impar por teclado. Si el usuario no introduce un número impar, debe repetirse el proceso hasta que lo introduzca correctamente.

numero = 0

while numero % 2 == 0:

numero = int(input(“Introduce un número impar: “))

3. Realiza un programa que sume todos los números enteros pares desde el 0 hasta el 100.

Nota: El tercer parámetro en la función range(inicio, fin, salto) indica un salto de números.

# Solución rápida

suma = sum( range(0, 101, 2))

# Solución con bucles

num = 0

suma = 0

while num <= 100:

if num % 2 == 0:

suma += num

num += 1

4. Realiza un programa que pida al usuario cuantos números quiere introducir. Luego lee  todos los números y realiza una media aritmética.

repeticiones = int(input(“Cuántos números quieres introducir?: “))

suma = 0

for x in range(repeticiones):

suma += float(input(“Introduce un número: “))

print(“Se han introducido”, repeticiones,“números que en total han sumado”, suma,“y la media es”, suma/repeticiones)

5. Realiza un programa que pida al usuario un número entero del 0 al 9, y que mientras el número no sea correcto se repita el proceso. Luego debe comprobar si el número se encuentra en la lista de números y notificarlo.

Nota: podemos comprobar si un valor se encuentra en una lista ( devuelve True o False ) Sintaxis: valor in lista.

numeros = [1, 3, 6, 9]

while True:

numero = int(input(“Escribe un número del 0 al 9: “))

if numero >= 0 and numero <= 9:

break

if numero in numeros:

print(“El número”, numero,“se encuentra en la lista”, numeros)

else:

print(“El número”, numero, “NO se encuentra en la lista”, numeros)

6. Utilizando la función range() y la conversión a listas genera las siguientes listas dinámicamente:

  • Todos los números del 0 al 10.
  • Todos los números del -10 al 0
  • Todos los números pares del 0 al 20
  • Todos los números impares entre -20 y 0
  • Todos los números múltiples de 5 del 0 al 50

print( list( range( 0, 11)))

print( list( range( -10, 1)))

print( list( range( 0, 21, 2)))

print( list( range( -19, 1, 2)))

print( list( range( 0, 51, 5)))

7. Dadas dos listas, debes generar una tercera con todos los elementos que se repitan en ellas, pero no debe repetirse ningún elemento en la nueva lista:

# Listas

lista_1 = [“h”,’o’,’l’,’a’,’ ‘,  ‘m’,’u’,’n’,’d’,’o’]

listas_2 = [“h”,’o’,’l’,’a’,’ ‘,  ‘l’,’u’,’n’,’a’]

lista_3 = []

for letra in listas1:

if letra in lista_2 and letra not in lista_3:

lista_3.append(letra)

 

 

Autor entrada: CharlieJ

Deja un comentario

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