Terminale NSI

Forum Lycée Carnot


Répondre
Avatar du membre
maths-code
Site Admin
Messages : 18
Enregistré le : mer. avr. 19, 2023 9:02 pm

Terminale NSI

Message par maths-code »

Le problème du sac à dos, stratégie 1: prendre l'objet de plus grande valeur

Code : Tout sélectionner

def strat_1b(liste_objet, masse_dispo):
    sac = []
    i = 0
    while masse_dispo > 0:
        if liste_objet[i][1] <= masse_dispo:
            masse_dispo = masse_dispo-liste_objet[i][1]
            sac.append(liste_objet[i])
        i = i + 1
    return sac
maison = [(9700, 7), (3500, 8), (2600, 3)]
strat_1b(maison, 20)
Avatar du membre
maths-code
Site Admin
Messages : 18
Enregistré le : mer. avr. 19, 2023 9:02 pm

Re: Terminale NSI

Message par maths-code »

Code : Tout sélectionner

def rendu_monnaie(systeme:list, montant:int)->int:
    """
    :param system (list): système de pièces
    :param montant (int): somme à rendre
    :return nbre (int) : nombre de pièces à rendre
    >>> rendu_monnaie([1, 2, 5, 10], 8)
    3
    >>> rendu_monnaie([1, 2, 5, 10], 23) 
    4
    >>> rendu_monnaie([1, 2, 5, 10], 0)
    0
    """
    assert montant>=0, "la somme à rendre doit être positive"
    nbre = 0
    liste = []
    i = len(systeme)-1
    while montant > 0 and i>=0:
        if systeme[i] <= montant:    
montant = montant - systeme[i] nbre += 1 liste.append(systeme[i]) else: i = i-1 return liste def rendu_dict(systeme:list, montant:int)->int: """ :param system (list): système de pièces :param montant (int): somme à rendre :return nbre (int) : nombre de pièces à rendre >>> rendu_monnaie([1, 2, 5, 10], 8) 3 >>> rendu_monnaie([1, 2, 5, 10], 23) 4 >>> rendu_monnaie([1, 2, 5, 10], 0) 0
""" assert montant>=0, "la somme à rendre doit être positive" nbre = 0 i = len(systeme)-1 dico = {i: 0 for i in systeme } while montant > 0 and i >= 0: if systeme[i] <= montant: montant = montant - systeme[i] nbre += 1 dico[systeme[i]] += 1 else: i = i-1 return dico print(rendu_dict([1, 2, 10], 92 ))
Avatar du membre
maths-code
Site Admin
Messages : 18
Enregistré le : mer. avr. 19, 2023 9:02 pm

Re: Terminale NSI

Message par maths-code »

Code : Tout sélectionner

def indice_maxi(L):
    """
    renvoie le maximum et les indices où se il se trouve
    :param L(list):
    :return (tuple):
    """
    liste_maxi = []
    nb_max = L[0]
    for i in range(len(L)):
        if L[i] == nb_max:
            liste_maxi.append(i)
        if L[i] > nb_max:
            nb_max = L[i]
            liste_maxi = [i]
    return (nb_max, liste_maxi)
Répondre