Vous êtes sur la page 1sur 10

UFR MI Licence 2

TD ET TP DE PROGRAMMATION PYTHON
Année : 2020- 2021

Exercice 1 : structures de données et structures de contrôle


a) Un programmeur écrit un algorithme relatif à la fonction factoriel en deux
versions en utilisant le pour et le tant que. Réaliser ces deux versions de la fonction
factoriel en Python.
def factoriel_for(n):
    for i in range(n - 1, 0, -1):
        n = n * i
    return n

def factoriel_while(n):
    i = n - 1
    while(i >= 1):
        n = n * i
        i = i - 1
    return n

# Si le script est executer en tant que programme principal
if __name__ == "__main__":
    print("Programme qui calcul le factoriel du nombre saisi !")
    nbr = int(input("Saisissez le nombre : "))
    n1 = factoriel_for(nbr)
    n2 = factoriel_while(nbr)
    print("\nLe factoriel du nombre en utilisant la boucle for est :\n", nbr, "!=", n1
)
    print("Le factoriel du nombre en utilisant la boucle while est :\n", nbr,"!=", n2)

b) Écrire un programme Python permettant de calculer la combinaison d’un nombre p


dans un nombre n en utilisant une fonction factoriel.
from factoriel import factoriel_while as fac 

def combinaison(_p, _n):
    comb = fac(_n) / (fac(_p) * fac(_n - _p))
    return comb

print("Programme qui calcul la combinaison de p nombres choisi parmis n nombres !"
)
while True:
    p = int(input("Entrez la valeur de p : "))
    n = int(input("Entrez la valeur de n : "))

    if p <= n:
        resultat = combinaison(p, n)

Abidjan, le 10/04/2023 1
        print("La combinaison de", p,"dans", n,"est :", resultat)
        break
    else:
        print("Combinaison impossible ! p doit être inférieur a n...\n")

c) On suppose qu’il existe une relation de récurrence pour le calcul la combinaison d’un
nombre p dans un nombre n en vous appuyant sur le triangle de pascal. En vous y
inspirant écrire une fonction combinaison récursive.
import sys
# pour augmenter le nombre de recursion maximal que le système peut atteindre 
sys.setrecursionlimit(10**9)

def combinaison(_p, _n):
    if (_p == _n or _p == 0):
        return 1
    elif (_p == 1):
        return _n
    else:
        comb = combinaison(_p - 1, _n - 1) + combinaison(_p, _n - 1)
        return comb

print("Programme qui fait une combinaison de p éléments choisi parmis n au moyen\
n\
de la formule du triangle de pascal")
while True:
    p = int(input("Entrez la valeur de p : "))
    n = int(input("Entrez la valeur de n : "))

    if p <= n:
        resultat = combinaison(p, n)
        print("La combinaison de", p,"dans", n,"est :", resultat)
        break
    else:
        print("Combinaison impossible ! p doit être inférieur a n...\n")

Exercice 2 : structures de contrôle, fonction, tuples, listes, module


a) Ecrire un programme en Python permettant de calculer la somme des inverses des n
premiers nombres ( 1+ 1/2+ 1/3+1/4+…….+1/n ).
from numpy import round
print("Programme qui calcul la somme des inverses des n premiers nombres")
n = int(input("Entrez la valeur de n : "))
resultat = []
for i in range(1, n + 1):
    inv = 1 / i
    resultat.append(inv)

Abidjan, le 10/04/2023 2
resultat = round(sum(resultat), 2)
print("La somme des inverses est :", resultat)

b) Ecrire un code python permettant de saisir le mot de passe lic2mi sachant que
l’utilisateur n’a que trois essais
print("Programme qui verifie si une entrée correspond à un mot de passe, en trois essais"
)
essais_restant = 3
while essais_restant >= 1:
    mdp = input("Entrez le mot de passe : ")
    if mdp == "lic2mi":
        print("Super ! Le mot de passe est correcte.")
        break
    else:
        essais_restant -= 1
        print("Désolé, le mot de passe est incorrecte !")
        print(f"Nombre d'essais restant : {essais_restant}")
