Ejemplo barra bootstrap

html

 <div class="progress">
        <div id="barra" class="progress-bar progress-bar-striped progress-bar-animated" style="width:10%"></div>
    </div>

jd

let barra = document.getElementById("barra")
let cont = 10
setTimeout(incrementarBarra, 1000)
function incrementarBarra() {
    cont+=5
    barra.style.width = cont + "%"
    barra.innerHTML = cont + "%"
    if (cont < 100) {
        setTimeout(incrementarBarra, 1000)
    }
}

Solución examen

function repetir(cadena, numero) {
    if (cadena.length != 1) { return ""; }
    return cadena.repeat(numero);
}

console.log(repetir("a", 6))
console.log(repetir("aasdasd", 6))

function masLarga(cad1, cad2) {
    return cad1.length > cad2.length ? cad1 : cad2
}

console.log(masLarga("hola", "adios"))
console.log(masLarga("hola amigos", "adios"))

function eliminarPares(lista) {
    return lista.filter(cad => cad.length % 2 != 0)
}

console.log(eliminarPares(["aa", "bbb", "ccccc", "dddd"]))

function repetidas(cadena){
    for(i=1;i<cadena.length;i++){
        if (cadena.at(i)==cadena.at(i-1) && cadena.at(i)!=" "){
            return true;
        }
    }
    return false;
}

function repetidasForeach(cadena){
    let res=false
    cadena.split('').forEach((valor,i)=>{
        if (valor==cadena.at(i+1)){
            res= true;
            return
        }
    })
    return res;
}


console.log(repetidasForeach('La luvia  en madrid'))

Ejercicios argumentos variables

# vamos a crear una función a la que le pasamos una cantidad variable
# de números y nos dice cuantos pares hay
# contarPares(1,2,3)->1 contarPares(1,2,4,6)-> 3
# documentadla

# Vamos a crear una función a la que le pasemos una cantidad variable de números
# y nos diga la cantidad de aprobados (valor>=5)
# aprobados(3,6,7,5)->3  aprobados(7,1,2,9)->2
#documentadla

https://ellibrodepython.com/args-kwargs-python

Recursividad y funciones de orden superior

# función recursiva: una función que se llama a sí misma

# factorial de un número: 5!=5*4*3*2*1 multiplicación de todos los números hasta el 1
# factorial de un número: 5! = 5*4! multiplicación del número por el factorial de ese número -1
# Si yo quiero haccer una función recursiva:
# identificar el caso base: Siempre hay un final donde devolvemos un valor y no otra llamada
# if numero<2 devuelvo 1
# poner nuestra función como una llama a ella misma
# numero*factorial(numero-1)
# En esta llamada de alguna manera nos acercamos al caso base

def factorialRecursivo(numero):
    if numero < 2:
        return 1
    else:
        return numero * factorialRecursivo(numero - 1)

print(factorialRecursivo(5)) # 120

# funciones de orden superior
# utilizar funciones como parámetros

# yo tengo una función procesar que tiene dos parámetros
# una función y un número
def procesar(funcion, numero):
    return funcion(numero)

def cuadrado(numero):
    return numero**2
def doble(numero):
    return numero*2

print(procesar(cuadrado,3)) # cuadrado es un parámetro
print(procesar(doble,3)) # doble es un parámetro

Más cosas de funciones

# valores predeterminador

# valores por defecto
def saludo(nombre="sin nombre"):
    return "Hola "+nombre

print(saludo("Juan"))
print(saludo())

def pvp(precio,iva=.21):
    return precio*(1+iva)

print(pvp(100,.21))
print(pvp(100))
print(pvp(100,.04))

# parámetros arbitrarios

def suma(a,b):
    return a+b

print(suma(8,5))

# al poner *args en args se guarda una lista con todos los parámetros que le pasemos
def sumaVariable(*args):
    suma=0
    for valor in args:
        suma+=valor
    return suma

print(sumaVariable(1,2,3))
print(sumaVariable(1,2,3,4,5,6,7))
print(sumaVariable())

# crear una función mayorNumero a la que le pasemos un número variable de argumentos
# y nos devuelva el mayor de todos ellos

def mayorNumero(*args):
    mayor=args[0]
    # recorriendo la lista
    for valor in args:
        # y si el elemento que estoy mirando es mayor que el que tengo me quedo con el
        if valor>mayor:
            mayor=valor
    return mayor

print(mayorNumero(1,6,4,3)) #6
print(mayorNumero(-1,-6,-4,-3)) #-1
print(mayorNumero(1,6,4,30,100,20,1000,59,1)) #1000




Soluciones ejercicios

# Quiero una función menor a la que le pasamos dos números y nos devuelve el más pequeño
# menor(1,8)-> 1 menor(10,2)->2  menor(8,8)->8

