Exercice 1
Écrire  un programme Python  qui permet  d’afficher le message Bonjour.  
                                RĂ©ponse   
 
print("Bonjour")      
                     
Exercice 2 
Écrire  un programme Python permettant de saisir deux nombres et d'afficher leur produit.  
                             RĂ©ponse
 m = float(input(" Entrer un nombre:"))
n = float(input(" Entrer un nombre:"))
p = m*n
print("le produit de",m,"et",n,"=",p)

                                                           
Exercice 3
Écrire  un programme Python  qui  permet d'Ă©changer le contenu de deux entiers  A et B  saisis par l'utilisateur. et afficher ces entiers  après l’Ă©change. 
                                 RĂ©ponse
m = int(input(" Entrer un Entier m :"))
n = int(input(" Entrer un Entrer n :"))
print("Avant l'echange: m =",m,"et n =",n)
m,n = n,m
print("Apres l'echange: m =",m,"et n =",n)


Exercice 4                                                      

Écrire un un programme Python qui  permet d'afficher si un nombre  entier saisi au  clavier est pair ou impair. 
                                RĂ©ponse
N = int(input("Entrer un Entier :"))
if N%2==0 :
    print(N,"est pair")
else :
    print(N,"est impair")

Exercice 5                                      

Écrire un programme Python  qui permet d'afficher le plus grand de trois entiers saisis  au clavier. 
                                  RĂ©ponse


A = int(input("Entrer un Entier A :"))
B = int(input("Entrer un Entier B :"))
C = int(input("Entrer un Entier C :"))
Max = A
if B >= Max : Max = B
if C >= Max : Max = C
print("Le maximum est ",Max)

Exercice 6                            

Écrire un programme Python  qui permet d'Ă©valuer une note saisi au  clavier   (si la note est supĂ©rieur Ă  10 alors il affiche validĂ© sinon non validĂ©  (NB : la note comprise entre 0 et 20 ). 
                                  
RĂ©ponse

note = float(input("Entrer la note:"))
if note <= 20 and note >= 10 :
    print("ValidĂ© ")
elif note < 10 and note >= 0 :
    print("non ValidĂ© ")
else:
    print("La note incorrecte !!! ")

Exercice 7                               

Écrire un programme Python qui demande deux nombres m et n Ă  l’utilisateur et l’informe ensuite si le produit de ces deux nombres est positif ou nĂ©gatif. On inclut dans le programme le cas oĂą le produit peut ĂŞtre nul. 
                                     RĂ©ponse
A = float(input("Entrer un Entier A:"))
B = float(input("Entrer un Entier B:"))
if A*B < 0 :
    print("Le produit de",A,"et",B,"est nĂ©gatif")
elif A*B > 0:
    print("Le produit de",A,"et",B,"est positif")
else :
    print("Le produit de",A,"et",B,"est nul ")

Exercice 8

                                                                 
Écrire un programme Python qui permet de calculer la valeur absolue d'un entier saisi  par l'utilisateur.
                                   RĂ©ponse
A = float(input("Entrer un nombre :"))
if A < 0 :
    print("La valeur absolue de",A,"est",-A)
else :
    print("La valeur absolue de",A,"est",A)

Exercice 9
Écrire un programme Python qui permet de calculer la moyenne de trois entiers saisis par l'utilisateur.
                                    RĂ©ponse
A = int(input("Entrer un Entier A :"))
B = int(input("Entrer un Entier B :"))
C = int(input("Entrer un Entier C :"))
Moyenne = (A+B+C)/3
print("La Moyenne est ",Moyenne)


Exercice 10
Une boutique propose Ă  ces clients, une rĂ©duction de 15% pour les montants d’achat supĂ©rieurs Ă  200 dh. Écrire un programme Python permettant de saisir le prix total HT et de calculer le  montant TTC en prenant en compte la rĂ©duction et la TVA=20%.

                                    RĂ©ponse
Prix_HT = float(input("Entrer le montant HT:"))
Prix_TTC = Prix_HT + Prix_HT*0.2
if Prix_TTC > 200 :
    Prix_TTC = Prix_TTC - Prix_TTC*0.15
    print("le montant TTC est: ",Prix_TTC)  
else:
        print("le montant TTC est: ",Prix_TTC)


Exercice 11
Le centre de photocopie facture 0,25 DH  pour les 10 premières photocopies, 0,20 DH les vingt suivantes et 0,10 DH pour plus de vingt. Ecrire un programme Python qui demande Ă  l’utilisateur de saisir le nombre de photocopies effectuĂ©es et qui affiche la facture correspondante. 
                                      RĂ©ponse
Nb_copies = int(input("Entrer le nombre de copies :"))
if Nb_copies >20 :
    prix = Nb_copies *0.10
if Nb_copies <=20 and Nb_copies > 10 : prix = Nb_copies *0.20
if Nb_copies <=10 and Nb_copies > 0 : prix = Nb_copies *0.25
print("Le prix total est: ",prix," Dh")

