TP1 Mergé les doublons
This commit is contained in:
parent
35d2c56834
commit
2a9aff7fbd
199
S2/TP1/tp1.py
199
S2/TP1/tp1.py
|
@ -12,17 +12,16 @@ def question(numero):
|
||||||
|
|
||||||
question(1)
|
question(1)
|
||||||
|
|
||||||
assert(type(l_etudiants) == type([]))
|
test1 = type(l_etudiants) is list
|
||||||
|
|
||||||
for i in l_etudiants:
|
for i in l_etudiants:
|
||||||
assert(type(i) == type(tuple()))
|
if not (type(i) is tuple and len(i) == 5 and type(i[4]) is int):
|
||||||
assert(len(i) == 5)
|
test1 = False
|
||||||
|
for j in range(4):
|
||||||
|
if not type(i[j]) is str:
|
||||||
|
test1 = False
|
||||||
|
|
||||||
for j in i:
|
|
||||||
assert(type(i[0]) == type(i[1]) == type(i[2]) == type(i[3]) == type(""))
|
|
||||||
assert(type(i[4]) == type(1))
|
|
||||||
|
|
||||||
print("La liste l_etudiant est correcte")
|
print('Le test a retourné', test1)
|
||||||
|
|
||||||
|
|
||||||
question(2)
|
question(2)
|
||||||
|
@ -32,150 +31,11 @@ print("Il y a ", len(l_etudiants), " étudiants dans la liste")
|
||||||
|
|
||||||
question(3)
|
question(3)
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
|
||||||
print(l_etudiants[11501230%len(l_etudiants)])
|
print(l_etudiants[11501230%len(l_etudiants)])
|
||||||
|
|
||||||
|
|
||||||
question(4)
|
|
||||||
|
|
||||||
formations = ["LICAM", "MASS", "PEIP", "SESI"]
|
|
||||||
erreur = False
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
if not i[3] in formations:
|
|
||||||
print("L'étudiant ", i[1], " ", i[2], " n'est pas dans une des quatre formations.")
|
|
||||||
erreur = True
|
|
||||||
|
|
||||||
if not erreur:
|
|
||||||
print("Tous les étudiants sont dans une formation.")
|
|
||||||
|
|
||||||
|
|
||||||
question(5)
|
|
||||||
|
|
||||||
|
|
||||||
def nbre_prenoms(prenom):
|
|
||||||
""" str -> int, renvoie le nombre d'étudiants qui ont prenom comme prénom.
|
|
||||||
CU: prenom est un str
|
|
||||||
"""
|
|
||||||
|
|
||||||
assert(type(prenom) == type(""))
|
|
||||||
|
|
||||||
prenomARechercher = prenom.upper()
|
|
||||||
|
|
||||||
nb=0
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
if i[2] == prenomARechercher:
|
|
||||||
nb += 1
|
|
||||||
|
|
||||||
return nb
|
|
||||||
|
|
||||||
print("Il y a ", nbre_prenoms("Alexandre"), " étudiants qui s'appellent Alexandre")
|
|
||||||
print("Il y a ", nbre_prenoms("Camille"), " étudiantes qui s'appellent Camille")
|
|
||||||
|
|
||||||
|
|
||||||
question(6)
|
|
||||||
|
|
||||||
prenomsUniques = set()
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
prenomsUniques.add(i[2])
|
|
||||||
|
|
||||||
|
|
||||||
print("Il y a ", len(prenomsUniques), " prénoms différents")
|
|
||||||
|
|
||||||
|
|
||||||
question(7)
|
|
||||||
|
|
||||||
lPrenoms=[i[2] for i in l_etudiants]
|
|
||||||
|
|
||||||
freq = ["", 0]
|
|
||||||
|
|
||||||
for i in prenomsUniques:
|
|
||||||
tmp = lPrenoms.count(i)
|
|
||||||
|
|
||||||
if tmp > freq[1]:
|
|
||||||
freq = i, tmp
|
|
||||||
|
|
||||||
print("Le prénom le plus courant est ", freq[0], " avec ", freq[1], " personnes portant ce prénom.")
|
|
||||||
|
|
||||||
|
|
||||||
question(8)
|
|
||||||
|
|
||||||
idUniques = set()
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
idUniques.add(i[0])
|
|
||||||
|
|
||||||
if len(idUniques) != len(l_etudiants):
|
|
||||||
print("Erreur, il existe au moins un id qui n'est pas unique")
|
|
||||||
else:
|
|
||||||
print("Tous les id sont uniques")
|
|
||||||
|
|
||||||
|
|
||||||
question(9)
|
|
||||||
|
|
||||||
nbLICAM = nbMASS = nbPEIP = nbSESI = 0
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
if i[3] == "LICAM":
|
|
||||||
nbLICAM += 1
|
|
||||||
elif i[3] == "MASS":
|
|
||||||
nbMASS += 1
|
|
||||||
elif i[3] == "PEIP":
|
|
||||||
nbPEIP += 1
|
|
||||||
else:
|
|
||||||
nbSESI += 1
|
|
||||||
|
|
||||||
print("Il y a ", nbLICAM, " étudiants en LICAM ", nbMASS, " en MASS ", nbPEIP, " en PEIP et ", nbSESI, " en SESI.")
|
|
||||||
|
|
||||||
# Question 10
|
|
||||||
|
|
||||||
question(10)
|
|
||||||
|
|
||||||
def liste_formation(form):
|
|
||||||
""" str -> liste de quadruplets, renvoie la liste des étudiants dans la formation passée en paramètre
|
|
||||||
CU: form est un str qui vaut: SESI, LICAM, MASS ou PEIP
|
|
||||||
"""
|
|
||||||
|
|
||||||
assert(type(form) == type(""))
|
|
||||||
assert(form == "SESI" or form == "PEIP" or form == "LICAM" or form == "MASS")
|
|
||||||
|
|
||||||
ret = list()
|
|
||||||
|
|
||||||
for i in l_etudiants:
|
|
||||||
if i[3] == form:
|
|
||||||
ret.append((i[0], i[1], i[2], i[4]))
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
print("Liste des PEIP:\n", liste_formation("PEIP"))
|
|
||||||
|
|
||||||
# Geoffrey
|
|
||||||
|
|
||||||
question(1)
|
|
||||||
|
|
||||||
test = type(l_etudiants) is list
|
|
||||||
for i in l_etudiants:
|
|
||||||
if not (type(i) is tuple and len(i) == 5 and type(i[4]) is int):
|
|
||||||
test = False
|
|
||||||
for j in range(4):
|
|
||||||
if not type(i[j]) is str:
|
|
||||||
test = False
|
|
||||||
|
|
||||||
|
|
||||||
print('Le test a retourné', test)
|
|
||||||
|
|
||||||
question(2)
|
|
||||||
|
|
||||||
print('l_etudiants', 'contient', len(l_etudiants), 'étudiants')
|
|
||||||
|
|
||||||
question(3)
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
|
|
||||||
print('L\'indice de ma fiche étudiant est forcément inférieur au nombre de fiche, diviser ce premier nombre par ce deuxième revient à garder le premier')
|
|
||||||
|
|
||||||
question(4)
|
question(4)
|
||||||
|
|
||||||
test4 = True
|
test4 = True
|
||||||
|
@ -185,32 +45,26 @@ for i in l_etudiants:
|
||||||
|
|
||||||
print('Le test a retourné', test4)
|
print('Le test a retourné', test4)
|
||||||
|
|
||||||
|
|
||||||
question(5)
|
question(5)
|
||||||
|
|
||||||
def nbre_prenoms(prenom):
|
def nbre_prenoms(prenom):
|
||||||
"""
|
"""
|
||||||
str → int
|
str → int
|
||||||
Renvoie le nombre d’étudiants dont le prénom est passé en paramètre
|
Renvoie le nombre d’étudiants dont le prénom est passé en paramètre
|
||||||
|
CU: prenom est un str
|
||||||
"""
|
"""
|
||||||
## n = 0
|
assert(type(prenom) == str)
|
||||||
## for i in l_etudiants:
|
|
||||||
## if i[2] == prenom:
|
|
||||||
## n += 1
|
|
||||||
## return n
|
|
||||||
return [i[2] for i in l_etudiants].count(prenom)
|
|
||||||
|
|
||||||
nbreAlexandre = nbre_prenoms('Alexandre')
|
return [i[2] for i in l_etudiants].count(prenom.upper())
|
||||||
terminaisonAlexandre = 's' if nbreAlexandre > 1 else ''
|
|
||||||
print('Il y a', nbreAlexandre, 'étudiant' + terminaisonAlexandre, 'nommé' + terminaisonAlexandre, 'Alexandre')
|
print("Il y a", nbre_prenoms("Alexandre"), "étudiants qui s'appellent Alexandre")
|
||||||
|
print("Il y a", nbre_prenoms("Camille"), "étudiantes qui s'appellent Camille")
|
||||||
|
|
||||||
nbreCamille = nbre_prenoms('Camille')
|
|
||||||
terminaisonCamille = 'e' + 's' if nbreCamille > 1 else ''
|
|
||||||
print('Il y a', nbreCamille, 'étudiant' + terminaisonCamille, 'nommé' + terminaisonCamille, 'Camille')
|
|
||||||
|
|
||||||
question(6)
|
question(6)
|
||||||
|
|
||||||
listePrenoms = [i[2] for i in l_etudiants]
|
ensemblePrenoms = set([i[2] for i in l_etudiants])
|
||||||
ensemblePrenoms = set(listePrenoms)
|
|
||||||
|
|
||||||
print('Il y a', len(ensemblePrenoms), 'prénoms différents parmi tous les étudiants')
|
print('Il y a', len(ensemblePrenoms), 'prénoms différents parmi tous les étudiants')
|
||||||
|
|
||||||
|
@ -229,21 +83,19 @@ for i in nbresPrenoms:
|
||||||
|
|
||||||
terminaison = 's' if len(prenomsPlusFrequent) > 1 else ''
|
terminaison = 's' if len(prenomsPlusFrequent) > 1 else ''
|
||||||
print('Le'+terminaison+' prénom le'+terminaison+' plus fréquent'+terminaison, 'sont' if len(prenomsPlusFrequent) > 1 else 'est', ', '.join(prenomsPlusFrequent))
|
print('Le'+terminaison+' prénom le'+terminaison+' plus fréquent'+terminaison, 'sont' if len(prenomsPlusFrequent) > 1 else 'est', ', '.join(prenomsPlusFrequent))
|
||||||
|
|
||||||
question(8)
|
question(8)
|
||||||
|
|
||||||
ids = set()
|
idUniques = set(i[0] for i in l_etudiants)
|
||||||
|
|
||||||
test8 = True
|
test8 = len(idUniques) != len(l_etudiants)
|
||||||
|
|
||||||
for i in l_etudiants:
|
print('Le test a retourné', test8)
|
||||||
if i[0] in ids:
|
|
||||||
test = False
|
|
||||||
else:
|
|
||||||
ids.add(i[0])
|
|
||||||
|
|
||||||
question(9)
|
question(9)
|
||||||
|
|
||||||
|
# TODO On peut tout faire en une ligne
|
||||||
|
|
||||||
parcours = dict()
|
parcours = dict()
|
||||||
|
|
||||||
for i in l_etudiants:
|
for i in l_etudiants:
|
||||||
|
@ -257,8 +109,9 @@ question(10)
|
||||||
|
|
||||||
def liste_formation(formation):
|
def liste_formation(formation):
|
||||||
"""
|
"""
|
||||||
...
|
str → list[tuple(str, str, str, int)]
|
||||||
|
Renvoie la liste des quadruplets (id, nom, prenom, gpe) correspondants à tous les étudiants appartenant à la formation donnée
|
||||||
|
CU : formation est une formation valide
|
||||||
"""
|
"""
|
||||||
|
assert(formation in parcours), "La formation donnée n'est pas valide"
|
||||||
return list(i[0:2]+(i[4],) for i in l_etudiants if i[3] == formation)
|
return list(i[0:2]+(i[4],) for i in l_etudiants if i[3] == formation)
|
||||||
|
|
||||||
print(liste_formation('PEIP'))
|
|
||||||
|
|
Reference in a new issue