Vous êtes sur la page 1sur 7

Institut Supérieur des Etudes Technologiques de SOUSSE

Département Informatique
Année Universitaire : 2020/2021 Semestre 2

Préparation certification Python2


Exercices de révision corrigés

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"

# création d'un dictionnaire vide qui va contenir les résultats


d = dict({})

# parcourir les caractères de la chaine


for x in s:
# ajout de chaque caractère avec son nombre d'occurrences
d[x] = s.count(x)
print(d)
# Affiche : {'l': 1, 'a': 2, 'n': 1, 'g': 2, 'e': 1}

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:

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 ,
"etudiant_19" : 9 , "etudiant_20" : 17}

Ecrire un programme Python qui partitionne  ce dictionnaire en deux sous


dictionnaires:

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 ,}

# on crée deux dictionnaires vides un pour les admis et l'autre


pour les non admis
etudiantAdmis = dict({})
etudiantNonAdmis = dict({})

# on parcoure la liste des clés et des valeurs simultanément:


# si la clé est < 10 l'étudiant sera ajouté au dictionnaire des
étudiants non admis
# si non l'étudiant sera ajouté au dictionnaire des étudiants
admis
for key , valeur in etudiants.items():
if(valeur < 10):
etudiantNonAdmis [key] = valeur
else:
etudiantAdmis [key] = valeur

print("Les etudiants admis : " , etudiantAdmis)


print("Les etudiants non admis : " , etudiantNonAdmis)

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

Ecrire un programme permettant la division entre deux entiers en gérant


l’exception de la division par 0 par deux méthodes.

Corrigé

Méthode1 :

def division(a, b):


    try:
        d = a//b
    except ZeroDivisionError:
        print("Division par zero ! ")
    else:
        print("Résultat : ", d)

Méthode2 :

a = int(input("Tapez la valeur de a : "))


b = int(input("Tapez la valeur de b : "))
try:
print("Le quotient de a par b est : a/b = " , a/b)
except:
print("Veuillez choisir une valeur b non nulle !")

Rappel des exceptions fréquentes:


– TypeError : mauvais type de données
– ValueError : mauvaise valeur

6
– ZeroDivisionError : division par 0
– SyntaxError : erreur de syntaxe
– KeyboardInterrupt : arrêt manuel du programme (contrôleC)

Vous aimerez peut-être aussi