Polytech’Nice-Sophia Ann´ee 2014-2015
Peip1 – Programmation Imp´erative Vendredi 23 Janvier
Evaluation finale
Aucun document autoris´e.
Important : Les exercices sont ind´ependants les uns des autres. Dans un mˆeme exercice, si on vous demande d’´ecrire
une fonction puis de l’utiliser, vous pouvez utiliser la fonction mˆeme si vous n’avez pas r´eussi `a l’´ecrire. Quand on vous
donne une consigne (par exemple, utiliser une boucle for), si vous ne la respectez pas, vous aurez 0 `a la question.
PARTIE 1 : turtle et chaines de caract` eres - 8 points - Dur´ ee : 30mn.
Nom : Pr´enom : Groupe :
1 Soit la proc´edure Python3 suivante :
from turtle import *
def polygone(nbCote,cote,x,y):
up() goto(x,y) down()
angle=360/nbCote i=0
while i<nbCote:
forward(cote) left(angle) i=i+1
Ecrire un programme qui utilise cette proc´edure pour dessiner une ligne de carr´es et triangles en alternance. La ligne
commence au point (−350,300). Le programme demande `a l’utilisateur le nombre total de figures et la longueur des
cˆot´es. Remarque : Vous n’avez pas `a vous pr´eoccuper de la sortie de la fenˆetre python. Voici un exemple pour 5 figures de longueur 100.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Soit le programme Python3 suivant :
mot = input("un mot: ") for c in mot :
print(c,"A",sep="%",end="|")
Quel est le r´esultat d’ex´ecution quand mot vaut ”oui” ?
. . . . . . . .
R´e-´ecrire ce programme en utilisant une bouclewhile.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Parenth´esageOn s’int´eresse au parenth´esage d’un texte en comptant les parenth`eses ouvrantes et fermantes c’est
`
a dire ( et ).
1. En utilisant une boucle for, ´ecrire une proc´edure “verifieParenthese(t)” qui compte les parenth`eses ouvrantes et
fermantes det, qui v´erifie qu’il y a bien autant de parenth`eses ouvrantes que de parenth`eses fermantes et affiche
une message en cons´equence.
Par exemple,verifieParenthese(“((a)(b))”)affiche :
Il y a autant de ( que de )
et verifieParenthese(“((a)))(b)”)affiche : Il y a trop de )
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. On voudrait maintenant s’arrˆeter d`es qu’on a ferm´e trop de parenth`eses puisqu’on est sˆur que le texte est
mal parenth´es´e. Ecrire une deuxi`eme version de “verifieParenthese(t)” qui utilise une boucle while et qui se
comporte comme la proc´edure de la question pr´ec´edente, sauf quand il y a trop de parenth`eses fermantes.
Dans ce cas, la proc´edure s’arrˆete d`es qu’il y a trop de “)” et pr´ecise l’indice de l’erreur. Par exemple pour
verifieParenthese(“((a)))(b)”)cela affiche :
il a trop de ), arret immediat a l’indice 5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
Brouillon
PARTIE 2 : listes - 12 points - Dur´ ee : 45mn.
Nom : Pr´enom : Groupe :
4 Marathon de NiceUn coureur du marathon est repr´esent´e par une liste de la forme :[nom,pr´enom,sexe,temps].
Pour simplifier, on suppose que la performance en temps est donn´ee en secondes est que le sexe est soit “F” soit “M”.
Les performances des coureurs `a un marathon sont stock´ees dans une liste de coureurs, chaque coureur ´etant lui-mˆeme
repr´esent´e par une liste de la forme ci-dessus. On appellera une telle liste un “r´esultat au marathon”. Voici un exemple :
marathonNice = [["Larue","Arlette","F",4600],["Moore","Roger","M",3700],["Lapierre","Claude","M",7890], ["Dupont","Antoine","M",4000],["Lafronte","M´elanie","F",5345],["Patine","Val´erie","F",3712],
["R´egent","R´egis","M",4356]]
a) Ecrire la fonction pourcentage(p,n) qui renvoie le pourcentage (un nombre d´ecimal) de p par rapport `a n. Par
exemple, sipest 400 etnest 1000 cela retourne 40, sipest 4 etnest 18 cela retourne 22.22222222222222.
. . . . . . . . . . . . . . . . . . . . . . . .
b) Ecrire la fonctionnbFemmes(l) qui ´etant donn´e une listelde r´esultats au marathon renvoie le nombre de femmes
dans cette liste.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
c) Ecrire la fonctionpremier(l)qui ´etant donn´e une listel(non vide) de r´esultats au marathon renvoie le coureur (ou
la coureuse) qui a gagn´e le marathon.Aide :l ´etant une liste de listes, la fonctionmindeP ython3 ne s’applique
pas, vous devez donc faire une boucle.
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
d) Ecrire la fonctionlesPremiers(n,l)qui renvoie une liste contenant lesnpremiers gagnants de la listel. Par exemple,
avec la valeur de la variablemarathonN icepr´ec´edente, l’appellesP remiers(4, marathonN ice) renvoie :
[[’Moore’, ’Roger’, ’M’, 3700], [’Patine’, ’Val´erie’, ’F’, 3712], [’Dupont’, ’Antoine’, ’M’, 4000], [’R´egent’, ’R´egis’, ’M’, 4356]]
Si nest plus grand que la longueur del, la fonction lesP remiersrenvoie la liste vide [].Aide : l ´etant une liste
de listes, la fonctionsortdeP ython3 ne s’applique pas, mais vous pouvez utiliser la fonctionpremier(l) que vous
avez d´efinie et leremovedes listes.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e) Ecrire un programme qui utilise les fonctions pr´ec´edentes pour afficher les 4 premiers de la liste marathonN ice
ainsi que le pourcentage de femmes et d’hommes parmi les 4 premiers. Voici le r´esultat d’ex´ecution :
Les 4 premiers sont : [[’Moore’, ’Roger’, ’M’, 3700], [’Patine’, ’Val´erie’, ’F’, 3712], [’Dupont’, ’Antoine’, ’M’, 4000], [’R´egent’, ’R´egis’, ’M’, 4356]]
Pourcentage de femmes parmi les quatres premiers : 25.0 % Pourcentage d’hommes parmi les quatres premiers : 75.0 %
Nota : pour simplifier, on suppose que la variable marathonN ice a d´ej`a ´et´e inialis´ee avec la valeur de l’´enonc´e,
inutile de recopier l’affectation.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Brouillon