Tema 03 - Controlando El Flujo

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Condiciones

Sentencia If (Si)

Permite dividir el flujo de un programa en diferentes caminos. El if se ejecuta siempre que la


expresión que comprueba devuelva True

if True: # equivale a if not False


print("Se cumple la condición")
print("También se muestre este print")

Se cumple la condición
También se muestre este print

Podemos encadenas diferentes If

a=5
if a == 2:
print("a vale 2")
if a == 5:
print("a vale 5")

a vale 5

O también anidar If dentro de If

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

Como condición podemos evaluar múltiples expresiones, siempre que éstas devuelvan True o
False

if a==5 and b == 10:


print("a vale 5 y b vale 10")

a vale 5 y b vale 10

Sentencia Else (Sino)


Se encadena a un If para comprobar el caso contrario (en el que no se cumple la condición).

n = 11
if n % 2 == 0:
print(n,"es un número par")
else:
print(n,"es un número impar")

11 es un número impar

Sentencia Elif (Sino Si)

Se encadena a un if u otro elif para comprobar múltiples condiciones, siempre que las anteriores
no se ejecuten.

comando = "OTRA COSA"


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")

Este comando no se reconoce

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")

Introduce una nota: 10


Sobresaliente

Es posible simular el funcionamiento de elif con if utilizando expresiones condicionales

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


if nota >= 9:
print("Sobresaliente")
if nota >= 7 and nota < 9:
print("Notable")
if nota >= 6 and nota < 7:
print("Bien")
if nota >= 5 and nota < 6:
print("Suficiente")
if nota < 5:
print("Insuficiente")

Introduce una nota: 8


Notable

Instrucción Pass

Sirve para finalizar un bloque, se puede utilizar en un bloque vacío.

if True:
pass

Iteraciones

Iterar significa realizar una acción varias veces. Cada vez que se repite se denomina iteración.
Sentencia While (Mientras)

Se basa en repetir un bloque a partir de evaluar una condición lógica, siempre que ésta sea True.

Queda en las manos del programador decidir el momento en que la condición cambie a False
para hacer que el While finalice.

c=0
while c <= 5:
c+=1
print("c vale",c)

c vale 1
c vale 2
c vale 3
c vale 4
c vale 5
c vale 6

Sentencia Else en bucle While


Se encadena al While para ejecutar un bloque de código una vez la condición ya no devuelve
True (normalmente al final).

c=0
while c <= 5:
c+=1
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
c vale 4
c vale 5
c vale 6
Se ha completado toda la iteración y c vale 6

Instrucción Break

Sirve para "romper" la ejecución del While en cualquier momento. No se ejecutará el Else, ya
que éste sólo se llama al finalizar la iteración.

c=0
while c <= 5:
c+=1
if (c==4):
print("Rompemos el bucle cuando c vale",c)
break
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
Rompemos el bucle cuando c vale 4

Instrucción Continue

Sirve para "saltarse" la iteración actual sin romper el bucle.

c=0
while c <= 5:
c+=1
if c==3 or 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 5
c vale 6
Se ha completado toda la iteración y c vale 6

Creando un menú interactivo

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")

Bienvenido al menú interactivo


¿Qué quieres hacer? Escribe una opción
1) Saludar
2) Sumar dos números
3) Salir
1
Hola, espero que te lo estés pasando bien
¿Qué quieres hacer? Escribe una opción
1) Saludar
2) Sumar dos números
3) Salir
2
Introduce el primer número: 10
Introduce el segundo número: 5
El resultado de la suma es: 15.0
¿Qué quieres hacer? Escribe una opción
1) Saludar
2) Sumar dos números
3) Salir
kdjsk
Comando desconocido, vuelve a intentarlo
¿Qué quieres hacer? Escribe una opción
1) Saludar
2) Sumar dos números
3) Salir
3
¡Hasta luego! Ha sido un placer ayudarte

Recorriendo los elementos de una lista utilizando While

numeros = [1,2,3,4,5,6,7,8,9,10]
indice = 0
while indice < len(numeros):
print(numeros[indice])
indice+=1

1
2
3
4
5
6
7
8
9
10

Sentencia For (Para) con listas

for numero in numeros: # Para [variable] en [lista]


print(numero)

1
2
3
4
5
6
7
8
9
10

Modificar ítems de la lista al vuelo

Para asignar un nuevo valor a los elementos de una lista mientras la recorremos, podríamos
intentar asignar al número el nuevo valor:

for numero in numeros:


numero *= 10

numeros

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

Sin embargo, ésto no funciona. La forma correcta de hacerlo es haciendo referencia al índice de
la lista en lugar de la variable:

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]

Podemos utilizar la función enumerate() para conseguir el índice y el valor en cada iteración
fácilmente:

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]

For con cadenas

cadena = "Hola amigos"