Exercice 12
Écrire un programme Python qui demande l'âge d'un enfant et permet d'informer de sa catĂ©gorie sachant que les catĂ©gories sont les suivantes: 
"poussin de 6 a 7 ans"   
"pupille de 8 a 9 ans "   
"minime de 10 a 11 ans "  
" cadet après 12 ans ". 
                                   RĂ©ponse
age = float(input("Entrer votre age :"))
if age >=12 :
    print("Vous etes cadet")
elif age >=10 and age <=11 :
    print("Vous etes minime")
elif age >=8 and age <=9 :
    print("Vous etes pupille")
elif age >=6 and age <=7 :
    print("Vous etes poussin")
else:
    print("votre age infĂ©rieur Ă  6 ans")

Exercice 13 
Écrire un programme Python permettant d’afficher le mois en lettre selon le numĂ©ro saisi au clavier.  (  Si l’utilisateur tape 1 le programme affiche janvier,  si 2  affiche  fĂ©vrier , si 3 affiche mars... ) 


                                 RĂ©ponse
mois = int(input("Entrer le Mois :"))
if mois == 1 :
    print("Janvier")
elif mois == 2 :
    print("fĂ©vrier")
elif mois == 3 :
    print("Mars")
elif mois == 4 :
    print("Avril")
elif mois == 5 :
    print("Mai")
elif mois == 6 :
    print("Juin")
elif mois == 7 :
    print("Juille")
elif mois == 8 :
    print("Aout")
elif mois == 9 :
    print("Septembre")
elif mois == 10 :
    print("Octobre")
elif mois == 11 :
    print("Novembre")
elif mois == 12 :
    print("dĂ©cembre")
else:
    print("Le mois incorret !!!!")

Exercice 14
Écrire un programme Python qui permet  d'afficher  le message   "Bonsoir"  10 fois. Utilisant la boucle while.   
                                RĂ©ponse
i=1;
while i <= 10:
    print("Bonsoir")
    i=i+1

Exercice 15
Écrire un programme Python permettant de calculer la somme S= 1+2+3+...+ 10. Utilisant la boucle while. 


                                RĂ©ponse
i = 1
S = 0
while i <= 10 :
    S = S + i
    i = i + 1
print("La somme de 1 Ă  10 est:",S)

Exercice 16
Écrire un programme Python permettant de  calculer la somme   S=1+2+3+...+ N,  oĂą N saisi par l’utilisateur.  Utilisant la  boucle while.


                                    RĂ©ponse 


i=1
S=0
N = int(input("Donner un entier:"))
while i <= N :
    S = S + i
    i = i + 1
print("La somme de 1 Ă  ",N," est:",S)

Exercice 17
Écrire un programme Python qui permet d'afficher  le message "bonjour" 10 fois . Utilisant la  boucle for. 


                                     RĂ©ponse
for i in range(10) :
    print("Bonjour")

Exercice 18
Écrire un programme Python qui permet de  calculer  la somme  S=1+2+3+...+ 10. Utilisant la boucle for.  


                                  RĂ©ponse


S = 0
for i in range(1,11):
    S = S + i
print("La somme de 1 Ă  10 est:",S)

Exercice 19
Écrire un programme Python qui permet de calculer la somme   S=1+2+3+4+….+ N. oĂą N saisi au clavier par l'utilisateur.Utilisant la boucle for. 


                                      RĂ©ponse

S = 0
n=int(input("Donner un entier :"))
for i in range (1,n+1):
    S = S + i
print("La somme des nombres entre",1,"et",n,"=",S)

Exercice 20
Écrire un programme Python qui permet d'afficher la table de multiplication de 5. Utilisant la boucle For. 

                                    RĂ©ponse

for i in range (1,11):
    print("5 *",i,"=",i*5)

Exercice 21
Écrire un programme Python qui permet d'afficher la table de multiplication d’un entier saisie par l’utilisateur,  Utilisant la boucle for.

                                 RĂ©ponse

n=int(input("Donner un entier :"))
for i in range (1,11):
    print(n," * ",i,"=",i*n)

Exercice 22
Écrivez un programme Python, entrez deux nombres de l'utilisateur et trouvez le plus grand diviseur commun en utilisant la boucle for.
                           RĂ©ponse

num1 = int(input("Saisir nombre 1 : "))
num2 = int(input("Saisir nombre 2 : "))
min = num1 if (num1 < num2) else num2

for i in range(1, min+1):
    if (num1 % i == 0 and num2 % i == 0):
        pgcd = i
print("PGCD de {0} et {1} = {2}".format(num1, num2, pgcd))

Exercice 23
Écrivez un programme Python pour entrer un nombre et vérifiez si le nombre est parfait ou non.
Un nombre parfait est un entier positif qui est égal à la somme de ses diviseurs positifs appropriés.
Par exemple: 6 est le premier nombre parfait
Les diviseurs appropriés de 6 sont 1, 2, 3.
Somme de ses diviseurs stricts = 1 + 2 + 3 = 6.
Par conséquent, 6 est un nombre parfait.


                                 
RĂ©ponse


num = int(input("Saisir un nombre : "))
somme = 0
for i in range(1, num):
    if (num % i == 0):
        somme += i

if (somme == num):
    print(num, "est un nombre parfait")
else:
    print(num, "n'est pas un nombre parfait")

