Ejercicio Curriculum

Vamos a crear tres páginas:

Una página de contacto con nuestros datos de contacto y un mapa incrustado

Una página portfolio con una galería de imágenes de nuestros supuestos (o reales proyectos)

Una página de experiencia con todos los trabajos que hemos realizado.

Con lo que sabéis, hacedlas bonitas.

Con estas páginas haced un menú que vaya al menú hamburguesa

Después, cambiad el color de la parte izquierda por uno más agradable o, mejor, por un degradado elegante.

Haced otros cambios de css si lo consideráis oportuno.

Ejercicios repaso examen

# función a la que le pasamos una lista de números y nos devuelve una tupla
# con el número de pares y el número de impares
# contarParidad([1,2,3,4,5])->(2,3) (dos pares y tres impares)

def contarParidad(lista):
    pares = 0
    impares = 0
    for numero in lista:
        if numero % 2 == 0:
            pares += 1
        else:
            impares += 1
    return (pares, impares)


def contarParidad2(lista):
    pares = len([numero for numero in lista if numero % 2 == 0])
    return (pares, len(lista) - pares)


print(contarParidad([1, 2, 3, 4, 5]))
print(contarParidad2([1, 2, 3, 4, 5]))
concesionario = [{"marca": "Tesla", "tipo": "Electrico", "autonomía": 500, "precio": 40000},
                 {"marca": "Citroen", "tipo": "Gasolina", "autonomía": 2500, "precio": 10000},
                 {"marca": "Ford", "tipo": "Gasolina", "autonomía": 3500, "precio": 20000},
                 {"marca": "Ferrari", "tipo": "Gasolina", "autonomía": 5500, "precio": 120000},
                 {"marca": "Seat", "tipo": "Electrico", "autonomía": 700, "precio": 10000},
                 {"marca": "Skoda", "tipo": "Gasolina", "autonomía": 3500, "precio": 7000},
                 ]

# Cread una función que nos devuelva la suma de precios del concesionario
def sumaPrecios(concesionario):
    total=0
    for coche in concesionario:
        total+=coche["precio"]
    return total

def sumaPrecios2(concesionario):
    return sum([coche["precio"] for coche in concesionario])
print(sumaPrecios(concesionario))
print(sumaPrecios2(concesionario))
# Cread una función a la que le pasamos una cadena y una longitud y nos devuelve las cadenas
# que superan esa longitud
# masLargas("hola que tal vamos",3)->["hola","vamos"]

def masLargas(cadena, longitud):
    palabras=cadena.split(" ")
    resultado=[]
    for palabra in palabras:
        if len(palabra)>longitud:
            resultado.append(palabra)
    return resultado

def masLargas2(cadena, longitud):
    palabras=cadena.split(" ")
    return [palabra for palabra in palabras if len(palabra)>longitud]

print(masLargas("hola que tal vamos",3))
print(masLargas2("hola que tal vamos",3))


Repaso examen tipo

# corregir código

def factorial(numero):
    total = 1
    while numero > 1:
        total *= numero
        numero -= 1
    return total


print(factorial(5))  # 120 5*4*3*2*1


def palabraMaslarga(cadena):
    palabras = cadena.split(" ")
    masLarga = palabras[0]  # Aquí NO hay un error
    for palabra in palabras:
        if len(palabra) > len(masLarga):  # Aquí hay un error (al revés)
            masLarga = palabra  # Aquí hay un error
    return masLarga


def numeroMayor(lista):
    mayor = lista[0]
    for numero in lista:
        if numero > mayor:  # Aquí hay un error (al revés)
            mayor = numero  # Aquí hay un error
    return mayor


print(palabraMaslarga("En un lugar de la mancha de cuyo nombre no quiero acordarme"))
print(numeroMayor([1, 2, 3, 7, 6, 5, 2]))
print(numeroMayor([-5, -2, -17 - 3]))


# Cread una función porcentajeIva que nos devuelva:
# 0 si el producto es "primera necesidad"
# 4 si es 'libro' o 'revista'
# 10 si es 'pañales'
# 21 en otros casos
def porcentajeIva(producto):
    if producto == "primera necesidad":
        return 0
    elif producto == "libro" or producto == "revista":
        return 4
    elif producto == "pañales":
        return 10
    else:
        return 21


