Break y continue

for i in range(1, 100):
    print(i)
    if i == 16:
        break

cadena = input("Dime una cadena")
tiene = False
for letra in cadena:
    if letra == "ñ":
        tiene = True
        break

if tiene:
    print("Tiene Ñ")
else:
    print("No hay ninguna Ñ")

numero = int(input("Dime un número"))
esPrimo = True
for i in range(2, numero):
    if numero % i == 0:
        esPrimo = False
        break
if esPrimo:
    print(f"{numero} es primo")
else:
    print(f"{numero} no es primo")

# continue Se salta las instrucciones que hay a continuación y sigue con el bucle

numero = 100
suma = 0
for i in range(1, numero + 1):
    if i % 2 == 0:
        continue
    print(i)
    suma += i

cadena = input("Dime una cadena ")
resultado = ""
for letra in cadena:
    if letra == "a":
        continue
    resultado += letra
print(resultado)

Ejemplos bucles anidados

# bucles anidados (y cualquier tipo de anidación)
# Nosotros podemos poner bucles dentro de bucles igual que poníamos ifs dentro de ifs

for numero in range(1, 11): # Este bucle va del 1 al 10
    print(f"Tabla del {numero}: ") # ¿Cuantas veces se imprime esto? 10 veces
    for i in range(1, 11): # Este también va del 1 al 10
        print(f"{i} x {numero} = {i * numero}") # ¿Cuantas veces se imprime esto? 100 veces

colores = ["rojo", "verde", "azul"]
frutas = ["manzana", "plátano", "uva"]

for color in colores:
    for fruta in frutas:
        print(color, fruta) # ¿Cuantas veces se imprime esto? 9 veces

vocales="aeiou"
consonantes="ptd"

for vocal in vocales:
    for consonante in consonantes:
        print(consonante+vocal)

# pa ta da pe te de...

# pa pe pi po pu ta te ti to tu da de di do du
for consonante in consonantes:
    for vocal in vocales:
        print(consonante+vocal)

# Reloj

for hora in range(1,25):
    for minuto in range(1,60):
        print(f"{hora}:{minuto}")


Soluciones ejercicios for

# 1.- Pedir un número al usuario y mostrar la suma de todos los números hasta ese número
# 5->1+2+3+4+5=15

numero = int(input("Dime un número"))
suma = 0
for i in range(1, numero + 1):
    suma += i
print(suma)

# 2.- Pedir una cadena al usuario y escribir si tiene o no tiene alguna 'ñ'
# 'Logroño'-> Tiene 'Barceloba'->No tiene

cadena = input("Dime una cadena")
tiene = False
for letra in cadena:
    if letra == "ñ":
        tiene = True

if tiene:
    print("Tiene Ñ")
else:
    print("No hay ninguna Ñ")

# 3.- Pedir un número al usuario y escribir su tabla de multiplicar

numero = int(input("Dime el número "))
for i in range(1, 11):
    print(f"{i} x {numero} = {i * numero}")

# 4.- Pedir dos números al usuario (mínimo y máximo) y calcular la suma entre los dos
# 2 y 5 ->2+3+4+5=14
minimo = int(input("Dime el primer número "))
maximo = int(input("Dime el segundo número "))
suma = 0
for i in range(minimo, maximo + 1):
    suma += i
print(suma)

# 5.- Pedir una cadena al usuario y escribir una cadena sin la letra 'a'
# 'patata' -> ptt 'ayer se fue' -> 'yer se fue'
cadena = input("Dime una cadena ")
resultado = ""
for letra in cadena:
    if letra != "a":
        resultado += letra
print(resultado)

Ejercicios for

# 1.- Pedir un número al usuario y mostrar la suma de todos los números hasta ese número
# 5->1+2+3+4+5=15

# 2.- Pedir una cadena al usuario y escribir si tiene o no tiene alguna 'ñ'
# 'Logroño'-> Tiene 'Barceloba'->No tiene

# 3.- Pedir un número al usuario y escribir su tabla de multiplicar