Exercice 24
Écrivez un programme 
Python pour saisir un nombre et calculer sa factorielle Ă  l'aide de la boucle for.

La factorielle d'un nombre "n" est le produit de tous les entiers positifs inférieurs ou égaux à n. Il est noté n!.
Par exemple, factorielle de 5!= 1*2*3*4*5= 120
                                      
RĂ©ponse


num = int(input("Saisir un nombre : "))
estPremier = True
for i in range(2, num // 2 + 1):
    if (num % i == 0):
        estPremier = False
        break
if (estPremier == 1):
    print(num, " est premier")
else:
    print(num, " n'est pas premier")

Exercice 25
Écrivez un programme Python pour afficher tous les nombres impairs de 1 à n en utilisant la boucle for et while.


                           
RĂ©ponse


n = int(input("Saisir un nombre : "))
print("les nombres impairs de 1 Ă  {0} ".format(n))
for i in range(1, n+1):
    if (i % 2 != 0):
        print(i)

Exercice 26
Écrivez un programme Python pour entrer un nombre de l'utilisateur et comptez le nombre de chiffres dans l'entier donné en utilisant une boucle.
                               
RĂ©ponse

num = int(input("Saisir un nombre : "))
compteur = 0
while (num != 0):
    compteur += 1
    num //= 10
print("Nombre de chiffres : ",compteur)

Exercice 27
Écrivez un programme Python pour saisir un nombre de l'utilisateur et recherchez le premier et le dernier chiffre d'un nombre en utilisant une boucle.
                              
RĂ©pons
n = int(input("Saisir un nombre : "))
dernier = n % 10
premier = n
while(premier >= 10):
    premier = premier //10
print("Premier chiffre = ", premier)
print("Dernier chiffre = ", dernier)

Exercice 28
Écrire un programme Python qui permet d'inverser les chiffres d'un entier N saisi par l'utilisateur.   par exemple  N=35672  le rĂ©sultat affichĂ© doit ĂŞtre   27653 

                          RĂ©ponse
n=int(input("donner  un entier : "))
r=0
while(n>0):
    r = r * 10  
    r = r+ n%10
    n = int( n/10)
print(r) 

Exercice 29
Écrivez un programme Python pour saisir un nombre et calculer la somme de ses chiffres en utilisant la boucle for.

                            RĂ©ponse
num = int(input("Saisir un nombre : "))
somme = 0
while (num != 0):
    somme += num % 10
    num = num // 10
print("Somme de chiffres = ", somme)

Exercice 30
Écrivez un programme Python pour saisir le numéro de l'utilisateur et vérifiez que le numéro est palindrome ou non, en utilisant une boucle.
                            
RĂ©ponse
n = int(input("Saisir un nombre : "))
num = n
inverse = 0
while(n != 0):
    inverse = (inverse * 10) + (n % 10)
    n //= 10
if(inverse == num):
    print(num, " est palindrome.")
else:
    print(num, " n'est pas palindrome.")

Exercice 31
Écrivez un programme Python pour déclarer et initialiser un tableau, puis saisissez ses éléments à partir de l'utilisateur et affichez le tableau.
                                
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N;
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
for i in range(N):
    print(tab[i])

Exercice 32
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments par l'utilisateur et affichez tous les éléments négatifs.

                               RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N;
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
print("Les éléments négatifs du tableau sont : ")
for i in range(N):
    if (tab[i] < 0):
        print(tab[i])

Exercice 33
Écrire un programme Python pour déclarer un tableau, puis saisir ses éléments à partir de l'utilisateur et trouver la somme des éléments du tableau
                               
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N;
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
somme=0
for i in range(N):
    somme = somme + tab[i]
print("Somme de tous les éléments du tableau = ",somme)

Exercice 34
Écrire un programme Python pour déclarer un tableau, puis saisir ses éléments à partir de l'utilisateur et rechercher les éléments maximum et minimum dans le tableau.

                                RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
max = tab[0]
min = tab[0]
somme=0
for i in range(N):
    if (tab[i] > max):
        max = tab[i]
    if (tab[i] < min):
        min = tab[i]
print("le maximum est ",max)
print("le minimum est ",min)

Exercice 35
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments à partir de l'utilisateur et recherchez l'élément le plus grand et le deuxième dans ce tableau.

                                 RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
max1 = max2 = tab[0]
for i in range(N):
    if (tab[i] > max1):
        max2 = max1
        max1 = tab[i]
    elif (tab[i] > max2 and tab[i] < max1):
        max2 = tab[i]
print("Premier plus grand = " , max1)
print("Deuxième plus grand =" , max2)

Exercice 36
Écrivez un programme Python pour déclarer un tableau, puis saisissez ses éléments à partir de l'utilisateur et comptez le nombre d'éléments pairs et impairs dans ce tableau.
                                   
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*N
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
pair = 0
impair = 0
for i in range(N):
    if (tab[i] % 2 == 0):
        pair+=1
    else:
        impair+=1
print("Total des éléments pairs: ",pair)
print("Total des éléments impairs : " ,impair)

Exercice 37
Écrivez un programme Python pour déclarer deux tableaux, puis entrez les éléments du premier tableau de l'utilisateur et copiez tous ses éléments dans le deuxième tableau
                              
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
source=[0]*N
dest=[0]*N
for i in range(N):
    source[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
for i in range(N):
    dest[i] = source[i]
print("Les éléments du tableau source sont : ")
for i in range(N):
    print(source[i], end=", ")
print()
print("Les éléments du tableau dest sont : ")
for i in range(N):
    print(dest[i])

Exercice 38
Créez un programme Python qui crée et initialise un tableau, puis insère un élément à la position spécifiée dans ce tableau (de 0 à N-1).
Pour insérer un nouvel élément dans le tableau, déplacez les éléments de la position d'insertion donnée vers une position vers la droite.

                              RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N+1)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
num = int(input("Saisir un élément : "))
pos = int(input("Saisir une position :  "))

if (pos > N + 1 or pos <= 0):
    print("Position invalide! Veuillez saisir une position entre 1 et " , N)
else:
    for i in range(N,-1,-1):
        tab[i] = tab[i - 1]
    tab[pos - 1] = num
    N+=1
    for i in range(N):
        print(tab[i])

Exercice 39
Créez un programme Python qui crée et initialise un tableau, puis supprimez un élément de ce tableau à la position spécifiée (de 0 à N-1).
Pour supprimer un élément du tableau, déplacez les éléments juste après la position donnée vers une position à gauche et réduisez la taille du tableau.
                                
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
pos = int(input("Saisir la position de l'élément à supprimer : "))
if (pos > N + 1 or pos <= 0):
    print("Position invalide! Veuillez saisir une position entre 1 et " , N)
else:
    for i in range(pos-1, N-1):
        tab[i] = tab[i + 1]

    N-=1
    for i in range(N):
        print(tab[i])

Exercice 40
Créez un programme Python qui crée et initialise un tableau, puis trouve la fréquence de chaque élément de ce tableau.

                               RĂ©ponse
N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
freq=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
    freq[i] = -1

for i in range(N):
    cpt = 1
    for j in range(N):
        if((i!=j) and (tab[i]==tab[j])):
            cpt+=1
    freq[i] = cpt
for i in range(N):
    if(freq[i] != 0):
        print(tab[i] , " se produit " , freq[i] , " fois")

Exercice 41
Créez un programme Python qui crée et initialise un tableau, puis affichez tous les éléments uniques de ce tableau
Idée: utiliser un tableau de fréquences

                               RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
freq=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
    freq[i] = -1

for i in range(N):
    cpt = 1
    for j in range(N):
        if((i!=j) and (tab[i]==tab[j])):
            cpt+=1
    freq[i] = cpt
for i in range(N):
    if(freq[i] == 1):
        print(tab[i] , end="  ")

Exercice 42
Créez un programme Python qui crée et initialise un tableau, puis comptez les éléments en double dans ce tableau.
                               
RĂ©ponse
N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
cpt=0
for i in range(N):
    for j in range(i+1,N):
        if (tab[i] == tab[j]):
            cpt+=1
            break
print("Nombre total d'éléments en double trouvés dans le tableau = " , cpt)

Exercice 43
Créez un programme Python qui crée et initialise un tableau, puis supprimez les éléments en double dans ce tableau.
                                
RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
for i in range(N):
    for j in range(i+1,N):
        if (tab[i] == tab[j]):
            for k in range(j,N-1):
                tab[k] = tab[k + 1]
            N-=1
            j-=1
for i in range(N):
    print(tab[i] )   

Exercice 44
Créez un programme qui crée et initialise un tableau, puis inversez ce tableau sans utiliser un tableau supplémentaire.
                            RĂ©ponse

N = int(input("Saisir le nombre d'éléments : "))
tab=[0]*(N)
for i in range(N):
    tab[i]=int(input("Saisir l'Ă©lement {0} : ".format(i+1)))
indexArriere = 0
indexAvant = N - 1
while (indexArriere < indexAvant):
    temp = tab[indexArriere]
    tab[indexArriere] = tab[indexAvant]
    tab[indexAvant] = temp
    indexArriere+=1
    indexAvant-=1
for i in range(N):
    print(tab[i])

 Exercice 45

Ecrire un programme Python qui permet de calculer la somme :

S = 1¹ +2² + 3³ +........+ n^n

                   *** Solution ****

S = 0

n=int(input("Donner un entier :"))

for i in range (1,n+1):

    S=S+i**i

print("la somme est :",S)



                 POO en Python 

Exercice 46 : classe Rectangle 

Écrire en Python une classe «Rectangle» ayant deux variables « a » et « b » et une fonction membre « surface() » qui retournera la surface du rectangle.

                              CorrigĂ©

class Rectangle:
   def __init__ (self,a=0,b=0):
       self.a=a 
       self.b=b
   def surface(self):
     return self.a*self.b
  
r1 = Rectangle ();
r2 = Rectangle (5,4);
print("la surface est:",r1.surface())
print("la surface est:",r2.surface());


Exercice 47 : classe Somme 


Écrire en Python une classe « Somme » ayant deux variables « n1 » et « n2 » et une fonction membre « som() » qui calcule la somme. Dans la mĂ©thode principale main demandez Ă  l’utilisateur d’entrez deux entiers et passez-les au constructeur par dĂ©faut de la classe « Somme » et afficher le rĂ©sultat de l’addition des deux nombres.

                              CorrigĂ©


class Somme:
    def __init__(self,nbr1=0,nbr2=0):
        self.n1=nbr1
        self.n2=nbr2
 
    def som(self):
      return n1 + n2
     
n1 = int(input("Entrer N1:"))
n2 = int(input("Entrer N1:"))
obj = Somme(n1,n2);
print("Le resultat de l'addition est :",obj.som())


Exercice 48 : classe Etudiant 

Écrire classe Python appelĂ©e « Etudiant » avec les membres suivant :
nom : (de type char),
note1, note2 : (de type float)
calc_moy() : calcule la note moyenne.
afficher () : affiche le nom et la note moyenne.
Le programme principal (main) demande Ă  l’utilisateur d’entrer le nom et les notes d'un Ă©tudiant. et affiche leur nom et la note moyenne.

                                            CorrigĂ©

class Etudiant:
    def __init__(self,nom,note1,note2):
        self.nom = nom
        self.note1 = note1
        self.note2 = note2

    def calc_moy(self):
     return (self.note1 + self.note2)/2
 
    def afficher (self):
      print("Etudiant: ",self.nom, " moyenne: ",self.calc_moy())

nom = input("Entrer le nom: ")
note1= int(input("Entrer la note 1: "))
note2= int(input("Entrer la note 2: "))
E = Etudiant (nom, note1, note2)
E.afficher()

Exercice 49 : classe point

RĂ©aliser en Python  une classe point permettant de manipuler un point d'un plan.on prĂ©voira :

1) un point est définit par ses coordonnées x et y (des membres privés)