print(porcentajeIva("primera necesidad"))
print(porcentajeIva("libro"))
print(porcentajeIva("revista"))
print(porcentajeIva("pañales"))
print(porcentajeIva("cacahuetes"))


# define una función a la que le pasamos una cadena y nos dice la media de longitud
# de las palabras de la cadena
def mediaLongitud(cadena):
    palabras = cadena.split(" ")
    longitudTotal = 0
    for palabra in palabras:
        longitudTotal += len(palabra)
    return longitudTotal / len(palabras)


def mediaLongitud2(cadena):
    palabras = cadena.split(" ")
    longitudes = [len(palabra) for palabra in palabras]
    return sum(longitudes) / len(palabras)


print(mediaLongitud("aa bbbb ccc"))
print(mediaLongitud2("aa bbbb ccc"))


# Una función números pares a la que le pasamos una lista de números y nos devuelve los pares

def numerosPares(lista):
    resultado = []
    for numero in lista:
        if numero % 2 == 0:
            resultado.append(numero)
    return resultado


def numerosPares2(lista):
    return [numero for numero in lista if numero % 2 == 0]


print(numerosPares([1, 2, 3, 4, 5, 6, 7, 8]))
print(numerosPares2([1, 2, 3, 4, 5, 6, 7, 8]))

clase = [{
    "nombre": "Ana",
    "creditos": 15,
    "curso": "Python"
}, {
    "nombre": "Iu",
    "creditos": 5,
    "curso": "Python"
}, {
    "nombre": "Eva",
    "creditos": 25,
    "curso": "BBDD"
}, {
    "nombre": "Pep",
    "creditos": 7,
    "curso": "BBDD"
}, ]


# Crea una función a la que le pasamos una clase y nos devuelve el total de créditos
def totalCreditos(clase):
    total = 0
    for alumno in clase:
        total += alumno['creditos']
    return total


def totalCreditos2(clase):
    total = sum([alumno['creditos'] for alumno in clase])
    return total


def totalCreditosCurso(clase, curso):
    total = 0
    for alumno in clase:
        if alumno['curso'] == curso:
            total += alumno['creditos']
    return total


def totalCreditosCurso2(clase, curso):
    total = sum([alumno['creditos'] for alumno in clase if alumno['curso'] == curso])
    return total


print(totalCreditos(clase))
print(totalCreditos2(clase))
print(totalCreditosCurso(clase, "BBDD"))
print(totalCreditosCurso2(clase, "BBDD"))


# ordenar los alumnos por crédito

def ordenCredito(clase):
    ordenados = sorted(clase, key=lambda x: x['creditos'])
    return ordenados


def ordenarCredito(clase):
    ordenados = sorted([alumno['creditos'] for alumno in clase])
    return ordenados


def mayorCredito(clase):
    mayor = max(clase, key=lambda x: x['creditos'])
    return mayor


def mayorCredito2(clase):
    mayor = max([alumno['creditos'] for alumno in clase])
    return mayor


print(ordenCredito(clase))
print(ordenarCredito(clase))
print(mayorCredito(clase))
print(mayorCredito2(clase))


# Cread una función a la que le pasamos una cadena y una letra y nos devueve una
# lista con las palabras que tienen esa letra

def palabrasConLetra(cadena, letra):
    palabras = cadena.split(" ")
    resultado = []
    for palabra in palabras:
        if letra in palabra:
            resultado.append(palabra)
    return resultado


def palabrasConLetra2(cadena, letra):
    palabras = cadena.split(" ")
    return [palabra for palabra in palabras if letra in palabra]


print(palabrasConLetra("hola que tal yo mal", "a"))
print(palabrasConLetra2("hola que tal yo mal", "a"))


# Una función a la que le pasamos una cadena y nos devuelve una lista
# con la primera letra de cada palabra

def primeraLetra(cadena):
    palabras = cadena.split(" ")
    resultado = []
    for palabra in palabras:
        resultado.append(palabra[0])
    return resultado


def primeraLetra2(cadena):
    palabras = cadena.split(" ")
    return [palabra[0] for palabra in palabras]


print(primeraLetra("hola que tal yo muy bien"))
print(primeraLetra2("hola que tal yo muy bien"))

# Cread una función a la que le pasamos una cadena y nos devuelve una lista de palabras
# que empiecen y acaben con la misma letra
def inicioFin(cadena):
    palabras = cadena.split(" ")
    resultado=[]
    for palabra in palabras:
        if palabra[0]==palabra[-1]:
            resultado.append(palabra)
    return resultado

def inicioFin2(cadena):
    palabras = cadena.split(" ")
    return [palabra for palabra in palabras if palabra[0]==palabra[-1]]

print(inicioFin("hola ana como sales tan pronto"))
print(inicioFin2("hola ana como sales tan pronto"))


Soluciones ejercicios

import datetime
import random


# Cread una función tiradaDado que nos devuelva un número aleatorio del 1 al 6

def tiradaDado(limite=6):
    return random.randint(1, limite)


for i in range(10):
    print(tiradaDado())


# Cread una función que nos devuelva al azar una provincia de Barcelona
def provinciaAzar():
    provincias = ["Barcelona", "Tarragona", "Lleida", "Girona"]
    return random.choice(provincias)


for i in range(10):
    print(provinciaAzar())


# Cread una función que nos devuelva el año actual
def anyoActual():
    return datetime.date.today().year


print(anyoActual())


# Cread una función que nos devuelva True si hoy es viernes y false en caso contrario
def esViernes():
    return datetime.date.today().weekday() == 4  # 0 lunes hasta 6 domingo


print(esViernes())


# Cread una función que nos devuelva la fecha actual en formato día/mes/año

def fechaActual():
    return datetime.date.today().strftime("%d/%m/%Y")


print(fechaActual())


# Cread una función que nos devuelva el siguiente día laborable a partir de hoy
def siguienteLaborable():
    fecha = datetime.date.today()
    fecha += datetime.timedelta(days=1)
    while fecha.weekday() > 4:
        fecha += datetime.timedelta(days=1)
    return fecha


def siguienteLaborable2():
    fecha = datetime.date.today()
    fecha += datetime.timedelta(days=1)
    if fecha.weekday() > 4:
        fecha += datetime.timedelta(days=(7 - fecha.weekday()))
    return fecha


print(siguienteLaborable2())

Sesiones virtuales

SESIÓN VIRTUAL (10-04-2025 18_00_00)-20250410_180338-Grabación de la reunión.mp4

SESIÓN VIRTUAL (16-04-2025 18_00_00)-20250416_180432-Grabación de la reunión.mp4

SESIÓN VIRTUAL (22-04-2025 18_00_00)-20250422_180529-Grabación de la reunión.mp4

SESIÓN VIRTUAL (24-04-2025 18_00_00)-20250424_180332-Grabación de la reunión.mp4

SESIÓN VIRTUAL (25-04-2025 18_00_00)-20250425_180447-Grabación de la reunión.mp4

SESIÓN VIRTUAL (29-04-2025 18_00_00)-20250429_180841-Grabación de la reunión.mp4

SESIÓN VIRTUAL (30-04-2025 18_00_00)-20250430_180856-Grabación de la reunión.mp4

SESIÓN VIRTUAL (02-05-2025 18_00_00)-20250502_180552-Grabación de la reunión.mp4

SESIÓN VIRTUAL (05-05-2025 18_00_00)-20250505_180717-Grabación de la reunión.mp4

SESIÓN VIRTUAL (06-05-2025 18_00_00)-20250506_180919-Grabación de la reunión.mp4

SESIÓN VIRTUAL (07-05-2025 18_00_00)-20250507_181546-Grabación de la reunión.mp4

SESIÓN VIRTUAL (08-05-2025 18_00_00)-20250508_180607-Grabación de la reunión.mp4

SESIÓN VIRTUAL (09-05-2025 18_00_00)-20250509_181432-Grabación de la reunión.mp4

Ejercicios funciones

# Cread una función tiradaDado que nos devuelva un número aleatorio del 1 al 6

# Cread una función que nos devuelva al azar una provincia de Cataluña

# Cread una función que nos devuelva el año actual

# Cread una función que nos devuelva True si hoy es viernes y false en caso contrario

# Cread una función que nos devuelva la fecha actual en formato día/mes/año

