ISBS B1-ST01 Contrôle de programmation 2014-2015
Programmation Python
Aide-mémoire fourni (recto-verso) – Durée 2 heures
1 Syntaxe de base et écritures de fonctions (8 points)
1.1 (1 point)
Décrivez en quelques lignes la syntaxe de range
1.2 Opérateurs (1 point)
Quels seront les affichages produits par les lignes suivantes ?
>>> x = 2
>>> a = x ’
>>> x
>>> x ’
>>> str ( x)
>>> print (a, "=" , x )
1.3 Conversion kilomètre - miles (2 points)
Écrire la fonction qui convertit des km en miles (1mile = 1,609 km)
def d eK mV er sM il e ( km ):
...
1.4 Recherche d’éléments sur critère (2 points)
Écrire la fonction qui retourne l’indice du premier élément strictement négatif parmi les
éléments d’une liste d’entiers (1si aucun élément n’est strictement négatif).
def indicePremierNegatif(liste):
...
1.5 Étude de programme (2 points)
Qu’affichera ce programme ?
titre = " Monty Python "
liste = [" Graham C hapman ", " John Cleese ", " Terry Jones ", " Eric Idle ", " Michael Palin ", " Terry Gill iam "]
for x in liste :
for c in titre :
if c != ’ ’ and c in x :
break
else : # ce " else " est bien a sa place
print ( x. split ( ’ )[1]. upper ())
a = [x [1]. upper () for x in liste ][4:]
print ( a)
–1/3–
ISBS B1-ST01 Contrôle de programmation 2014-2015
2 Débogage de programme (6 points)
Soit la spécification de fonction suivante :
Déclaration : def queDesChiffres(s)
Rôle : vérifie que la chaîne sne contient que des caractères chiffres
Données : s: chaîne de caractères
Résultat : booléen
Principe : vérification que chaque caractère de la chaîne est un chiffre
Le code (incorrect) suivant vous est fourni :
def q ue De sC hi ff r es ( s ): # code i nc or rec t
for c in s :
if c not in "12 3456 789 ":
return False
return True
2.1 Tests (2 points)
Donnez un exemple de chaîne pour laquelle ce programme ne fonctionnera pas : une chaîne
ne contenant que des chiffres pour laquelle il retourne False
Donnez un exemple de chaîne bien particulière pour laquelle ce programme ne fonctionnera
pas : une chaîne ne contenant pas de chiffre pour laquelle il retourne True
2.2 Correction (2 points)
Modifiez ce programme pour qu’il fonctionne.
2.3 Réécriture (2 points)
Écrivez une version récursive de la fonction queDesChiffres en utilisant le principe suivant :
si la chaîne est vide, retourner False
si son initiale (premier caractère) est un chiffre :
si la chaîne ne contient qu’un caractère, retourner True
si la chaîne contient au moins deux caractères, retourner la valeur obtenue par l’appel
à la fonction appliquée à la chaîne privée de son initiale
si son initiale n’est pas un chiffre, retourner False
–2/3–
ISBS B1-ST01 Contrôle de programmation 2014-2015
3 Simulation (6 points)
Une population est divisée en éléments pouvant chacun avoir une position parmi deux sur
une question (êtes vous de gauche ou de droite ? êtes vous pour la légalisation du camembert au
lait cru ? etc.)
Un individu peut convaincre un autre individu et le faire adhérer à sa position.
Pour une simulation informatique, on prendra lst une liste de néléments valant 0ou 1.
3.1 Programmes utilitaires (2 points)
Le module python random (utilisable avec l’instruction import random) fournit entre autres
la fonction random.randrange(a) fournissant un nombre entier pseudo-aléatoire compris entre 0
(inclus) et a (exclus).
Écrire une fonction militant(lst) qui retourne un nombre aléatoire pouvant être un indice
de lst.
Écrire une fonction voisin(k, lst) qui retourne aléatoirement le numéro d’un des deux
voisins de kdans lst. On distinguera les cas où kest à une des deux extrémités de la liste (pas
de choix pour le voisin) et ceux où kest à l’intérieur (deux voisins possibles).
3.2 Un modificateur d’opinion (2 points)
Écrire la fonction modif(lst) qui modifie une liste lst selon le principe suivant :
on choisit un militant dans la liste ;
ce militant convainc un de ses deux voisins (au hasard s’il n’est pas en extrémité de liste)
d’adhérer à sa position.
Ainsi, à partie de la liste
[0,1,0,0,1]
si l’élément militant est l’élément no3(d’opinion 0) et que son voisin (choisi au hasard) est
l’élément no4, celui-ci prend l’opinion 0(s’il avait déjà eu l’opinion 0, il n’en aurait pas changé),
ce qui donnera la liste :
[0,1,0,0,0]
3.3 Le simulateur (2 points)
On peut montrer qu’au bout d’un temps fini, toute la population simulée aura la même
opinion.
Écrire une fonction simule(n) qui étant donné un nombre n, génère une liste aléatoire lst de
nopinions (0ou 1), puis applique à cette liste la fonction modif(lst) tant que les éléments de
la liste n’ont pas tous la même valeur, et enfin retourne le nombre d’appels à modif(lst).
— Fin de l’énoncé —
–3/3–
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !