D'après 2023, sujet zéro A Auteurs : Frédéric Junier, Franck Chambon, Denis Quenton
Exécution de programmes, recherche et corrections de bugs⚓︎
D'après 2022, Asie, J2, Ex. 5
-
On considère la fonction
somme
qui reçoit en paramètre un entiern
strictement positif et renvoie le résultat du calcul \(1+\frac12+\frac13+\cdots+\frac1n\).🐍 Script Pythondef somme(n) : total = 0 for i in range(n): total = total + 1 / i return total
Lors de l'exécution de
somme(10)
, le message d'erreurZeroDivisionError: division by zero
apparait. Identifier le problème et corriger la fonction pour qu'elle effectue le calcul demandé. -
On considère la fonction
maxi
qui prend comme paramètre une listeL
non vide de nombres et renvoie le plus grand nombre de cette liste :🐍 Script Pythondef maxi(L) : indice = 0 maximum = 0 while indice <= len(L): if L[indice] > maximum : maximum = L[indice] indice = indice + 1 return maximum
a. Lors de l'exécution de
maxi([2, 4, 9, 1])
une erreur est déclenchée. Identifier et corriger le problème.b. Le bug précédent est maintenant corrigé. Que renvoie à présent l'exécution de
maxi([-2, -7, -3])
? Modifier la fonction pour qu'elle renvoie le bon résultat. -
On souhaite réaliser une fonction qui génère une liste de
n
joueurs identifiés par leur numéro. Par exemple on souhaite que l'appelgenere(3)
renvoie la liste['Joueur 1', 'Joueur 2', 'Joueur 3']
.🐍 Script Pythondef genere(n) : L = [] for i in range(1, n + 1): L.append('Joueur ' + i) return L
L'appel
genere(3)
déclenche l'erreur suivanteTypeError: can only concatenate str (not "int") to str.
Expliquer ce message d'erreur et corriger la fonction afin de régler le problème.
-
On considère la fonction
suite
qui prend un entier positifn
en paramètre et renvoie un entier.🐍 Script Pythondef suite(n) : if n == 0: return 0 else : return 3 + 2 * suite(n - 2)
a. Quelle valeur renvoie l'appel de
suite(6)
?b. Que se passe-t-il si on exécute
suite(7)
? -
On considère le code Python ci-dessous :
🐍 Script Pythonx = 4 L = [] def modif(x, L): x = x + 1 L.append(2 * x) return x, L print(modif(x, L)) print(x, L)
a. Qu'affiche le premier
print
? b. Qu'affiche le secondprint
?