# Cread una función que nos devuelva el siguiente día laborable a partir de hoy

Soluciones ejercicios lambda

biblioteca = [
    {"titulo": "El Quijote", "autor": "Cervantes", "precio": 20},
    {"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
    {"titulo": "Los detectives salvajes", "autor": "Roberto Bolaño", "precio": 23},
    {"titulo": "Tom va a la escuela", "autor": "Rick Sánchez", "precio": 10}
]

# Para resolver los siguientes ejercicios podéis usar cualquier método de los vistos en clase

# Calcular la suma de todos los precios

# obtener precio
# Haciendo el bucle de toda la vida y sumando los precios
suma = 0
for libro in biblioteca:
    suma += libro["precio"]
print(suma)
# Comprension de listas obteniendo solo el precio, entonces ya puedo usar 'sum'
precios = [libro["precio"] for libro in biblioteca]
print(sum(precios))
# Obteniendo los precios mediante el 'map' y una función lambda, después puedo usar 'sum'
precios = list(map(lambda x: x["precio"], biblioteca))
print(sum(precios))

# Queremos obtener el libro con el precio más alto
# Método tradicional con un for nos guardamos el más caro 'de momento'
libroCaro = None
precio = 0
for libro in biblioteca:
    # Si encontramos uno más caro nos lo quedamos
    if libro["precio"] > precio:
        precio = libro["precio"]
        libroCaro = libro
print(libroCaro)

# Usar max junto con lambda para que busque el máximo de la propiedad 'precio'
libroCaro = max(biblioteca, key=lambda x: x["precio"])
print(libroCaro)

# queremos ordenarlos por título

# Ordenamos mediante título usando una lambda
librosPorTitulo = sorted(biblioteca, key=lambda x: x["titulo"])
print(librosPorTitulo)

proyectos = [
    {"nombre": "Análisis", "horas": 10, "precio": 60},
    {"nombre": "Desarrollo", "horas": 50, "precio": 50},
    {"nombre": "Implementación", "horas": 5, "precio": 70},
    {"nombre": "Pruebas", "horas": 15, "precio": 40},
]

# Queremos calcular el coste total de todos los proyectos (horas*precio)

total = 0
for proyecto in proyectos:
    total += proyecto["horas"] * proyecto["precio"]
print(total)

importes = [proyecto["horas"] * proyecto["precio"] for proyecto in proyectos]
print(sum(importes))
importes = list(map(lambda x: x["precio"] * x["horas"], proyectos))
print(sum(importes))

# El proyecto con mayor coste (horas*precio)
mayorCoste = max(proyectos, key=lambda proyecto: proyecto["precio"] * proyecto["horas"])
print(mayorCoste)
# ordenar por número de horas
porHoras = sorted(proyectos, key=lambda x: x["horas"])
print(porHoras)
# Filtrar los que cuesten más 1000 €

caros = [proyecto for proyecto in proyectos if proyecto["horas"] * proyecto["precio"] > 1000]
print(caros)
caros = list(filter(lambda x: x["horas"] * x["precio"] > 1000, proyectos))
print(caros)

Ejercicios lambda

biblioteca = [
    {"titulo": "El Quijote", "autor": "Cervantes", "precio": 20},
    {"titulo": "Las olas", "autor": "Virginia Woolf", "precio": 17},
    {"titulo": "Los detectives salvajes", "autor": "Roberto Bolaño", "precio": 23},
    {"titulo": "Tom va a la escuela", "autor": "Rick Sánchez", "precio": 10}
]

# Para resolver los siguientes ejercicios podéis usar cualquier método de los vistos en clase

# Calcular la suma de todos los precios

# Queremos obtener el libro con el precio más alto

# queremos ordenarlos por título

proyecto = [
    {"nombre": "Análisis", "horas": 10, "precio": 60},
    {"nombre": "Desarrollo", "horas": 50, "precio": 50},
    {"nombre": "Implementación", "horas": 5, "precio": 70},
    {"nombre": "Pruebas", "horas": 15, "precio": 40},
]

# Queremos calcular el coste total de todos los proyectos (horas*precio)
# El proyecto con mayor coste (horas*precio)
# ordenar por número de horas
# Filtrar los que cuesten más 1000 €