# 4.- Pedir dos números al usuario (mínimo y máximo) y calcular la suma entre los dos
# 2 y 5 ->2+3+4+5=14

# 5.- Pedir una cadena al usuario y escribir una cadena sin la letra 'a'
# 'patata' -> ptt 'ayer se fue' -> 'yer se fue'


Ejemplos for en python

# bucle for se utiliza para recorrer secuencias
# sintaxis:
# for elemento in secuencia:

# Bucle for para recorrer una serie numérica
# Elemento: i
# Secuencia: range(1,6) range nos genera un rango de números desde el primero hasta el último menos uno
# range(1,4)->[1,2,3]
# range(10,21)->[10,11,12,13,14,15,16,17,18,19,20]
for i in range(1, 6):
    print(i)

# El ejercicio de los cuadrados: mostrar los cuadrados del 1 al 10
for i in range(1, 11):
    print(i ** 2)

for letra in "En un lugar de la mancha":
    print(letra, end=" ")

palabras = 1
for letra in "En un lugar de la mancha":
    if letra == " ":
        palabras += 1
print(palabras)
# Suma de todos los números del 1 al 100 con bucle for
suma = 0
for i in range(1, 101):
    suma += i
print(suma)

# Esto en python es una lista
frutas = ["manzana", "banana", "cereza"]
for fruta in frutas:
    print(fruta)

# range(max): Un iterable de números enteros consecutivos que empieza en 0 y acaba en max - 1
for i in range(10):
    print(i)  # del 0 al 9
# range(min, max): Un iterable de números enteros consecutivos que empieza en min y acaba en max - 1
for i in range(1, 11):
    print(i)  # del 1 al 10
# range(min, max, step): Un iterable de números enteros consecutivos que empieza en min
# acaba en max - 1 y los valores se van incrementando de step en step.
# Este último caso simula el bucle for con variable de control.

for i in range(1, 100, 5):
    print(i)  # del 1 al 100 en pasos de 5

# Nos permite poner pasos negativos

for i in range(10,-1,-1):
    print(i)

# Sumar todos los números pares del 1 al 100 (incluidos)
suma = 0
for i in range(1, 101):
    if i % 2 == 0:
        suma += i
print(suma)

suma = 0
for i in range(0, 101, 2):
    suma += i
print(suma)

# Mostrar la tabla de multiplicar del 7
# 1x7=7 2x7=14 3x7=21....10x7=70
for i in range(1, 11):
    print(f"{i} x 7 = {i * 7}")

# Pedir una cadena al usuario y decirle cuantas letras 'a' tiene
# hola->1  patata->3
# Pedir una cadena al usuario: sabemos
# Un bucle para recorrer las letras (lo hemos visto en la teoría)
# Dentro de ese bucle vamos a mirar si la letra es la 'a'
contador = 0
cadena = input("Dime una cadena y te diré cuantas aes tiene ")
for letra in cadena:
    if letra == "a":
        contador += 1
print("El número de aes en '",cadena,"' es ",contador)


Soluciones while

# 1.- Pedir un número al usuario y hacer una cuenta regresiva desde ese número

# Pedir un número
numero = int(input("Dame un número entero"))

# Contar desde el número hasta el cero
while numero >= 0:
    # Imprimir esa 'cuenta' para ver la regresión
    print(numero)
    numero = numero - 1  # numero-=1

# Sumar todos los números pares del 1 al 100 (incluidos)

# ¿Se averiguar todos los números pares del 1 al 100?
# ¿Se mostrar todos los número del 1 al 100?
# ¿Se cuando un número es par o impar?
# ¿Se sumar en una variable?
numero = 1
suma = 0
while numero <= 100:
    if numero % 2 == 0:
        suma += numero
    numero += 1
print(suma)

numero = 0
suma = 0
while numero <= 100:
    suma += numero
    numero += 2
print(suma)

# Mostrar la tabla de multiplicar del 7
# 1x7=7 2x7=14 3x7=21....10x7=70
# Esto SI es un bucle
# Con qué numero empieza el bucle y con cual acaba
# Del 1 al 10
numero = 1
while numero <= 10:
    print(f"{numero} x 7 = {numero * 7}")
    numero += 1