else:
    print("\nVous n'aviez droit qu'à trois essais ! ")

c) Ecrire un code python permettant de réaliser une calculette avec les quatre
opérations de base. On utilisera l’instruction (if…elif….) pour permettre à l’utilisateur
de faire le choix de son opération
def somme(a, b):
    som = a + b
    return som

def soustraction(a, b):
    sous = a - b
    return sous

def produit(a, b):
    prod = a * b
    return prod

def division(a, b):
    div = a / b
    return div

print("""Mini calculatrice
Repondez en tapant 1, 2, 3, ou 4 :\n 
1 - Somme
2 - Soustraction
3 - Produit
4 - Division
""")

Abidjan, le 10/04/2023 3
reponse = int(input("Réponse : "))
if (reponse == 1):
    a = int(input("Entrez la valeur de A : "))
    b = int(input("Entrez la valeur de B : "))

    resultat = somme(a, b)
    print("Le resultat de la somme est : ", resultat)

elif (reponse == 2):
    a = int(input("Entrez la valeur de A : "))
    b = int(input("Entrez la valeur de B : "))
    resultat = soustraction(a, b)
    print("Le resultat de la soustraction est : ", resultat)

elif (reponse == 3):
    a = int(input("Entrez la valeur de A : "))
    b = int(input("Entrez la valeur de B : "))

    resultat = produit(a, b)
    print("Le resultat du produit est : ", resultat)

elif (reponse == 4):
    a = int(input("Entrez la valeur de A : "))
    b = int(input("Entrez la valeur de B : "))

    resultat = division(a, b)
    print("Le resultat de la division est : ", resultat)

else:
    print("Saisissez un entier correspondant à une des propositions de réponses"
)

d) Ecrire un code permettant de calculer le terme n d’une suite de fibonacci sachant que
u 0 = u 1 = 1 et u n = u n-1 + u n-2
def fibonacci(n):
    if n == 0 or n == 1:
        fib = 1
        return fib
    else:
        for i in range(2, n + 1):
            fib = fibonacci(n - 1) + fibonacci(n - 2)
            return fib
# programme principal
a = int(input("Saisissez un entier svp : "))
print("Fibonacci(", a,") = ", fibonacci(a))        

e) Écrire un module appeler cercle contenant une fonction circonférence pour le calcul
de la circonférence d’un cercle et aire pour le calcul de l’aire du cercle.

Abidjan, le 10/04/2023 4
from numpy import pi, round
def circonference(r):
    """Calcul la circonférence d'un cercle"""
    c = 2 * round(pi, 2) * r
    return c
    
def aire(r):
    """Calcul de l'aire d'un cercle"""
    a = round(pi, 2) * (r ** 2)
    return a 

f) Dans un programme python, utiliser le module cercle et on demandera à l’utilisateur


de donner le rayon et on affichera la circonférence et l’aire.
from E_cercle import *

