• Aucun résultat trouvé

DS d’informatique N

N/A
N/A
Protected

Academic year: 2022

Partager "DS d’informatique N"

Copied!
2
0
0

Texte intégral

(1)

TSI1– Informatique DS d’informatique – 23/11/2019

DS d’informatique N

o

2

Exercice 1:Compréhension d’algorithmes On définit la fonction suivante :

def truc(n):

res = 0

for i in range(n):

res = res+i return res

1. Donner les valeurs renvoyées partruc(0),truc(2)ettruc(5). On définit maintenant la fonction suivante :

def truc2(L, s):

n = 0 for v in L:

if v > s:

n = n + 1 return n

2. Donner la valeur renvoyée partruc2([1,2,5,3,7,4,8,3,10], 3). 3. Expliquer en quelques mots le but de la fonctiontruc2.

Enfin on s’intéresse à la fonction suivante : def truc3(L, val):

i = 0

while i < len(L) and L[i] <= val : i += 1

res = L[i]

return [i,res]

4. Que renvoie l’appel de la fonctiontruc3([7,14,21,45,52,67,89,99],50)? 5. Expliquer en quelques mots ce que fait la fonctiontruc3.

Exercice 2:Erreurs de programmation

On souhaite écrire une fonction qui prend en paramètres une liste d’entiers Let un entiern et renvoie le nombre de fois oùnapparait dans la listeL.

1 def apparitions(L, n):

2 for i in range(len(L)):

3 if L[i] == n:

4 nb = nb + 1

5 return nb

Lorsqu’on appelle cette fonction, l’interpréteur Python renvoie l’erreur suivante : File "<tmp 1>", line 4, in apparitions

nb = nb + 1

UnboundLocalError: local variable 'nb' referenced before assignment 1. Expliquer ce que signifie cette erreur, et comment on peut la corriger.

On corrige cette erreur de syntaxe et on teste la fonction en effectuant les appels suivants :

— apparitions([1,2,3,2,1,3,3,3], 1)renvoie1;

— apparitions([1,2,3,2,1,3,3,3], 2)renvoie0;

— apparitions([1,2,3,2,1,3,3,3], 3)renvoie0;

Il y a clairement un problème avec ce programme, il ne renvoie pas la bonne valeur.

2. Expliquer où se trouve l’erreur et comment la corriger.

On souhaite maintenant écrire une fonction qui teste si une liste d’entiers que l’on suppose triée contient plusieurs fois le même nombre. On écrit la fonction suivante :

2019–2020 page 1/2

(2)

TSI1– Informatique DS d’informatique – 23/11/2019

1 def contientDoublons(L):

2 for i in range(len(L))

3 if L[i] == L[i+1]:

4 return True

5 else:

6 return False

Lorsqu’on exécute le code qui définit cette fonction, Python refuse et affiche le message d’erreur suivant : File "<tmp 1>", line 2

for i in range(len(L)) SyntaxError: invalid syntax^

3. Corriger l’erreur correspondante.

L’erreur corrigée, on appelle la fonction avec l’instructioncontientDoublons([1,2,3,4]). L’interpréteur Python voit à nouveau rouge et affiche l’erreur suivante :

File "<tmp 1>", line 3, in contientDoublons if L[i] == L[i+1]:

IndexError: list index out of range

4. Que signifie cette erreur et comment la corriger ?

Enfin notre fonction s’exécute correctement, mais lors de tests, on obtient les résultats suivants :

— contientDoublons([1,2,3,4])renvoieFalse;

— contientDoublons([2,2,3,4])renvoieTrue;

— contientDoublons([1,2,2,3])renvoieFalse;

— contientDoublons([1,2,3,3])renvoieFalse;

5. Visiblement notre fonction ne renvoie pas toujours le bon résultat. Expliquer où se trouve l’erreur et écrire une fonctioncontientDoublonscorrecte.

Exercice 3:Quelques fonctions

1. Écrire une fonctionmoyenne(L)qui prend en paramètre une listeLde nombres à virgule flottante et qui renvoie la moyenne de ces nombres.

2. Écrire une fonction plusGrand(L) qui prend en paramètre une liste L de nombres à virgule flottante et qui renvoie le plus grand de ces nombres.

3. Écrire une fonctionlisteCarres(n)qui prend en paramètre un nombre entiernet qui renvoie une liste contenant les carrés des nombres entiers compris entre 1 etn. Par exemple :

— listeCarres(3)renvoie[1, 4, 9];

— listeCarres(5)renvoie[1, 4, 9, 16, 25].

4. (Un poil plus difficile) Écrire une fonctionestTriee(L)qui prend en paramètre une listeLde nombres à virgule flottante et qui renvoieTrue si les éléments de cette liste sont triés par ordre croissant etFalsesinon.

2019–2020 page 2/2

Références

Documents relatifs

Dans l’exercice 1, pour faire le tableau de variation, il faut bien pr´ eciser que l’on a un polynˆ ome de degr´ e 2 pour pouvoir appliquer les r´ esultats du cours.... Ca vous

Sans utiliser la fonction max() de Python, écrire une fonction major(L) qui prend en entrée une liste de nombres (sans vérifier que ce sont bien des nombres) et qui renvoie son

On dit que les éléments de cet ensemble sont à virgule ottante car en xant un signiant m entier, on peut obtenir plusieurs nombres avec le même signiant, mais pour lesquels la

(2) En d´ eduire la fonction supprime qui prend en arguments une liste L et un nombre n et supprime le premier ´ el´ ement de la liste ´ egal ` a n.. Cette fonction renverra True si

[r]

Dans la même classe, écrire une autre fonction horizontal qui prend deux arguments entiers et renvoie une règle graduée : par exemple, horizontal(27,5) renvoie la

Écrire une fonction colonnes qui prend une liste de liste d’entiers m représentant une grille carrée et un entier a en paramètre et qui envoie le booléen True si la somme des

Écrire une fonction colonnes qui prend une liste de liste d’entiers m représentant une grille carrée et un entier a en paramètre et qui envoie le booléen True si la somme des