# Pedir números al usuario hasta que introduzca un 0. Mostrar el número mayor
# Pedir un número al usuario (lo sabemos)
# Saber un bucle hasta que un valor sea 0
# Saber cual es el mayor de una serie de números

# Pido un número al usuario
numero = int(input("Dame un número entero"))
# De momento me lo quedo. Lo que es correcto es el mayor
mayor = numero
# Mientras el usuario no me introduzca un 0, voy pidiendo números
while numero != 0:
    numero = int(input("Dame un número entero"))
    # Si el número que me ha dado el usuario es mayor que el que ya tenía, pues me quedo con él
    if numero > mayor:
        mayor = numero
print(mayor)

# Escribir un programa que pida nombres y salga cuando escribamos la palabra ‘salir’
# Pido un nombre
# bucle hasta que digan salir

nombre = ""

while nombre != "salir":
    nombre = input("Dime un nombre")

nombre = ""
lista = ""
while nombre != "salir":
    nombre = input("Dime un nombre")
    lista += nombre + " "
print(lista)

# Modificar el programa anterior para que salga cuando repitamos el nombre
# cuando el nombre que me introducen es igual al anterior

nombre = ""
anterior = "#"
while nombre != anterior:
    anterior = nombre
    nombre = input("Dime un nombre")

# Escribir un programa que calcule la suma de todos los múltiplos de 5 menores de 100

numero = 0
suma = 0
while numero <= 100:
    suma += numero
    numero += 5
print(suma)

# Pedir un número y calcular el factorial (factorial de 5. 5*4*3*2*1)
# Pido un número
# Hago un bucle desde donde hasta donde?
# Empiezo en el número y acabo en el 1

numero = int(input("Dime un número"))
factorial = 1
while numero >= 1:
    factorial = factorial * numero
    numero -= 1

print(factorial)

# Mostrar los cuadrados de los números del 1 al 10
# bucle del 1 al 10
numero=1
while numero<=10:
    print(numero**2)
    numero+=1

Ejercicios While

1.- Pedir un número al usuario y hacer una cuenta regresiva desde ese número

2.- Sumar todos los números pares del 1 al 100 (incluidos)

3.- Mostrar la tabla de multiplicar del 7

4.- Pedir números al usuario hasta que introduzca un 0. Mostrar el número mayor

5.- Escribir un programa que pida nombres y salga cuando escribamos la palabra ‘salir’

6.- Modificar el programa anterior para que salga cuando repitamos el nombre

7.- Escribir un programa que calcule la suma de todos los múltiplos de 5 menores de 100

8.- Pedir un número y calcular el factorial (factorial de 5. 5*4*3*2*1)

9.- Mostrar los cuadrados de los números del 1 al 10

Soluciones if

#Escribe un programa que solicite al usuario su edad y determine si es menor o
# igual a 18 años. Si es menor o igual a 18 años, muestra el mensaje
# “Eres menor de edad”, de lo contrario, muestra “Eres mayor de edad”.

edad=int(input("Introduce tu edad"))

if edad>=18:
    print("Eres mayor de edad")
else:
    print("Eres menor de edad")

# Crea un programa que pida al usuario dos números y determine cuál es el mayor
# de los dos números. Si son iguales, muestra un mensaje que indique que los números
# son iguales.

num1=float(input("Dime el primer número"))
num2=float(input("Dime el segundo número"))

if num1>num2:
    print(f"El mayor es {num1}")
    print("El mayor es", num1)
    print("El mayor es"+str(num1))
elif num2>num1:
    print(f"El mayor es {num2}")
else:
    print("Son iguales")

# Desarrolla un programa que pida al usuario un número entero y determine si es par
# o impar. Si es par, muestra “Es un número par”, si es impar, muestra
# “Es un número impar”.

num=float(input("Dime un número"))
if num%2==0:
    print(f"El numero {num} es par")
else:
    print(f"El numero {num} es impar")

