Aller au contenu

Devoir Terminale NSI 2025-2026

Exercice 1 – Négatif d’une image

Un pixel est une liste de trois entiers compris entre 0 et 255. Et une image est une liste de pixels.

Le "négatif" d'un pixel est le pixel obtenu en calculant \(255-x\) pour chaque composante (R,V,B).

Écrire une fonction negatif(image) qui renvoie l’image négative.

Exemple :

image = [[0, 128, 255],[64, 192, 32]]
# résultat attendu : [[255, 127, 0],[191, 63, 223]]
Corrigé
def convert(p):
    return [255-p[0],255-p[1],255-p[2]]

def negatif(image):
    res=[]
    for e in image:
        res.append(convert(e))
    return res

Exercice 2 – Programmation : somme des chiffres

On souhaite écrire une fonction qui calcule la somme des chiffres d’un entier positif.

Exemple : somme_chiffres(2025) → 9

Écris une fonction itérative en Python.

Corrigé
def somme_chiffres(n):
    res=0
    for e in str(n):
        res=res+int(e)
    return res

Exercice 3 – Tri par insertion

On rappelle le principe : on considère progressivement chaque élément de la liste et on l’insère à la bonne position dans la partie déjà triée.

Version incomplète (à trous)

Complète le code ci-dessous en Python :

def tri_insertion(tab):
    for i in range(1, len(tab)):
        # élément à insérer
        x = tab[i]
        j = i - 1
        # on décale les éléments plus grands que x
        while j >= 0 and __________________ :
            tab[j+1] = __________________
            j = j - 1
        # on insère x à sa place
        tab[__________] = __________
    return tab
Corrigé
def tri_insertion(tab):
    for i in range(1, len(tab)):
        # élément à insérer
        x = tab[i]
        j = i - 1
        # on décale les éléments plus grands que x
        while j >= 0 and x<tab[j] :
            tab[j+1] = tab[j]
            j = j - 1
        # on insère x à sa place
        tab[j+1] = x
    return tab
  1. Complète le code du tri par insertion.

  2. Quelle est la complexité dans le pire des cas ?


Exercice 4 – Occurrence maximale dans une chaîne

Écrire une fonction occurrence_max(chaine) qui renvoie la lettre minuscule la plus fréquente dans chaine.

Exemple :

ch = 'je suis en terminale et je passe le bac'
print(occurrence_max(ch))  # e
Corrigé

une solution avec count (pas très beau mais fonctionne)

def occurrence_max(ch):
    dico={}
    max=0
    for l in ch:
        if l not in dico:
            dico[l]=ch.count(l)
    for l in dico:
        if dico[l]>max:
            max=dico[l]
            lettre=l
    return lettre