2) les constructeurs 

3) une fonction membre déplace effectuant une translation définie par ses deux arguments dx et dy (double)

4)une fonction membre affiche se contentant d'afficher les coordonnées cartésiennes du point.

5)une fonction membre saisir se contentant de saisir les coordonnées cartésiennes du point.

6)une fonction membre distance effectuant calculant la distance entre deux point.

7)une fonction membre milieu donnant le milieu d'un segment.

8)un petit programme d'essai (main) gérant la classe point.

                            CorrigĂ©


from math import *

class Point:
    def __init__(self,a=0,b=0):
        self.x=a
        self.y=b
    def get_x(self):
        return self.x
    def get_y(self):
        return self.y

    def set_x(self,a):
        self.x=a 

    def set_y(self, b):
        self.y=b

    def deplace(self,dx,dy):
        self.set_x(self.get_x()+dx)
        self.set_y(self.get_y()+dy)
       

    def affiche(self):
        print("x=",self.get_x())
        print("y=",self.get_y())

    def saisir(self):
        print("donner les coordonnĂ©es")
        self.x = int(input ("x = "))
        self.y = int(input ("y = "))
      

    def distance (self,p):
        x1=(self.get_x()-p.get_x())*(self.get_x()-p.get_x());
        x2=(self.get_y()-p.get_y())*(self.get_y()-p.get_y());
        d=sqrt(x1+x2)
        return d

    def milieu(self, p):
        p1 = Point();
        p1.x=(self.get_x()+p.get_x())/2
        p1.y=(self.get_y()+p.get_y())/2
        return p1

