Vous êtes sur la page 1sur 4

4IIR : Outils de développement - Framework Django Pr. C.

AZROUMAHLI
TP 2 : Eléments du langage Python – Fichiers, modules et fonctions – Correction

Exercice 1 : Les fichiers


Le fichier « notes.txt » (le fichier sera distribué durant la séance) contient les notes obtenues par des étudiants pour le cours
de Django. Chaque ligne du fichier ne contient qu’une note.
1.1. Créez un script Python qui lit chaque ligne de ce fichier, extrait les notes sous forme de float et les stocke dans une
liste.
1.2. Calculer et afficher la moyenne des notes avec deux décimales.
1.3. Le script réécrira ensuite les notes dans le fichier « notes2.txt » avec une note par ligne suivie de « recalé » si la note est
inférieure à 10 et « admis » si la note est supérieure ou égale à 10. Toutes les notes seront écrites avec une décimale.
notes=[]

# extrait les notes sous forme de float et les stocke dans une liste
with open('notes.txt','r') as fichier:
for note in fichier :
notes.append(float(note))

# Calculer et afficher la moyenne des notes avec deux décimales.


moy=sum(notes)/len(notes)
print(f'la moyenne est {moy:.2f}')

# réécrir les notes dans le fichier « notes2.txt » avec une note par
# ligne suivie de « recalé » si la note est inférieure à 10 et « admis » si la note est
supérieure ou égale à 10.
with open('notes2.txt','w') as fichier:
for note in notes : #lire les notes a partir de la liste
if note>10:
fichier.write(f'{note}: recale \n')
else:
fichier.write(f'{note}: admis \n')
Exercice 2 : Les fonctions
Les fonctions crée dans cet exercice doivent avoir une documentation détaillée sur la sortie et les arguments utilisé.
2.1. Créez une fonction est_premier() qui prend comme argument un nombre entier positif n (supérieur à 2) et qui
renvoie le booléen True si n est premier et False si n n’est pas premier. A l’aide de cette fonction, déterminez tous
les nombres premiers de 2 à 100.
# La fonction est_premier()
def est_premier(n):
"""Vérifier si un nombre est premier

Args:
n (integer): Un nombre entier positif

Returns:

Page 1 sur 4
4IIR : Outils de développement - Framework Django Pr. C. AZROUMAHLI
boolean: True si n est premier et False si n n’est pas premier
"""
for a in list(range(2,int(n/2))):
if n%a==0:
return True
return False

# Utilisation de la fonction
for n in list(range(2,101)):
if est_premier(n):
print(f'{n} n\'est pas premier')
else:
print(f'{n} est premier')
2.2. Créez une fonction gen_pyramide() à laquelle vous passez un nombre entier N et qui renvoie une pyramide de N
lignes sous forme de chaîne de caractères. Le programme principal demandera à l’utilisateur le nombre de lignes
souhaitées et affichera la pyramide à l’écran.
*
***
*****
*******
*********
***********
# La fonction gen_pyramide()
def gen_pyramide(N) :
for i in range(N):
print(' '*(N-i-1) + '*'*(2*i+1))

# utilisation de la fonction
gen_pyramide(8)
Exercice 3 : Containers, dictionnaires, tuples et sets
3.1. Créez une fonction compte_mots_2_lettres() qui prend comme argument une séquence sous la forme d’une
chaîne de caractères et qui renvoie tous les mots de 2 lettres qui existent dans la séquence sous la forme d’un
dictionnaire.
Par exemple pour la séquence « ACCTAGCCCTA », le dictionnaire renvoyée serait : {'AC': 1, 'CC': 3, 'CT': 2,
'TA': 2, 'AG': 1,'GC': 1}.
# La fonction compte_mots_2_lettres()
def compte_mots_2_lettres(sequence) :
"""Renvoie tous les mots de 2 lettres qui existent dans la séquence sous la forme d’un
dictionnaire

Args:
sequence (string): séquence sous la forme d’une chaîne de caractères

Returns:
dict: Les mots de 2 lettres avec le nombre d'occurence de chaque mots
Page 2 sur 4
4IIR : Outils de développement - Framework Django Pr. C. AZROUMAHLI
"""
list_2_lettre=[sequence[i]+sequence[i+1] for i in range(len(sequence)-1)]
dict={}
for l in list_2_lettre:
dict[l]=sequence.count(l) #nombre d'occurence
return dict

# Utilisation de la fonction
sequence="ACCTAGCCCTA"
print(compte_mots_2_lettres(sequence))
3.2. Créez une fonction verif_sets_common() pour vérifier si deux set n'ont aucun élément en commun.
#la fonction verif_sets_common()
def verif_sets_common(a,b):
"""Vérifier si deux set n'ont aucun élément en commun

Args:
a (set): la premiere set a verifier
b (set): la premiere set a verifier

Returns:
bool: True si il y un element en commun, False si non
"""
if len(a|b)==len(a)+len(b):
return False
else :
return True

# Utilisation de la fonction verif_sets_common()


s1={0, 1, 2, 3, 4, 5}
s2={8,9}
if verif_sets_common(s1,s2):
print('il y a un element en commun ')
else:
print('il y a aucun element en commun ')
3.3. Créez une fonction verif_exist_tuple() vérifier si un élément existe dans un tuple.
#la fonction verif_exist_tuple()
def verif_exist_tuple(t,e):
"""vérifier si un élément existe dans un tuple.

Args:
t (tuple): le tuple a explorer
e (char/int/string): la valeur a chercher

Returns:
bool: True si e existe dans t, False si non
"""

Page 3 sur 4
4IIR : Outils de développement - Framework Django Pr. C. AZROUMAHLI
if e in t:
return True
else:
return False

# Utilisation de la fonction
print(verif_exist_tuple(tuple("ABCDEF"),'H'))
3.4. Créez une fonction plus_commun() pour trouver l'élément le plus commun d'une liste donnée (utiliser la collection
Counter et la méthode most_common())
#la fonction plus_commun()
def plus_commun(liste):
c=collections.Counter(liste)
return c.most_common()

# Utilisation de la fonction
print(plus_commun(list("12584khjlmm666dfrgaa")))

Page 4 sur 4

Vous aimerez peut-être aussi