for caracter in cadena:
print(caracter)
H
o
l
a

a
m
i
g
o
s

Pero debemos recordar que las cadenas son inmutables:

for i,c in enumerate(cadena):


cadena[i] = "*"

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-9-8ba888c46579> in <module>()
1 for i,c in enumerate(cadena):
----> 2 cadena[i] = "*"

TypeError: 'str' object does not support item assignment

Sin embargo siempre podemos generar una nueva cadena:

cadena2 = ""
for caracter in cadena:
cadena2 += caracter * 2

cadena

'Hola amigos'

cadena2

'HHoollaa aammiiggooss'

La función range()

Sirve para generar una lista de números que podemos recorrer fácilmente, pero no ocupa
memoria porque se interpreta sobre la marcha:

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

range(10)

range(0, 10)

for i in [0,1,2,3,4,5,6,7,9]:
print(i)

0
1
2
3
4
5
6
7
9

Si queremos conseguir la lista literal podemos transformar el range a una lista:

list(range(10))

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

Ejemplo de cabecera

n=0
while n < 10:
if (n % 2) == 0:
print(n,'es un número par')
else:
print(n,'es un número impar')
n=n+1
Tema 03: Control de flujo (Soluciones)

Nota: Estos ejercicios son optativos para hacer al final de la unidad y están pensados para apoyar
tu aprendizaje.

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.

# Completa el ejercicio aquí


n1 = float(input("Introduce un número: ") )
n2 = float(input("Introduce otro número: ") )
opcion = 0

print("¿Qué quieres hacer? \n1) Sumar los dos números\n2) Restar los dos números\n3)
Multiplicar los dos números")
opcion = int(input("Introduce un número: ") )

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("El producto de",n1,"*",n2,"es",n1*n2)
else:
print("Opción incorrecta")

Introduce un número: 5
Introduce otro número: 5
¿Qué quieres hacer?
1) Sumar los dos números
2) Restar los dos números
3) Multiplicar los dos números
Introduce un número: 3
El producto de 5.0 * 5.0 es 25.0

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

# Completa el ejercicio aquí


numero = 0
while numero % 2 == 0: # Mientras sea par repetimos el proceso
numero = int(input("Introduce un número impar: ") )

Introduce un número impar: 4


Introduce un número impar: 2
Introduce un número impar: 3

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

Sugerencia: Puedes utilizar la funciones sum() y range() para hacerlo más fácil. El tercer
parámetro en la función range(inicio, fin, salto) indica un salto de números, pruébalo.

# Completa el ejercicio aquí


# range(0, 101, 2)

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


print(suma)

# Segunda forma con bucles


num = 0
suma = 0

while num <= 100:


if num % 2 == 0:
suma += num
num += 1

print(suma)

2550
2550

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:

# Completa el ejercicio aquí


suma = 0
numeros = int(input("¿Cuántos números quieres introducir? ") )
for x in range(numeros):
suma += float(input("Introduce un número: ") )
print("Se han introducido",numeros,"números que en total han sumado",suma,"y la media
es",suma/numeros)

¿Cuántos numeros quieres introducir? 4


Introduce un número: 3
Introduce un número: 2
Introduce un número: 4
Introduce un número: 6
Se han introducido 4 números que en total han sumado 15.0 y la media es 3.75

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:

Consejo: La sintaxis "valor in lista" permite comprobar fácilmente si un valor se encuentra en


una lista (devuelve True o False)

# Completa el ejercicio aquí


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)

Escribe un número del 0 al 9: 3


El número 3 se encuentra en la lista [1, 3, 6, 9]

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 [0, 1, 2, ..., 10]


Todos los números del -10 al 0 [-10, -9, -8, ..., 0]
Todos los números pares del 0 al 20 [0, 2, 4, ..., 20]
Todos los números impares entre -20 y 0 [-19, -17, -15, ..., -1]
Todos los números múltiples de 5 del 0 al 50 [0, 5, 10, ..., 50]

Pista: Utiliza el tercer parámetro de la función range(inicio, fin, salto).

# Completa el ejercicio aquí


print( list( range( 0, 11 ) ) )
print( list( range( -10, 1 ) ) )
print( list( range( 0, 21, 2 ) ) )
print( list( range( -19, 0, 2 ) ) )
print( list( range( 0, 51, 5 ) ) )

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[-19, -17, -15, -13, -11, -9, -7, -5, -3, -1]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

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

# Completa el ejercicio aquí


lista_1 = ["h",'o','l','a',' ', 'm','u','n','d','o']
lista_2 = ["h",'o','l','a',' ', 'l','u','n','a']

lista_3 = []

for letra in lista_1:


if letra in lista_2 and letra not in lista_3:
lista_3.append(letra)

print(lista_3)

['h', 'o', 'l', 'a', ' ', 'u', 'n']

También podría gustarte