Licence Culture Humaniste et Scientifique, 2013–2014
Universités Bordeaux 3 & 1
Contrôle continu informatique — Durée : 2h
Répondre aux questions dans un seul fichier python, qu’on appellera prenom-nom.py.
Un fichier modèle est fourni. Il est demandé :
– de le récupérer ici http://www.labri.fr/~zeitoun/enseignement/13-14/CHS/Skel.py,
– de le sauvegarder sous le nom prenom-nom.py,
– de le compléter suivant les exercices ci-dessous.
Le fichier fourni contient :
–
la première ligne de chaque fonction à écrire, mais le corps de chaque fonction ne contient
qu’une instruction
return
(sauf celle de l’exercice 5.2 qui contient plus), qu’il faut modifier.
–
des lignes d’affichage, permettant de tester les fonctions une fois écrites. Pour pouvoir vérifier
les programmes, les résultats de ces tests sont fournis page suivante.
Exercice 1
Écrire une fonction
f1
qui prend en argument 2 entiers
a
et
b
, et renvoie la valeur
ab −a−b.
On rappelle les opérateurs
//
et
%
:
a// b
retourne le quotient de la division entière de
a
par
b
et
a%ble reste de cette division.
Exercice 2
Écrire une fonction
f2
qui prend en argument 3 entiers
a
,
b
et
c
, et renvoie la valeur
a+bsi cest pair, et a−bsi cest impair.
On rappelle les opérateurs suivants sur les listes (tous ne vous seront pas forcément nécessaires) :
◦len(L) renvoie la longueur de la liste L,
◦L[i] est le (i+ 1)ème élément de la liste L(le premier élément étant L[0]),
◦L[-i] est l’élément L[len(L)-i] (par exemple, L[-1] est le dernier élément de la liste),
◦L1 + L2
est la liste formée des éléments de
L1
, suivis de ceux de
L2
. Par exemple,
[1,2] + [3]
s’évalue en la liste [1,2,3],
◦L[i:]
est la liste
L
privée de ses
i
premiers éléments. Par exemple, si
L
vaut
[1,2,3]
,
L[1:]
est
la liste [2, 3].
Exercice 3
Écrire une fonction
longueur_paire
qui prend en argument une liste
L
, et qui renvoie
True si cette liste est de longueur paire et False sinon.
Exercice 4 1.
Écrire une fonction
demi
qui prend en argument un entier
n>
0, et renvoie la
partie entière de n/2. Par exemple, si nvaut 6 ou 7, cette fonction doit renvoyer 3.
2.
Écrire une fonction
reste_et_parite
qui prend en argument un entier
n
, et qui renvoie la
liste [
n/
2
,
0] si
n
est pair, et la liste [
E
(
n/
2)
,
1] si
n
est impair, où
E
(
n/
2) désigne la partie
entière de n/2, calculée à la question 1.
3.
Écrire une fonction
decomposition_base_2
qui prend en argument un entier
n
, et renvoie la
liste de sa décomposition en base 2. Par exemple,
decomposition_base_2(13)
doit renvoyer
la liste [1, 1, 0, 1].
1
Exercice 5 1.
Écrire une fonction non récursive
double_liste
qui prend en argument une liste
d’entiers
L
et renvoie la liste où chaque entier est doublé. Ainsi,
double_liste[1,2,3,4,5]
doit renvoyer [2,4,6,8,10].
2. Écrire une fonction double_liste_rec faisant la même chose, de façon récursive.
Exercice 6 1.
Écrire une fonction non récursive
renverse_liste
qui prend en argument une
liste d’entiers
L
et renvoie la liste renversée. Par exemple,
renverse_liste[1,2,3,4,5]
doit
renvoyer [5,4,3,2,1].
2. Écrire une fonction renverse_liste_rec faisant la même chose, de façon récursive.
Exercice 7 1.
Écrire une fonction
completer
qui prend en argument 2 listes de chiffres entre 0
et 9, et qui renvoie ces 2 listes, la plus courte ayant été complétée par des
0
à gauche pour avoir
2 listes de même longueur. Par exemple,
completer([1,2], [3,4,5])
doit renvoyer
[0,1,2],
[3,4,5].
2.
En utilisant la fonction précédente, écrire une fonction
addition
qui prend en argument 2 listes
de chiffres entre 0 et 9, et qui renvoie la liste représentant l’addition des deux nombres dont
la suite des chiffres est donnée par les arguments. Par exemple, avec les arguments
[1,2,3]
et
[2,0]
, qui représentent les entiers 123 et 20, elle doit renvoyer
[1,4,3]
qui représente
143 = 123 + 20.
Résultats attendus avec le fichier fourni.
f1 (3 ,8) = 13
f2 (2 ,3 ,4) = 5
f2 (3 ,4 ,5) = -1
demi (6) = 3
demi (7) = 3
reste_e t_ pa ri te (6) = [3 , 0]
reste_e t_ pa ri te (7) = [3 , 1]
decomposition_base_2(13) = [1, 0, 1, 1]
decomposition_base_2(15) = [1, 1, 1, 1]
doub l e _ l i s te ([1 ,2 ,3 ,4 ,5]) = [2 , 4 , 6, 8 , 10]
double_liste_rec ([1 ,2 ,3 ,4 ,5]) = [2 , 4 , 6, 8 , 10]
renverse_liste ([1 ,2 ,3 ,4 ,5]) = [5 , 4, 3 , 2 , 1]
renverse_lis t e _ r e c ([1 ,2 ,3 ,4 ,5]) = [5 , 4, 3 , 2, 1]
co m pleter ([1 ,2 ,3] , [2 ,0]) = ([1 , 4, 3] , [0 ,2 ,0])
ad dition ([1 ,2 ,3] , [2 ,0]) = [1 , 4 , 3]
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!