print("Programme qui calcul la circonférence ou l'aire d'un cercle.")
while True:
    print("1 - Tapez 1 pour calculer la circonférence d'un cercle\n2 - Tapez 2 pour calc
d'un cercle")
    reponse = int(input("Réponse : "))
    
    if (reponse == 1):
        print("\nPour calculer la circonférence d'un cercle nous avons besoin de son ray
)
        rayon = float(input("Rayon du cercle : "))
        circ = circonference(rayon)
        print(f"La circonférence de ce cercle est de {circ} cm.")
        break
        
    elif (reponse == 2):
        print("\nPour calculer l'aire d'un cercle nous avons besoin de son rayon en cm..
        rayon = float(input("Rayon du cercle : "))
        circ = circonference(rayon)
        print(f"L'aire de ce cercle est de {circ} cm carré.")
        break 
    else:
        print("\nSaisissez un chiffre correspondant à une des proposition de réponses...

g) Écrire un code python permettant de résoudre une équation du second degré à


coefficients réels et solutions réelles
from numpy import sqrt, round
print("""Programme qui résoud une équation du second dégré (Ax^2 + Bx + C = 0 avec A, B e
)
en donnant une ou des solutions réelles(x si delta = 0, x1 et x2 si delta > 0 )""")
a = int(input("Donnez A : "))
b = int(input("Donnez B : "))

Abidjan, le 10/04/2023 5
c = int(input("Donnez C : "))
delta = b ** 2 - (4 * a * c)

if (delta < 0):
    print("Pas de solutions réelles pour l'équation : ", str(a) + "x^2 " + str(b) + "x " 
elif (delta == 0):
    x = -b / (2 * a)
    print("L'équation admet une unique solution réelle x tel que :\n", "x =", round(x, 2)
else:
    x1 = (-b - sqrt(delta)) / (2 * a)
    x2 = (-b + sqrt(delta)) / (2 * a)
    print("L'équation admet deux solutions réelle x1 et x2 tel que :\n", "x1 =",  
round(x1, 2), "et x2 =", round(x2, 2))

h) Soient les tuples :


tuple1 = ("green", "red", "blue") # Crée un tuple
print(tuple1)
tuple2 = tuple([7, 1, 2, 23, 4, 5]) # Crée un tuple à partir d’une liste
print(tuple2)
Effectuer les opérations suivantes :
i. Afficher la longueur du tuple 2
ii. Afficher le maximum du tuple 2
iii. Afficher le minimum du tuple 2
iv. Afficher la somme du tuple 2
v. Afficher le premier élément du tuple 2
vi. Combiner deux tuples 1 et 2 en un tuple 3
vii. Afficher le tuple 3
viii. Dupliquer le tuple 1
ix. Afficher le tuple 3
x. Afficher une tranche du tu tuple 2
xi. Afficher le dernier élément du tuple 1
xii. Vérifier si 2 est un élément du tuple 2 en utilisant l’opérateur in
xiii. Convertir le tuple 2 en une liste nommée list1
xiv. Trier list1 et afficher list1
tuple1 = ("green", "red", "blue")
tuple2 = tuple([7, 1, 2, 23, 4, 5])
 
#   i. Afficher la longueur du tuple 2 
print(len(tuple2))

#  ii. Afficher le maximum du tuple 2 
print(max(tuple2))

Abidjan, le 10/04/2023 6
# iii. Afficher le minimum du tuple 2
print(min(tuple2))
 
#  iv. Afficher la somme du tuple 2 
print(sum(tuple2))

#   v. Afficher le premier élément du tuple 2
print(tuple2[0])

#  vi. Combiner deux tuples 1 et 2 en un tuple 3 vii
tuple3 = tuple1 + tuple2

# vii. Afficher le tuple 3 
print(tuple3)

# viii. Dupliquer le tuple 1 
tuple1 = list(tuple1)
duplicatat_tuple1 = tuple1.copy()
duplicatat_tuple1 = tuple(duplicatat_tuple1)
tuple1 = tuple(tuple1)

#   x. Afficher une tranche du tuple 2
print(tuple2[0:3])

#   xi. Afficher le dernier élément du tuple 1 
print(tuple1[len(tuple1) - 1])

#  xii. Vérifier si 2 est un élément du tuple 2 en utilisant l’opérateur in 
if 2 in tuple2:
    print("2 est bien dans le tuple 2")
else:
    print("2 n'est pas dans le tuple 2")
    
#  xiii. Convertir le tuple 2 en une liste nommée list1
list1 = list(tuple2)

# xiv. Trier list1 et afficher list1 
list1.sort()
print(list1)

Exercice 3 : manipulation de tableaux et structures


1. En utilisant un tableau, mettre en œuvre la méthode de tri bulles pour ranger un
tableau de réels par ordre croissant.
def tri_bulle(tab):
    for i in range(len(tab)):

Abidjan, le 10/04/2023 7
        for j in range(0, len(tab) - i - 1):
            if tab[j] > tab[j + 1]:
                # Echange des 2 elements trouvés 
                tab[j], tab[j + 1] = tab[j + 1], tab[j]
    return tab
        
print("Programme qui met en oeuvre la méthode de tri bulles pour ranger des nombres réels par ordre cro
n\
que l'utilisateur aura saisi un par un !")

while True:
    print("\nDonnez le nombre d'éléments à trier.")
    nbr_elements = int(input("Réponse : "))
    if nbr_elements != 1:
        tab = []
        print("\nOk ! Entrez les", nbr_elements, "nombres réels à trier un par un")
        for i in range(1, nbr_elements + 1):
            n = int(input("Entrez le nombre " + str(i) + " : "))
            tab.append(n)
        print("\nVoici :")
        print("Le tableau avant le tri :", tab)
        tab = tri_bulle(tab)
        print("Et le tableau après le tri :", tab)
        break
    else:
        print("Tri d'un seul éléments impossible !")

2. Écrire un code Python permettant de rechercher le plus petit élément dans un


tableau de réel
def recherche_min(liste):
    _minimum = liste[0]
    for i in liste:
        if i <= _minimum:
            _minimum = i
    return _minimum
print("Programme qui détermine le minimum d'une liste dont l'utilisateur aura saisi les éléments 
un par un !")

while True:
    print("\nDonnez le nombre d'éléments dans la liste.")
    nbr_elements = int(input("Réponse : "))
    if nbr_elements != 1:
        liste = []
        print("\nOk ! Entrez les", nbr_elements, "éléments de la liste")
        for i in range(1, nbr_elements + 1):
            n = int(input("Entrez le nombre " + str(i) + " : "))
            liste.append(n)
        minimum = recherche_min(liste)

Abidjan, le 10/04/2023 8
        print("Le plus petit éléments de la liste est :", minimum)
        break
    else:
        print("Impossible de chercher un minimum dans une liste d'un seul éléments!")

3. Écrire un programme python permettant de faire le produit de deux matrices


carrées d’ordre deux
from numpy import array

A = array(([3, -1], [4, 2]))
B = array(([2, 2], [1, 0]))
print("Programme qui fait le produit de deux matrices carrées A et B d'ordre 2"
)
prod = A.dot(B)
print("Le produit de A et B est :\n A x B =\n", prod)

4. On considère un tableau de 10 étudiants (matricule, nom et moyenne). Écrire un


code python permettant de les saisir puis de les afficher par ordre alphabétique
print("\nProgramme python permettant d'ajouter 10 étudiants puis de les afficher...")
print("Enregistrez donc les étudiants un par un !")

etudiants = []
noms = []
matricules = []
moyennes = []

for i in range(1, 11):
    print("\nEtudiant", i)
    nom = input("Nom : ")
matricule = input("Matricule : ")
   moyenne = float(input("Moyenne : "))
   noms.append(nom)
   matricules.append(matricule)
   moyennes.append(moyenne)
noms.sort()
print("Liste des étudiants enregistrer par ordre de nom : \n")
for i, _nom, _mat, _moy in zip(range(1, 4), noms, matricules, moyennes):
   print(i,"-L'étudiant", _nom, "a", _moy, "de moyennes et son numero matricule est le", _mat
)

Exercice 4 : chaîne de caractères et tableaux


On suppose une phrase de 40 caractères. Écrire un programme en python, permettant de :
i. renverser la phrase de 40 caractères
ii. compter le nombre de voyelles
iii. compter le nombre de sous chaine rdv

Abidjan, le 10/04/2023 9
iv. mettre la phrase en majuscule

Exercice 5 : structure, fonctions, fichiers


Un contact est défini par un index (compris entre 0 et 250), un nom (chaîne), un et un
numéro de téléphone (8 chiffres).
Quelle est la structure de données adéquate nécessaire pour la modélisation d’un contact ?
Et la structure adéquate pour stocker ses informations ?
a) Écrire un programme python permettant de saisir 10 contacts et de les enregistrer
dans le fichier repertoire.txt.
b) On pourra lister les contacts saisis, rechercher un contact, modifier ou supprimer un
contact.

Travaux pratiques
Après la prise en main de petits programmes sous python, on pourra programmer certains
exercices du TD

Abidjan, le 10/04/2023 10

Vous aimerez peut-être aussi