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
-
Complète le code du tri par insertion.
-
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