p = Point(1,1)
x = Point(5,5)
c = Point()
p.affiche()
p.deplace(5,5)
p.affiche();
print("la distance px est: ",p.distance(x));
c=p.milieu(x)
print("le milieu de [px] est: (",c.get_x(),",",c.get_y(),")")


Exercice 50 : classe Compte 

Écrire un programme en Python qui simule la gestion d’un simple compte bancaire. Le compte est crĂ©Ă© avec un solde initial. Il est possible de dĂ©poser et de retirer des fonds, d’ajouter des intĂ©rĂŞts et de connaĂ®tre le solde actuel. Cela devrait ĂŞtre implĂ©mentĂ© dans une classe nommĂ©e Account qui comprend:


1) Un constructeur par défaut qui met le solde initial à zéro.
2) Un constructeur qui accepte une balance initial comme paramètre.
3) Une fonction getBalance qui renvoie le solde actuel.
4) Une méthode deposer pour déposer un montant spécifié.
5) Une méthode retirer pour retirer un montant spécifié.
6) Une mĂ©thode ajouter_Interet pour ajouter de l’intĂ©rĂŞt au compte.
La mĂ©thode  ajouter_Interet  prend le taux d’intĂ©rĂŞt comme paramètre et modifie le solde du compte en solde * (1 + taux d’intĂ©rĂŞt).

                          CorrigĂ©

class Compte:
    def __init__(self,balance=0):
        self.balance = balance
   
    def getBalance(self):
        return self.balance
       
    def deposer(self,amount):
        self.balance += amount

    def retirer (self,amount):
        self.balance -= amount

    def ajouter_Interet (self,rate):
        self.balance = self.balance*(1 + rate)

