EMSI RABAT – Ingénierie Informatique & Réseaux
EMSI 3 – 3°IIR 3 – INFORMATIQUE
Programmation en Langage Script et Python
*===> Études Avancée en Langage Python
Professeurs : Mr. Yves EBOBISSE
And Others
Étudiants : Ibrahim MANNANE
Youssef MAHTAT
Langage PYTHON
Travaux Pratiques
&
Manipulations
(Python pour les Programmeurs C/C++)
TPs & Manips
en
Informatique :
Travaux Pratiques & Manips
en
Langage Python
Pour
Les Programmeurs
C/C++
(Selon le TP du Prof. Mr. Yves EBOBISSE)
→ TP - Manipulation 1 :
**→ Exercice 1 :
Enoncé :
Soit à réaliser un programme qui permet de lire la quantité et le prix d’un
article et affiche le prix hors taxe, la TVA (20%) et le prix TTC ;
Résolution :
qte = float(input("Quantite : "))
prix = float(input('Prix : '))
mt_ht = qte*prix
tva = mt_ht * 0.2
print("prix hors tax : ",mt_ht,'dh')
print("TVA : ",tva,'dh')
print("prix ttc : ", mt_ht + tva,'dh')
Modification :
Modifier le programme précédant :
- Si qte > 70 alors 15% réduction ;
- Sinon Si 40 <= qte <= 70 alors 10% réduction ;
Résolution :
qte = float(input("Quantite : "))
prix = float(input('Prix : '))
mt_ht = qte*prix
tva = mt_ht * 0.2
reduction = 0
if qte > 70 :
reduction = mt_ht * 0.15
elif qte >= 40 :
reduction = mt_ht * 0.1
print("prix hors tax : ",mt_ht,'dh')
print("TVA : ",tva,'dh')
print("prix ttc : ", mt_ht + tva,'dh')
print("mantant de reduction : ", reduction,'dh')
if reduction > 0 :
print("Prix a payer avec reduction : " , mt_ht + tva - reduction,"dh")
**→ Exercice 2 :
Enoncé :
Ecrire un programme qui permet d’afficher les nombres pairs compris dans
un intervalle fourni par l’utilisateur ;
Résolution 1 :
borneInf = int(input("Entrer la borne inferieur : "))
borneSup = int(input("Entrer la borne suprerieur : "))
for i in range(borneInf,borneSup+1):
if i % 2 == 0 :
print(i," est paire")
Résolution 2 :
borneInf = int(input("Entrer la borne inferieur : "))
borneSup = int(input("Entrer la borne suprerieur : "))
if borneInf % 2 != 0:
borneInf += 1;
pas = 2
for i in range(borneInf,borneSup+1,pas):
print(i," est paire")
**→ Exercice 3 :
Enoncé :
Ecrire un programme avec la boucle for qui permet d’afficher les nombres
impairs compris dans un intervalle fourni par l’utilisateur ;
Résolution :
borneInf = int(input("Entrer la borne inferieur : "))
borneSup = int(input("Entrer la borne suprerieur : "))
if borneInf % 2 == 0:
borneInf += 1;
pas = 2
for i in range(borneInf,borneSup+1,pas):
print(i," est impaire")
**→ Exercice 4 :
Enoncé :
Ecrire une fonction qui permet de calculer la puissance ;
Résolution :
def puissance(A,B):
if B == 0:
return 1
else :
return A * puissance(A,B-1)
**→ Exercice 5 :
Enoncé :
Ecrire une fonction qui permet de calculer le Nième terme de la suite de
Fibonacci ;
Résolution :
# Version itérative :
def fibo(n):
U1 = 1
U2 = 1
U = 1
for i in range(2,n+1):
U = U1 + U2
U1 = U2
U2 = U
return U
# Version récursive :
def fibonacci(n):
if n == 0 or n == 1 :
return 1
else :
return fibonacci(n-1) + fibonacci(n-2)
**→ Exercice 6 :
Enoncé :
Ecrire une fonction qui permet de calculer le Nième terme de la Factoriel ;
Résolution :
def fact(n):
if n == 0:
return 1
else:
return n * fact(n-1)
**→ Exercice 7 :
Enoncé :
Ecrire une fonction qui permet de déterminer si un nombre entier naturel est
premier ou non ;
Résolution :
from math import *
def Is_Prime(n):
i = 3
max = int(sqrt(n))
if n % 2 == 0:
return False
while i <= max :
if n % i == 0:
return False
i += 2
return True
**→ Exercice 8 :
Enoncé :
Soit à réaliser un programme qui permet de lire un entier et affiche si ce
nombre est premier ;
Résolution :
(On utilise la même fct Is_Prime() définie dans l’exercice 7)
Nbr = int(entree)
if Nbr <= 0 :
print("Veulliez entrer un nombre entier strictement positive")
elif Is_Prime(Nbr) :
print(Nbr," est un nombre premier")
else:
print(Nbr," n'est pas un nombre premier")
Modification (BONUS) :
Modifions le programme pour gérer l’exception de la saisie d’une valeur
hors qu’un nombre entier :
entree = input("Enter votre nombre : ")
try:
Nbr = int(entree)
if Nbr <= 0 :
print("Veulliez entrer un nombre entier strictement positive")
elif Is_Prime(Nbr) :
print(Nbr," est un nombre premier")
else:
print(Nbr," n'est pas un nombre premier")
except ValueError:
print ("*HERROUR* Votre n'avez pas tappé un nombre entier !!!" )
→ TP - Manipulation 2 (POO) :
**→ Exercice 9 – Exemple :
Enoncé :
Soit à réaliser la class Voiture, qui permet de regrouper les informations
d’un objet voiture. Les informations d’une voiture sont :
- Immatriculation ;
- Couleur ;
- Marque ;
- Modèle ;
- Puissance ;
(On souhaite instancier un tel objet ainsi de l’afficher grâce à une méthode définie)
Résolution :
class Voiture:
def __init__(self, immat = 0, color = "", marq = "", modl = "", puiss = 0):
self.immatricule = immat
self.couleur = color
self.marque = marq
self.modele = modl
self.puissance = puiss
def affichage(self):
print("Caracteristiques de la voiture sont : ")
print(" immatricule : ",self.immatricule)
print(" couleur : ",self.couleur)
print(" marque : ", self.marque)
print(" modele : ", self.modele)
print(" puissance : ",self.puissance)
→ TP - Manipulation 3 (Interface Graphique) :
**→ Exercice 10 – Problème Simple & Exemple :
Enoncé :
Soit à réaliser une interface graphique (en Python 3) avec le Framework
Tkinter. Cette interface (simple) permet à un utilisateur de saisi un nom
puis un prénom ainsi de cocher ou pas une case permettant d’indiquer
si les informations entrées sont à un étudiant ou pas ;
Résolution :
0. Pour utiliser le Framework Tkinter, il faut l’importer dans le
projet :
from tkinter import *
1. Pour créer une interface, il faut instancier un objet (fenêtre) du type
TK :
def Instance_principal_Window() :
window= Tk()
window.title("PrintIsStudent")
window.geometry("350x110")
L’interprétation :
2. Afin d’insérer le 1er élément label et textbox, il faut créer un
conteneur :
def create_Frame(window):
frame1=Frame(window)
frame1.pack()
return frame1
3. Afin de créer un label et de l’insérer dans un conteneur, on peut
utiliser cette fonction :
def create_Label(frame,PrintedText):
label =Label(frame, text= PrintedText)
label.pack(side=LEFT)
return label
4. Afin de créer un input (graphique), il faut une variable qui va
récupérer les données :
NomvarEntree = StringVar()
Puis on peut créer l’objet input avec la fonction suivante :
def create_Input(frame,VarEntry):
entree =Entry(frame, textvariable=VarEntry)
entree.pack(side =RIGHT)
return entree
5. Afin de créer une case à coucher (graphique), il faut une variable
qui va récupérer les données :
NomvarCheck = IntVar()
NomvarCheck.set(0)
Puis on peut créer l’objet Check avec la fonction suivante :
def create_check(frame,varCheck):
Check = Checkbutton(frame, text="Etudiant",variable=varCheck, onvalue=1, offvalue=0)
Check.pack()
return Check
6. Afin de créer un bouton, avec la fonction suivante :
def create_button(frame, PrintedText , actionFuntion):
btn=Button(frame, text = PrintedText, command = actionFuntion)
btn.pack()
return btn
7. Puis enfin, pour afficher le résultat, on peut soit l’afficher en bas dans un
label, soit dans une nouvelle fenêtre.
- Pour l’afficher dans un label :
Méthode 1 :
def printLabelMethode1 () :
labelAffichage["text"] = Nom.get() + " " + Prenom.get()
if(isStudent.get()):
labelAffichage["text"] += " est un(e) etudiant(e)"
else:
labelAffichage["text"] += " n'est pas un(e) etudiant(e)"
Méthode 2 :
def printLabelMethode2() :
String = Nom.get() + " " + Prenom.get()
if(isStudent.get()):
String += " est un(e) etudiant(e)"
else:
string += " n'est pas un(e) etudiant(e)"
labelAffichage.configure(text=String)
- Pour l’afficher dans une nouvelle fenêtre :
def printNewWindow() :
window2= Tk()
frameX1=Frame(window2)
frameX1.pack()
string = Nom.get() + " " + Prenom.get()
if(isStudent.get()):
string += " est un(e) etudiant(e)"
else:
string += " n'est pas un(e) etudiant(e)"
labelXA=Label(frameX1, text= string)
labelXA.pack()
Enfin, notre programme advient avec les fonctions définies précédemment :
window1 = Instance_principal_Window()
frame1 = create_Frame(window1)
LabelNom = create_Label(frame1,"Nom : ")
Nom = StringVar()
InputNom = create_Input(frame1,Nom)
frame2 = create_Frame(window1)
LabelPrenom = create_Label(frame2,"Prenom : ")
Prenom = StringVar()
InputPrenom = create_Input(frame2,Prenom)
frame3 = create_Frame(window1)
isStudent = IntVar()
isStudent.set(0)
check = create_check(frame3,isStudent)
frame4 = create_Frame(window1)
bouttonValider = create_button(frame4,"VALIDER", printLabelMethode1)
#bouttonValider = create_button(frame4,"VALIDER",printLabelMethode2)
#bouttonValider = create_button(frame4,"VALIDER",printNewWindow)
frame5 = create_Frame(window1)
labelAffichage = Label(frame5, text="")
labelAffichage.pack()
L’interprétation :
Avec l’affichage printLabelMethode1() :
Avec l’affichage printLabelMethode2() :
Avec l’affichage printNewWindow() :