# Escribe un programa que solicite al usuario su calificación en un examen y
# determine si ha aprobado o reprobado. Si la calificación es igual o superior
# a 60, muestra “Aprobado”, de lo contrario, muestra “Reprobado”.

nota=float(input("Dime tu calificación"))
if nota>=60:
    print(f"Estás aprobado")
else:
    print(f"Estás suspendido")

# Un usuario puede entrar a una fiesta si es mayor de 18 años y tiene entrada VIP o es invitado.

edad = 20
vip = False
invitado = True

# Tu condición va aquí:
if edad >= 18 and (vip or invitado):
    print("Acceso permitido")
else:
    print("Acceso denegado")

# Un sistema da acceso si el usuario es "admin" y la clave es "1234",
# pero no está bloqueado.

usuario = "admin"
clave = "1234"
bloqueado = False

# Tu condición:
if usuario=="admin" and clave=="1234" and not bloqueado: # bloqueado==False
    print("Login exitoso")
else:
    print("Acceso denegado")

# Un cliente tiene descuento si es mayor de 65 años o si tiene
# carnet de estudiante válido y es mayor de 18.

edad = 19
tiene_carnet = True

# Tu condición:
if edad>65 or (tiene_carnet and edad>18):
    print("Tiene descuento")
else:
    print("No tiene descuento")

# Un cliente tiene descuento :
# su edad está entre 60 y 80: edad>=60 and edad<=80
# tiene carnet y más de 18 años: tiene_carnet and edad>=18
# no tiene carnet y es menor de 10 años: not tiene_carnet and edad<10
# las tres condiciones estarán unidas con un or
edad = 19
tiene_carnet = True

# Tu condición:
# if edad>=60 and edad<=80 or tiene_carnet and edad>=18 or not tiene_carnet and edad<10:
if (edad>=60 and edad<=80) or (tiene_carnet and edad>=18) or (not tiene_carnet and edad<10):
    print("Tiene descuento")
else:
    print("No tiene descuento")


# Un estudiante aprueba si su nota es mayor o igual a 6 y
# no está inhabilitado por asistencia.

nota = 6.5
asistencia_suficiente = True

# Tu condición:
if nota>=6 and asistencia_suficiente:
    print("Aprobado")
else:
    print("Reprobado")

# Muestra un mensaje si el usuario no ha aceptado los términos:

acepta_terminos = False

if not acepta_terminos:
    print("Debes aceptar los términos para continuar")

Ejercicios if

  1. Escribe un programa que solicite al usuario su edad y determine si es menor o igual a 18 años. Si es menor o igual a 18 años, muestra el mensaje “Eres menor de edad”, de lo contrario, muestra “Eres mayor de edad”.
  2. Crea un programa que pida al usuario dos números y determine cuál es el mayor de los dos números. Si son iguales, muestra un mensaje que indique que los números son iguales.
  3. Desarrolla un programa que pida al usuario un número entero y determine si es par o impar. Si es par, muestra “Es un número par”, si es impar, muestra “Es un número impar”.
  4. Escribe un programa que solicite al usuario su calificación en un examen y determine si ha aprobado o reprobado. Si la calificación es igual o superior a 60, muestra “Aprobado”, de lo contrario, muestra “Reprobado”.

    🧪 Ejercicio 1: Acceso a una fiesta

    Un usuario puede entrar a una fiesta si es mayor de 18 años y tiene entrada VIP o es invitado.

    Completa el código para imprimir “Acceso permitido” o “Acceso denegado”:

    edad = 20
    vip = False
    invitado = True
    
    # Tu condición va aquí:
    if edad >= 18 and (vip or invitado):
        print("Acceso permitido")
    else:
        print("Acceso denegado")
    

    🧪 Ejercicio 2: Validación de login

    Un sistema da acceso si el usuario es "admin" y la clave es "1234"pero no está bloqueado.

    usuario = "admin"
    clave = "1234"
    bloqueado = False
    
    # Tu condición:
    if :
        print("Login exitoso")
    else:
        print("Acceso denegado")
    

    🧪 Ejercicio 3: Acceso a descuentos

    Un cliente tiene descuento si es mayor de 65 años o si tiene carnet de estudiante válido y es mayor de 18.

    edad = 19
    tiene_carnet = True
    
    # Tu condición:
    if :
        print("Tiene descuento")
    else:
        print("No tiene descuento")
    

    🧪 Ejercicio 4: Evaluación académica

    Un estudiante aprueba si su nota es mayor o igual a 6 y no está inhabilitado por asistencia.

    nota = 6.5
    asistencia_suficiente = True
    
    # Tu condición:
    if :
        print("Aprobado")
    else:
        print("Reprobado")
    

    🧪 Ejercicio 5: Uso del operador not

    Muestra un mensaje si el usuario no ha aceptado los términos:

    acepta_terminos = False
    
    if :
        print("Debes aceptar los términos para continuar")

