Vous êtes sur la page 1sur 5

Université de Tunis el Manar Année Universitaire 2021 / 2022

FSEGT

Examen
Module : Lang. de Prog. Evol-BI Session : Janvier 2022
Niveau  : 3ème BI Documents : Non Autorisés

NB : Les deux exercices sont indépendants

Exercice 1:
Soit un dictionnaire Classe permettant de mémoriser les noms des étudiants d'une classe,
leur âge et leur moyenne. Le nom des étudiants servira de clé et les valeurs seront
constituées de tuples (âge, moyenne).
1. Ecrire un programme Python qui permet de remplir le dictionnaire Classe avec les
informations de n étudiants.

2. Ecrire un programme Python qui permet de consulter les informations relatives à un


étudiant donné. Le résultat de la consultation devra être une ligne de texte de la forme
suivante: Nom: Ben Salah Mohamed – Age:19 – Moyenne:12.1.

Si le nom n'existe pas, le programme devra afficher: "Etudiant non reconnu"

3. Ecrire un programme Python qui permet de déterminer le nombre d'étudiants dont l'âge
ne dépasse pas 20 ans et ayant une moyenne supérieure ou égale à10.

Correction
Classe = {}

while True :
n = int(input("Saisir le nombre d'étudiants dans la classe : "))

if n > 0 :
break

for i in range(n) :
print("Saisir le nom de l'étudiant n° : ",i+1)
Nom = input()

print("Saisir son age : ")


while True :
Age = int(input())
if Age >= 19 :
break
else :
print("L'âge n'est pas conforme.. Il doit être supérieur ou égal à 19.
Veuillez le saisir une autre fois : ")
Page 1 / 5
print("Saisir sa moyenne : ")
while True :
Moyenne = float(input())
if Moyenne >= 0 and Moyenne <= 20 :
break
else :
print("La moyenne n'est pas conforme.. Elle doit être comprise
entre 0 et 20. Veuillez la saisir une autre fois : ")

Classe[Nom] = (Age,Moyenne)
# Classe.update( { Nom : (Age,Moyenne) } )

print(Classe)

# 2.

Nom = input("Saisir le nom de l'étudiant ")

if Classe.get(Nom) == None :
print("Etudiant non reconnu")

else :

Age_Moy = Classe[Nom]
Age = Age_Moy[0]
Moyenne = Age_Moy[1]
print("Nom:",Nom," - Age:",Age," - Moyenne:",Moyenne)

# ou bien
# print("Nom:",Nom," - Age:",Classe[Nom][0]," -
Moyenne:",Classe[Nom][1])

# 3.

Nb_Etud = 0

for elt in Classe.values() :

Age = elt[0]
Moyenne = elt[1]
Page 2 / 5
if Age <= 20 and Moyenne >= 10 :
Nb_Etud += 1

print("Il y a", Nb_Etud,"étudiants dont l'âge ne dépasse pas 20 ans et


ayant une moyenne supérieure ou égale à 10")

Exercice 2:

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 de 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é). 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()
Page 3 / 5
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()
 # strip(): Supprime tous les espaces de début et de fin (ou bien le
#caractère spécifié entre parenthèses)
 
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
    for ligne in fichier:
        L = ligne.split(";")
        if int(L[3]) < 30:
            candidat.append(ligne)
    fichier.close()
    # reecrire la nouvelle liste
    fichier = open("admis.txt", "w")
Page 4 / 5
    fichier.writelines(candidat)
    fichier.close()

Bon travail

Page 5 / 5

Vous aimerez peut-être aussi