compte1 = Compte()
compte2 = Compte(3000)
compte1.deposer(100)
compte2.retirer(1000)
compte1.ajouter_Interet (0.3)
print(compte1.getBalance())
print(compte2.getBalance())  

    

Exercice 51 :  Classe temps 
CrĂ©er en Python une classe appelĂ©e Temps, qui a des membres de type int tels que heures, minutes et secondes.(rendez-les private)
1) Un constructeur doit initialiser ces données à 0
2) Un autre constructeur devrait l’initialiser Ă  des valeurs fixes.
3) Une fonction membre devrait l’afficher, au format 17h 59min 59s.
4) Une autre fonction pour renvoyer les données de chaque membre nommez-les getheurs, getMin et getSec
5) Une fonction membre doit ajouter deux objets de type Temps passĂ© en arguments.


                             
Corrigé


class Temps:
    def setTemps(self,h,m,s):
        self.heures = h
        self.minutes = m
        self.seconds = s

    def __init__ (self,h=0,m=0,s=0):
        self.setTemps(h,m,s)
  
    def getHours(self):
        return self.heures
    def getMin(self) :
        return self.minutes
    def getSec(self) :
        return self.seconds
       
    def getTemps(self):
        print(self.heures,"h ",self.minutes,"min ",self.seconds,"s")    
   

    def ajouterTemps(self,t1,t2):
        self.secondst1.seconds + t2.seconds
        self.minutes = t1.minutes + t2.minutes + (int(self.seconds/60))
        self.heures = t1.heures + t2.heures + (int(self.minutes/60))
        self.minutes %= 60
        self.seconds %= 60

t1 = Temps(4,43,59)
t2 = Temps(1,20,32)
t3 = Temps()
t1.getTemps()
t2.getTemps()
t3.ajouterTemps(t1, t2)
t3.getTemps()


Exercice 52  : Classe rectangle

Écrire en Python un programme utilisant une classe rectangle dont le constructeur prend deux paramètres, largeur et hauteur et qui offre les fonctions suivantes :

1) calcul du périmètre

2) calcul de la surface

3)  affichage

ainsi que les accesseurs et mutateurs triviaux (lecture et modification de la largeur et de la hauteur).

                                  CorrigĂ©


class Rectangle:
    def __init__(self,L,h):
        self.largeur = L
        self.hauteur = h
    def getLargeur(self):
        return largeur
    def getHauteur(self):
        return hauteur
    def perimetre(self) :
        return 2*(self.largeur + self.hauteur)
    def surface(self):
        return self.largeur * self.hauteur
    def setLargeur(self,newLargeur):
        self.largeur = newLargeur
    def setHauteur(self,newHauteur):
        self.hauteur = newHauteur

    def afficher(self):
        print("la longueur :",self.hauteur)
        print("la largeur :",self.largeur)

R= Rectangle (5,4)
R.afficher()
print("la surface est ",R.surface());
print("le perimetre est ",R.perimetre())


Exercice 53  :     L'hĂ©ritage 

Écrivez un programme en Python qui dĂ©finit une classe appelĂ©e Forme avec un constructeur qui donne de la valeur Ă  la largeur(x) et Ă  la hauteur(y). DĂ©finir la mĂ©thode aire() dans les deux sous-classes Triangle et Rectangle, qui calculent l’aire. Dans la mĂ©thode principale main, dĂ©finissez deux variables, un triangle et un rectangle, puis appelez la fonction aire() dans ces deux variables.

Notez que:

 l’aire du triangle est = largeur * hauteur / 2 

l’aire du rectangle est = largeur * hauteur.

                       CorrigĂ©

class Forme:
    def __init__(self,x=0,y=0):
        self.x =  x
        self.y =  y

class Rectangle (Forme):
    def __init__(self,x=0,y=0):
        Forme.__init__(self,x,y)
      
    def aire(self):
        return (self.x * self.y)

class Triangle (Forme):
    def __init__(self,x=0,y=0):
         Forme.__init__(self,x,y)
    def aire(self):
        return (self.x * self.y / 2)
 

R = Rectangle (2,3)
T = Triangle (2,3)
R1 = Rectangle ()
print(R.aire())
print(T.aire())
print(R1.aire())


Exercice 54: Classe Rectangle

1) Ecrire une classe Rectangle en langage Python, permettant de construire un rectangle dotĂ©e d'attributs longueur et largeur.
2) Créer une méthode Perimetre() permettant de calculer le périmètre du rectangle et une méthode Surface() permettant de calculer la surface du rectangle
3) Créer les getters et setters.
4) Créer une classe fille Parallelepipede héritant de la classe Rectangle et dotée en plus d'un attribut hauteur et d'une autre méthode Volume() permettant de calculer le volume du Parallélépipède.


                                  
RĂ©ponse

#coding: utf-8
class Rectangle:
    def __init__(self,longueur,largeur):
        self.longueur = longueur
        self.largeur = largeur
       
    # MĂ©thode qui calcul le pĂ©rimètre
    def Perimetre(self):
        return 2*(self.longueur + self.largeur)
   
    # MĂ©thode qui calcul la surface
    def Surface(self):
        return self.longueur*self.largeur
   
class Parallelepipede(Rectangle):
    def __init__(self,longueur,largeur, hauteur):
        Rectangle.__init__(self,longueur,largeur)
        self.hauteur = hauteur
   
    # mĂ©thode qui calcul le volume
    def Volume(self):
        return self.longueur*self.largeur*self.hauteur
   
monRectangle = Rectangle(7, 5)
monParallelepipede = Parallelepipede(7,5,2)
print("Le périmètre de mon rectangle est : ",monRectangle.Perimetre())
print("La surface de mon rectangle est : ", monRectangle.Surface())
print("Le volume de mon parallelepipede est : ", monParallelepipede.Volume())


Exercice 55: Compte bancaire

1) Créer une classe Python nommée CompteBancaire qui représente un compte bancaire, ayant pour attributs : numeroCompte (type numérique ) , nom (nom du propriétaire du compte du type chaine), solde.
2) Créer un constructeur ayant comme paramètres : numeroCompte, nom, solde.
3) Créer une méthode Versement() qui gère les versements.
4) Créer une méthode Retrait() qui gère les retraits.
5) Créer une méthode Agios() permettant d'appliquer les agios à un pourcentage de 5 % du solde
6) CrĂ©er une mĂ©thode afficher() permettant d’afficher les dĂ©tails sur le compte
7) Donner le code complet de la classe CompteBancaire.


                               RĂ©ponse

#coding: utf-8
class CompteBancaire:
    def __init__(self, idNumber, nomPrenom, solde):
        self.idNumber = idNumber
        self.nomPrenom = nomPrenom
        self.solde = solde
       
    def versement(self, argent):
        self.solde = self.solde + argent
   
    def retrait(self, argent):
        if(self.solde < argent):
            print(" Impossible d'effectuer l'opĂ©ration. Solde insuffisant !")
        else:
            self.solde = self.solde - argent
   
    def agios(self):
        self.solde =self.solde*95/100
   
    def afficher(self):
        print("Compte numĂ©ro : " , self.idNumber)
        print("Nom & PrĂ©nom : ", self.nomPrenom)
        print(" Solde  : ", self.solde , " DH ")
       
       
monCompte = CompteBancaire(16168891, " Mohamed Rachid", 22300)
monCompte.versement(1500)
monCompte.retrait(24000)
#monCompte.agios()
monCompte.afficher()


Exercice 56: Classe Cercle

1) Définir une classe Cercle permettant de créer un cercle C(O,r) de centre O(a,b) et de rayon r à l'aide du constructeur :
2)Définir une méthode Surface() de la classe qui permet de calculer la surface du cercle
3)Définir une méthode Perimetre() de la classe qui permet de calculer le périmètre du cercle
4) Définir une méthode testAppartenance() de la classe qui permet de tester si un point A(x,y) appartient ou non au cercle C(O,r).


                              RĂ©ponse


#coding: utf-8
from math import *
class Cercle:
    def __init__(self , a , b , r):
        self.a = a
        self.b = b
        self.r = r
   
    def perimetre(self):
        return 2*pi*self.r
      
       
    def surface(self):
        return pi*self.r**2

    def formEquation(self,x,y):     
        return (x-self.a)**2 + (y-self.b)**2 -self.r**2
    def test_appartenance(self,x,y):
        if(self.formEquation(x,y)==0):
            print("le point : (",x,y,") appartient au cercle C")
        else:
            print("le point : (",x,y,") n'appartient pas au cercle C")
           
       
# Instanciation  
C = Cercle(1,2,1)

print("le pĂ©rimètre du cercle C est: ", C.perimetre())
print("le surface du cercle C est: ", C.surface())
C.test_appartenance(1,1)

Exercice 57: Calcul arithmétique

1) CrĂ©er une classe Calcul ayant un constructeur par dĂ©faut (sans paramètres) permettant d’effectuer diffĂ©rents calculs sur les nombres entiers.
2) CrĂ©er au sein de la classe Calcul une mĂ©thode nommĂ©e Factorielle() qui permet de calculer le factorielle d'un entier. Tester la mĂ©thode en faisant une instanciation sur la classe.
3) CrĂ©er au sein de la classe Calcul une mĂ©thode nommĂ©e Somme() permettant de calculer la somme des n premiers entiers:  1 + 2 + 3 + .. + n. Tester la mĂ©thode.
4) CrĂ©er au sein de la classe Calcul une mĂ©thode nommĂ©e testPrim() permettant de tester la primalitĂ© d'un entier donnĂ©. Tester la mĂ©thode.
5) CrĂ©er au sein de la classe Calcul une mĂ©thode nommĂ©e testPrims() permettant de tester si deux nombres sont premier entre eux.

6) CrĂ©er une mĂ©thode tableMult() qui crĂ©e et affiche la table de multiplication d'un entier donnĂ©. CrĂ©er ensuite une mĂ©thode  allTablesMult()  permettant d'afficher toutes les tables de multiplications des entiers 1, 2, 3, ..., 9.
7) CrĂ©er une mĂ©thode  listDiv() qui rĂ©cupère tous les diviseurs d'un entier donnĂ© sur une liste Ldiv. CrĂ©er une autre mĂ©thode listDivPrim() qui rĂ©cupère tous les diviseurs premiers d'un entier donnĂ©.


                                RĂ©ponse


