Académique Documents
Professionnel Documents
Culture Documents
Département Informatique
Année Universitaire : 2020/2021 Semestre 2
Exercice 1
Créez une fonction Python, appelée nombreDivisibles, qui s’applique à une
liste de nombres et un entier n, et qui renvoie le nombre d’éléments de la liste
qui sont divisible par n.
Corrigé
# -*- coding: UTF-8 -*-
def nombreDivisibles(l,n):
i = 0
for k in l:
if( k%n == 0):
i = i + 1
return i
l = [12, 4, 7, 9,11]
n = 3
print("Le nombre d'élément de l qui sont divisibles par ", n, " est
: ",nombreDivisibles(l,n))
Exercice 2
Écrire un programme en Python qui demande à l’utilisateur de saisir une chaine
de caractère, et de lui renvoyer un dictionnaire dont les clés sont les caractères de
la chaine saisie et les valeurs sont les nombres d’occurrences des caractères dans
la chaine. Exemple pour la chaine s = “langage”, le programme renvoie le
dictionnaire: d = {'l':1 , 'a':2 , 'n':1 , 'g':2 , 'e':1}
Corrigé
# coding: utf-8
1
s = "langage"
Exercice 3
On considère le dictionnaire suivant dont les clés sont les noms des élèves et les
valeurs des clés sont les moyennes générales obtenues en passant l’examen final:
1. etudiantAdmis dont les clés sont les étudiants admis et les valeurs des clés
sont les moyennes obtenues (moyennes supérieures ou égales à 10 ).
2. etudiantNonAdmis dont les clés sont les étudiants non admis et les valeurs
des clés sont les moyennes obtenues (moyenne inférieur ou égale à 10).
Corrigé
# coding: utf-8
etudiants = {"etudiant_1" : 13 , "etudiant_2" : 17 , "etudiant_3"
: 9 , "etudiant_4" : 15 , "etudiant_5" : 8 , "etudiant_6" : 14 ,
"etudiant_7" : 16 , "etudiant_8" : 12 , "etudiant_9" : 13 ,
"etudiant_10" : 15 , "etudiant_11" : 14 , "etudiant_112" : 9 ,
"etudiant_13" : 10, "etudiant_14" : 12 , "etudiant_15" : 13 ,
"etudiant_16" : 7 , "etudiant_17" : 12 , "etudiant_18" : 15 ,
2
"etudiant_19" : 9 , "etudiant_20" : 17 ,}
Exercice 4
Soit un fichier typé intitulé concours.txt qui comporte les enregistrements relatifs aux
candidats d’un concours. Chaque enregistrement est composé de : NCIN, NOM, PRENOM,
AGE, DECISION : (type contenant les identificateurs suivants : admis, refusé, ajourné), et
séparé par point virgule (;).
Travail demandé :
1. Définir la fonction saisir() qui permet de remplir les données relatives aux candidats dans le
fichier concours.txt.
2. Définir la fonction admis() qui permet créer le fichier admis.txt comportant les données
relatives aux candidat admis.
3. Afin de sélectionner en priorité les candidats admis et âgés moins de 30 ans, créer la
fonction attente() qui produira à partir du fichier admis.txt, un nouveau fichier intitulé
attente.txt comportant les données relatives aux candidats admis et âgés plus que 30 ans. Une
ligne du fichier attente.txt comprend le NCIN, le NOM et PRENOM d’un candidat séparés
par point virgule (;).
4. Définir la fonction statistiques(dec) qui permet de retourner le pourcentage des candidats
pour la décision dec (admis, refusé et ajourné).
3
Exemple :Le pourcentage des candidats admis = (Nombre des candidats admis / Nombre des
candidats) *100
5. Définir la fonction supprimer() qui supprimera du fichier « admis.txt » les candidat âgés
plus que 30
N.B : On suppose que les fichiers seront mis à la racine du lecteur C.
Corrigé
def saisir():
new = "O" # O -> oui ; N -> non
fichier = open("concours.txt", "a")
decision = {"a": "admis(e)", "r": "refuse(e)", "aj":
"ajourne(e)"}
while new == "O":
cin = input("Saisir le Numero CIN : ")
nom = input("Saisir le Nom : ")
prenom = input("Saisir le prenom : ")
age = input("saisir l age ")
dec = input("saisir la decision a(admis(e))
r(refuse(e))
aj(ajourne(e)): ")
ligne = cin+";"+nom+";"+prenom+";"+age+";"+decision[dec]+"\
n"
fichier.write(ligne)
new = input("Saisir un nouveau candidat, (O / N) ?")
fichier.close()
def admis():
fichier = open("concours.txt")
dest = open("admis.txt", "a")
for ligne in fichier:
L = ligne.split(";")
if L[4].strip() == "admis(e)":
dest.write(ligne)
fichier.close()
dest.close()
4
def attente():
fichier = open("admis.txt")
dest = open("attente.txt", "a")
for ligne in fichier:
L = ligne.split(";")
if int(L[3]) >= 30:
enreg = L[0]+";"+L[1]+";"+L[2]+"\n"
dest.write(enreg)
fichier.close()
dest.close()
def statistiques(dec):
fichier = open("concours.txt")
L = fichier.readlines()
fichier.close()
L1 = [] # candidats admis
L2 = [] # candidats refuses
L3 = [] # candidats ajournes
for ligne in L:
L = ligne.split(";")
if L[4].strip() == "admis(e)":
L1.append(ligne)
elif L[4].strip() == "refuse(e)":
L2.append(ligne)
else:
L3.append(ligne)
if dec == "admis":
return (len(L1)/len(L))*100
elif dec == "refuse":
return (len(L2)/len(L))*100
else:
return (len(L3)/len(L))*100
def supprimer():
fichier = open("admis.txt")
candidat = [] # contient les candidats restants
5
for ligne in fichier:
L = ligne.split(";")
if int(L[3]) < 30:
candidat.append(ligne)
fichier.close()
# réécrire la nouvelle liste
fichier = open("admis.txt", "w")
fichier.writelines(candidat)
fichier.close()
Exercice 5
Corrigé
Méthode1 :
Méthode2 :
6
– ZeroDivisionError : division par 0
– SyntaxError : erreur de syntaxe
– KeyboardInterrupt : arrêt manuel du programme (contrôleC)