def cheltuieli_mai_mari_decat_suma(l, suma):
    '''
    functia returneaza o lista ,,aux'' toate cheltuielile mai mari decat o suma data
    l-lista, suma - numar intreg, aux - lista
    parcurg lista l si salvez in lista aux elementele listei l care sunt mai mari decat ,,suma"
    '''
    aux = []
    for s in l:
        if get_suma(s) > suma:
            aux.append(s)
    return aux
def cheltuieli_cu_o_anumita_suma(l,suma):
    '''
    functia returneaza prin lista ,,aux" toate cheltuielile cu o anumita suma data
    l - lista, suma - numar intreg, aux = lista
    parcurg lista l si salvez in lista aux elementele listei care indeplinesc conditia specificata anterior
    '''
    aux = []
    for s in l:
        if(get_suma(s) == suma):
            aux.append(s)
    return aux
def suma_totala_pentru_un_anumit_tip(l, tip):
    '''
    functia returneaza suma totala pentru un anumit tip de cheltuiala
    l - lista, tip - cuvant, suma_totala - numar intreg
    parcurg lista si adun la suma_totala elementele care sunt de acelasi tip cu cel specificat
    '''
    suma_totala = 0
    for s in l:
        if get_tip(s) == tip:
            suma_totala = suma_totala + get_suma(s)
    return suma_totala
def cheltuieli_mai_mari_decat_suma(l, suma):
    '''
    functia returneaza o lista ,,aux'' toate cheltuielile mai mari decat o suma data
    l-lista, suma - numar intreg, aux - lista
    parcurg lista l si salvez in lista aux elementele listei l care sunt mai mari decat ,,suma"
    '''
    aux = []
    for s in l:
        if get_suma(s) > suma:
            aux.append(s)
    return aux
def cheltuieli_cu_o_anumita_suma(l, suma):
    '''
    functia returneaza prin lista ,,aux" toate cheltuielile cu o anumita suma data
    l - lista, suma - numar intreg, aux = lista
    parcurg lista l si salvez in lista aux elementele listei care indeplinesc conditia specificata anterior
    '''
    aux = []
    for s in l:
        if (get_suma(s) == suma):
            aux.append(s)
    return aux
def suma_totala_pentru_un_anumit_tip(l, tip):
    '''
    functia returneaza suma totala pentru un anumit tip de cheltuiala
    l - lista, tip - cuvant, suma_totala - numar intreg
    parcurg lista si adun la suma_totala elementele care sunt de acelasi tip cu cel specificat
    '''
    suma_totala = 0
    for s in l:
        if get_tip(s) == tip:
            suma_totala = suma_totala + get_suma(s)
    return suma_totala
def cheltuieli_dupa_suma_si_zi(l, suma, zi):
    '''
    functia returneaza lista ,,aux'' toate cheltuielile mai mici decat o suma data si efectuate 
    inainte de o zi specificata
    l- lista, suma - numar intreg, zi - numar intreg, aux - lista
    parcurg lista l si salvez in lista ,,aux'' elementele care indeplinesc conditia specificata
    '''
    aux = []
    for s in l:
        if get_suma(s) < suma and get_ziua(s) < zi:
            aux.append(s)
    return aux
def cheltuieli_dupa_suma_si_zi(l, suma, zi):
    '''
    functia returneaza lista ,,aux'' toate cheltuielile mai mici decat o suma data si efectuate 
    inainte de o zi specificata
    l- lista, suma - numar intreg, zi - numar intreg, aux - lista
    parcurg lista l si salvez in lista ,,aux'' elementele care indeplinesc conditia specificata
    '''
    aux = []
    for s in l:
        if get_suma(s) < suma and get_ziua(s) < zi:
            aux.append(s)
    return aux
def elimina_cheltuieli_mai_mici_decat_o_suma(l,suma, undolist):
    '''
    functia sterge toate cheltuielile mai mici decat o suma data
    l-lista, suma - numar intreg
    
    folosesc o lista auxiliara ,,rez" si pun in ea elementele care sunt mai mari sau egale decat acea suma
    apoi actualizez lista l cu noua lista ,,rez"
    '''
    rez = []
    for s in l:
        if get_suma(s) >= suma:
            rez.append(s)
    l[:] = rez
def elimina_cheltuieli_mai_mici_decat_o_suma(l, suma, undolist):
    '''
    functia sterge toate cheltuielile mai mici decat o suma data
    l-lista, suma - numar intreg
    
    folosesc o lista auxiliara ,,rez" si pun in ea elementele care sunt mai mari sau egale decat acea suma
    apoi actualizez lista l cu noua lista ,,rez"
    '''
    rez = []
    for s in l:
        if get_suma(s) >= suma:
            rez.append(s)
    l[:] = rez
def ziua_in_care_suma_cheltuita_e_maxima(l):
    '''
    functia returneaza prin variabila ,,zi" ziua in care suma cheltuita este maxima
    suma_maxima - numar intreg, variabila care retine suma_maxima dintr-o anumita zi
    suma_partiala - numar intreg, variabila care retine suma partiala dintr-o anumita zi si o compara cu suma maxima
    d - numar intreg, variabila care retine ziua din lista de cheltuieli 
    '''
    suma_maxima = 0
    zi = 0
    for s in l:
        d = get_ziua(s)
        suma_partiala = 0
        for j in l:
            if get_ziua(j) == d:
                suma_partiala = suma_partiala + get_suma(j)
            if suma_maxima < suma_partiala:
                suma_maxima = suma_partiala
                zi = d
    return zi
def ziua_in_care_suma_cheltuita_e_maxima(l):
    '''
    functia returneaza prin variabila ,,zi" ziua in care suma cheltuita este maxima
    suma_maxima - numar intreg, variabila care retine suma_maxima dintr-o anumita zi
    suma_partiala - numar intreg, variabila care retine suma partiala dintr-o anumita zi si o compara cu suma maxima
    d - numar intreg, variabila care retine ziua din lista de cheltuieli 
    '''
    suma_maxima = 0
    zi = 0
    for s in l:
        d = get_ziua(s)
        suma_partiala = 0
        for j in l:
            if get_ziua(j) == d:
                suma_partiala = suma_partiala + get_suma(j)
            if suma_maxima < suma_partiala:
                suma_maxima = suma_partiala
                zi = d
    return zi
def afisare_cheltuiala(s):
    '''
    afisez o singura cheltuiala de tipul (zi, suma, tip)
    '''
    print("({0},{1},{2})".format(get_ziua(s), get_suma(s), get_tip(s)))
def afisare_cheltuiala(s):
    '''
    afisez o singura cheltuiala de tipul (zi, suma, tip)
    '''
    print("({0},{1},{2})".format(get_ziua(s), get_suma(s), get_tip(s) ) )