Condiciones if complejas

sueldo = 500

irpf = 15

# Tenemos esta tabla: hasta 2000 10%, hasta 3000 12% hasta 5000 15%  resto 25%

if sueldo < 2000:
    irpf = 10
else:
    if sueldo < 3000:
        irpf = 12
    else:
        if sueldo < 5000:
            irpf = 15
        else:
            irpf = 25

print(irpf)

# Lo de arriba se puede reescribir usando la estructura elif
if sueldo < 2000:
    irpf = 10
elif sueldo < 3000:
    irpf = 12
elif sueldo < 5000:
    irpf = 15
else:
    irpf = 25

print(irpf)

# Sintaxis básica: si se cumple la condición se ejecuta lo que está dentro del if

if sueldo < 1000:
    print("El sueldo no puede ser menos que el SMI")

    # esto está dentro del if
    print("Se viene inspección")

# esto está fuera del if
print(sueldo)

# sintaxis con else: si se cumple se ejecuta lo del if y si no, lo del else

if sueldo > 3000:
    print("Sueldazo")
else:
    print("Sueldo común")

# sintaxis con elif
# cada elif plantea una nueva condición que se evalua, como si fuera un if
# pero queda más claro

if sueldo < 1000:  # Los sueldos menores de 1000
    print("Inspeccion")
elif sueldo < 2000:  # Los menores de 2000
    print("Sueldo bajo")
elif sueldo < 4000:  # De 4000
    print("Buen sueldo")
else:  # Los mayores de 4000 (else del último if)
    print("Sueldazo")

# Las condiciones pueden ser complejas y combinar operadores

if sueldo < 1000 or sueldo > 9000:  # Aquí combino dos condiciones con un or
    print("Sueldo incorrecto")

# Pueden ser lo complejas que hagan falta
if (sueldo < 1000 or sueldo > 9000) and sueldo % 10 == 0:
    print("Sueldo incorrecto que acaba en cero")

# Puedo tener if dentro de otros ifs (ifs anidados)
# Puede ser  lo complicado que haga falta
if sueldo > 5000:
    if sueldo % 10 == 0:
        print("Sueldo mayor de 5000 que acaba en 0")
    else:
        print("Sueldo mayor de 5000 que NO acaba en 0")
else:
    print("Sueldo menor de 5000")

# Veamos un ejemplo de esto
# Calcular el precio de envío de un paquete
# Tenemos lo siguiente:
# Barcelona: 5€ da lo mismo el peso
# Girona o Tarragona 5€ si pesa menos de 10 kilos y 10€ si pesa más
# Resto de ciudades: hasta 10k 5€, hasta 20k 10€, hasta 30k 15 € resto 30€

ciudad = "Logroño"
peso = 12

precio = 0

if ciudad == "Barcelona":
    precio = 5
else:
    if ciudad == "Girona" or ciudad == "Tarragona":
        # calculo los precios
        if peso < 10:
            precio = 5
        else:
            precio = 10
    else:
        if peso < 10:
            precio = 5
        elif peso < 20:
            precio = 10
        elif peso < 30:
            precio = 15
        else:
            precio = 30

print(precio)