#coding: utf-8
class Calcul:
    def __init__(self):
        pass
#---Factorielle ------------   
    def factorielle(self, n):
        j=1
        for i in range(1,n+1):
            j = j*i
        return j
#---Somme des n premiers nombres----
    def somme(self, n):
        j=1
        for i in range(1,n+1):
            j = j+i
        return j
#---Test primalité d'un nombre------------
    def testPrim(self, n):
        j=0
        for i in range(1,n+1):
            if(n%i==0):
                j = j + 1
        if(j == 2):
            return True
        else:
            return False
           
# ---Test primalité de deux nombres entiers------------
    def testprims(self , n , m):
        divCommun = 0
        for i in range(1 , n+1):
            if (n%i == 0 and m%i == 0):
                divCommun = divCommun + 1
        if divCommun == 1:
            print("Les nombres " , n , " et ", m , " sont premiers entre eux")
        else:
            print("Les nombres " , n , " et ", m , " ne sont pas premiers entre eux")
           
#---Table de multiplication-------------
    def tableMult(self,k):
        for i in range(1,10):
            print(i," x ",k," = ",i*k)

#---Toutes les tables de multiplication des nombres 1, 2, .., 9
    def toutesLesTables(self):
        for k in range(1,10):
            print("\nla table de multiplication de : ",k, " est : ")
            for i in range(1,10):
                print(i," x ",k," = ",i*k)
               
#----- liste des diviseurs d'un entier               
    def listDiv(self , n):
        # initialisation de la liste des diviseurs
        lDiv = []
        for i in range(1 , n+1):
            if ( n%i == 0):
                lDiv.append(i)
        return lDiv
   
# ------liste des diviseurs premiers d'un entier----------------   
    def listDivPrim(self , n):
        # initialisation de la liste des diviseurs
        lDiv = []
        for i in range(1 , n+1):
            if ( n%i == 0 and self.testPrim(i)):
                lDiv.append(i)
        return lDiv                
               
# Exemple Instanciation
Cal = Calcul()
Cal.testprims(13 , 7)
print("Liste des diviseurs de 18 : ", Cal.listDiv(18))
print("Liste des diviseurs premiers de 18 : ", Cal.listDivPrim(18))
Cal.toutesLesTables()

Exercice 58 

Coder une classe   myString  permettant de doter les chaines de caractères des mĂ©thodes  append()  et  pop()  faisant les mĂŞmes opĂ©rations que celles des listes. Exemple si on crĂ©e  des chaines via l'instanciation s1 = myString("Hello") et s2 = "bonjour", et on lui applique les mĂ©thodes :
print(s1.append(" world !")) # affiche 'Hello world !' 
print(s2.pop(2)) # affiche 'bojour'.


                               RĂ©ponse


class myString:
    def __init__(self,s):
        self.s = s
    def append(self,x):
        self.s = self.s + x
        return self.s

    def pop(self,i):
        s1 = self.s[0:i]
        s2 = self.s[i+1:len(self.s)]
        return s1+s2
    def modifier(self,i):
        pass
       
# Tester la classe      
S = myString("hello")
print(S.pop(1)) # affiche 'hllo'
print(S.append(" world !")) # affiche 'hello world !'


Exercice 59

1. DĂ©finir une classe Book avec les attributs suivants : Titre, Auteur (Nom complet), Prix.
2. DĂ©finir un constructeur ayant comme attributs: Titre, Auteur, Prix.
3. DĂ©finir la mĂ©thode View() pour afficher les informations d'une instance object Book.
4. Ecrire un programme pour tester la classe Book.


                                 RĂ©ponse


#coding: utf-8
# Question 1
class Book:
     # Question 2
     def __init__(self , Title , Author , Price):
          self.Title    =  Title
          self.Author   =  Author
          self.Price    =  Price
         
     # Question 3
     def view(self ):
          return ("Book Title: " , self.Title ,  "Book Author: " , self.Author, "Book Price: " , self.Price)
         
# Question 4
MyBook = Book("Python" , "Mohamed" , "23 Dh")         
print( MyBook.view())


Exercise 60: Classe Geometry

Ecrire une classe Python nommĂ©e Geometry avec un constructeur par dĂ©faut sans paramètres.
1) Ajouter une mĂ©thode nommĂ©e distance() Ă  la classe geometry qui permet de calculer la distance entre deux points
A = (a1, a2), B = (b1, b2) (avec la convention: un point est est identifiĂ© Ă  ses coordonnĂ©es M = (xM , yM) )
2)  Ajouter une mĂ©thode nommĂ©e middle() Ă  la classe geometry qui permet de dĂ©terminer le milieu d'un bipoint (A , B).
3) Ajouter une  mĂ©thode  nommĂ©e  trianglePerimeter()  Ă  la classe geometry qui permet de calculer le pĂ©rimètre d'un triangle ABC.
4) Ajouter une mĂ©thode  nommĂ©e  triangleIsoscel()  qui renvoie True si le triangle est isoscel et False sinon.