def menor1version(num1, num2):
    # si el numero 1 es menor que el numero 2 devuelvo el numero 1
    if num1 < num2:
        return num1
    # si el numero 2 es menor que el numero 1 devuelvo el numero 2
    if num2 < num1:
        return num2
    # si son iguales da igual cual devolvamos porque son iguales
    return num1


# refactorizar: mejorar el código
def menor(num1, num2):
    if num1 < num2:
        return num1
    else:
        return num2


print(menor(1, 8))  # 1
print(menor(10, 2))  # 2
print(menor(8, 8))  # 8


# Quiero una función a la que le paso una cadena y un numero y nos devuelve la cadena
# repetida tantas veces como el número
# repetirCadena("Ana",3)->"AnaAnaAna"  repetirCadena("qw",5)->"qwqwqwqwqw"

def repetirCadena(cadena, numero):
    res = ""
    for i in range(numero):
        res += cadena
    return res

print(repetirCadena("Ana", 3))  # "AnaAnaAna"
print(repetirCadena("qw", 5))  # "qwqwqwqwqw"


Y todavía más ejemplos

# calcular el factorial de un número
# numero!= 1*2*3...*numero
# nombre de la función y parámetros def factorial(numero)
# que devuelvo: calcular el factorial
# casos de prueba. factorial(3)--> 6  factorial(5)--->120

def factorial(numero):
    resultado=1
    # codigo que me calculará el factorial todavía no sé como
    for i in range(1,numero+1):
        resultado*=i
    return resultado

print(factorial(3)) # imprimir 6
print(factorial(5)) # imprimir 120

# quiero una función que me cuente en una cadena las veces que aparece una letra
# contarLetra("hola que tal","l")--->2 contarLetra("patata","a")--->3

def contarLetra(cadena,letra):
    apariciones=0
    # calcularé las veces que aparece la letra
    for caracter in cadena:
        if caracter==letra:
            apariciones+=1
    return apariciones

print(contarLetra("hola que tal","l")) # 2
print(contarLetra("patata","a")) # 3

Más ejemplos funciones

# funciones puras: no dependen del entorno para funcionar
# Son como una caja negra que procesan los datos que le pasamos
# y devuelven un resultado
import math


def entrarNoPura():
    if edad >= 18:
        return True
    else:
        return False


edad = 19
print(entrarNoPura())
edad = 9
print(entrarNoPura())


def entrarPura(edad):
    if edad >= 18:
        return True
    else:
        return False


print(entrarPura(20))


def suma(a, b, c, d):
    return a + b + c + d


print(suma(1, 2, 3, 4))


def saludo(nombre):
    return "Hola " + nombre


cadena = saludo("Ana")
print(cadena)
print(saludo("Eva"))


def nombreCompleto(nombre, apellido):
    return nombre + " " + apellido


print(nombreCompleto("Ana", "Pi"))


def contarVocales(cadena):
    vocales = 0
    for letra in cadena:
        # comprobaré si es vocal
        for vocal in "aeiouáéíóúàèìòùü":
            if letra == vocal:
                vocales += 1
    return vocales


def esPrimo(numero):
    for i in range(2,numero):
        if numero % i == 0:
            return False
    return True


print(contarVocales("Hola que tal"))
print(contarVocales("él es un pingüino matón"))


print(esPrimo(17))
print(esPrimo(18))

Ejemplos funciones

# dentro de un programa tengo muchos códigos que hacen diferentes cosas
# contarvocales
# La idea de una función es:
# 1) Poder reutilizar un código en diferentes sitios sin tener que repetirlo
# 2) Hacer que nuestro código sea modular y flexible
# 3) Costruir funciones puras (ya veremos lo que es)

# defino una función saludo
def saludo(nombre):
    print("Hola", nombre, " que tal estás?")
    print("Hace tiempo que no nos vemos")
    print("Ya te lamaré", nombre)


saludo("Ana")  # Llamo a la función con el valor de "Ana" y se ejecutará con este valor
saludo("Pep")
saludo("Juan")


# sintaxis de una función
# def nombre_de_la_funcion(parametro1,parametro2,parametro3...):
#       Un código a ejecutar
#       return valor

# Sin parámetros y sin devolver valor
def hola():
    print("hola")


hola()


# No tiene parámetros pero devuelve un valor
def numeroPI():
    return 3.141592653


pi = numeroPI()
print(pi)


# Tiene parámetros y devuelve un valor
def doble(numero):
    return numero * 2


a = doble(8)
print(a)
a = doble(90)
print(a)


# Tiene un parámetro pero no devuelve ningún valor
def despedida(nombre):
    print("Adios", nombre)


despedida("Ana")


# función con 3 parámetros que devuelve un resultado
def mayor(a, b, c):
    if b > a:
        a = b
    if c > a:
        a = c
    return a


print(mayor(1, 8, 2))
print(mayor(10, 8, 2))