Solucion Combinadas



# Crear una función a la que le pasemos una lista de números y nos devuelva
# una tupla con la suma de los números pares y de los impares:

# sumaparidad([1,2,3,4])->(6,4)

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

def sumaparidad2(lista):
    pares=[numero for numero in lista if numero%2==0]
    impares=[numero for numero in lista if numero%2!=0]
    return (sum(pares),sum(impares))
def sumaparidad3(lista):
    return (sum([numero for numero in lista if numero%2==0]),sum([numero for numero in lista if numero%2!=0]))

print(sumaparidad3([1,2,3,4]))

milista=[1,1,1,1,1,2,2,2,2,2]
print(sumaparidad3(milista))

# Crear una función a la que le pasamos un diccionario con una lista
# de clientes y sus deudas y nos devuelva el total de deudas.
# La lista sería así:
#
clientes={"Ana":[100,500,3000],"Eva":[900,300,200]}
#
# totaldeuda(clientes)->5000

def totaldeuda(clientes):
    total=0
    for deudas in clientes.values():
        total+=sum(deudas)
    return total

def totaldeuda2(clientes):
    return sum(sum(clientes.values(),[]))

print(totaldeuda2(clientes))

# sum(clientes.values(),[]) concatena diferentes listas en una lista
print(clientes.values())
print(sum(clientes.values(),[]))

lista1=[[1,2,3],[3,4,5],[7,8,9]]
lista4=sum(lista1,[])
print(lista4)

 # Crea una función a la que le pasamos una lista de diccionarios
 # que son alumnos con el siguiente formato:
 #
clase=[{"nombre":"Ana","notas":[5,7,8]},{"nombre":"Pep","notas":[8,6,8]}]
 #
 # Y que nos devuelva la media total de las notas
 #
 # media_total(clase)->7

def media_total0(clase):
    total_notas=0
    numero_notas=0
    for alumno in clase:
        for nota in alumno["notas"]:
            total_notas+=nota
            numero_notas+=1
    return round(total_notas/numero_notas,2)

def media_total(clase):
    total_notas=[]
    for alumno in clase:
        total_notas+=alumno["notas"]
    return round(sum(total_notas)/len(total_notas),2)

def media_total_ninja(clase):
    # Anidación de compresión de listas
    total_notas=[nota for alumno in clase for nota in alumno["notas"]]
    return round(sum(total_notas) / len(total_notas), 2)

print(media_total_ninja(clase))

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos