SlideShare une entreprise Scribd logo
1  sur  86
2 Exercices en Python FENNI SALAH ©® 1992
Le présent manuel est conforme au programme
d'informatique de l'enseignement secondaire
relatif aux sections :
Sciences Informatiques, Mathématiques,
Sciences Expérimentales et Techniques.
Ces Exercices sont assez variés et tiennent compte des
différents niveaux des élèves.
3 Exercices en Python FENNI SALAH ©® 1992
LES STRUCTURES SIMPLES
Exercice 1
Compléter le tableau suivant par les valeurs finales des variables indiquées.
Instructions En python Valeurs
A  6 + 2 * 5 div 3 - 10 from random import*
A = 6 + 2 * 5 // 3 - 10
B = (5>2) or (8<8) and not(6==6)
X = int (10.5)
Y = round (10.5)
W = randint (1,6)
E = float ("025.38")
ch = "python"
L = len (ch[1:0])
P = "PYTHON".find("h".upper())
Ch = "information"
Ch = Ch[:0] + Ch[2:]
Ch = Ch[:len(Ch)-3] + Ch[len(Ch):]
print (A,B,X,Y,W,E,L,P,Ch,sep="n")
A = …………
B  (5>2) OU (8<8) ET Non (6=6) B = …………
X  Ent (10.5) X = …………
Y  Arrondi (10.5) Y = …………
W  Aléa(0,6) + 4 W = ………
E  Valeur ("025.38") E = …………
ch  "python"
L  Long (Sous_Chaîne (ch, 1, 0))
L = …………
P  Pos (Majus ("h"), "PYTHON") P = …………
Ch  "information"
Effacer (Ch, 0, 2)
Effacer (Ch, Long (Ch)-3, Long(Ch))
Ch = …………
Exercice 2
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui saisit trois nombres dans un ordre
donné et les affiche dans l’ordre opposé à l’entrée.
Algorithme Sortie_Inverse
Début
Ecrire ("A = "), Lire (A)
Ecrire ("B = "), Lire (B)
Ecrire ("C = "), Lire(C)
Ecrire (C, " ", B, " ", A)
Fin
#programme python
A=int(input ("A = "))
B=int(input ("B = "))
C=int(input ("C = "))
print (C, B, A)
Exercice 3
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui calcule et affiche le volume d'un
cylindre après saisie son rayon R et sa hauteur H.
Algorithme Cylindre
Début
Ecrire ("Donner le rayon : "), Lire(R)
Ecrire ("Donner la hauteur : "), Lire (H)
V  PI*R*R*H
Ecrire ("Volume = ", V)
Fin
#programme python
from math import*
R=float(input ("Donner le rayon : "))
H=float(input ("Donner la hauteur : "))
V = pi*R*R*H
print ("Volume = %.2f" %V)
#afficher le volume avec 2 chiffres après la virgule
4 Exercices en Python FENNI SALAH ©® 1992
Exercice 4
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui calcule la surface d'un rectangle de
dimensions données et affiche le résultat sous la forme
suivante : "La surface du rectangle dont la longueur
mesure .... m et la largeur mesure .... m, a une surface
égale à .... mètres carrés".
Algorithme Surface_rectangle
Début
Ecrire ("Largeur = "), Lire (LA)
Ecrire ("Longueur = "), Lire (LO)
S LA * LO
Ecrire ("La surface du rectangle dont la longueur mesure ", LO,
" m et la largeur mesure ", LA," m, a une surface égale à ", S,"
mètres carrés.")
Fin
Exercice 5
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui lit les dimensions d'une piscine, et
affiche son volume et la quantité d'eau nécessaire pour
la remplir.
Algorithme Piscine
Début
Ecrire ("Donner les dimensions de la piscine")
Lire (LO, LA, PR)
V  LO*LA*PR
EAU  V*1000
Ecrire ("Le volume = ", V)
Ecrire ("Quantité d'eau = ", EAU, " litres")
Fin
Exercice 6
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui lit les dimensions d'un trapèze et
affiche sa surface.
Algorithme Aire_Trapeze
Début
Ecrire ("Donner les dimensions du trapèze ")
Lire (H, B1, B2)
S H*(B1 + B2)
Ecrire ("La surface = ", S)
Fin
Exercice 7
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui fait la permutation de deux
variables A et B.
Algorithme Permut
Début
Lire (A, B)
AUX  A
A  B
B  AUX
Ecrire ("La nouvelle valeur de A est : ", A)
Ecrire ("La nouvelle valeur de B est : ", B)
Fin
Exercice 8
Proposer une marche à suivre qui fait, une permutation
circulaire à droite, des valeurs de trois variables A, B et C.
Par exemple : à partir de (A, B, C) = (10, 25, 4), on passe à
(A, B, C) = (4, 10, 25).
Algorithme Permut_Circulaire
Début
Lire (A, B, C)
AUX  A
A  C
C  B
B  AUX
Ecrire (A, " ", B, " ", C)
Fin
Exercice 9
Proposer une marche à suivre qui fait la permutation de
deux variables numériques X et Y, sans faire appel à
aucune variable intermédiaire.
Algorithme Permut
Début
Lire (X, Y)
X  X+Y
Y  X-Y
X  X-Y
Ecrire (X, " ", Y)
Fin
5 Exercices en Python FENNI SALAH ©® 1992
Exercice 10
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui fait calculer et afficher le quotient
et le reste de la division euclidienne de A par B.
Algorithme Division
Début
Ecrire ("A = "), Lire (A)
Ecrire ("B = "), Lire (B)
Q  A div B
R  A mod B
Ecrire ("Le quotient est ", Q, " et le reste est ", R)
Fin
Exercice 11
Ecrire un algorithme puis l’implémentation en Python
d'un programme qui lit une température en degrés
Celsius et affiche son équivalent en Fahrenheit.
Algorithme Temperature
Début
Ecrire ("Donner une température en °C : "), Lire (D)
F  9/5 * D + 32
Ecrire (D, " °C = ", F, " Fahrenheit")
Fin
Exercice 12
Ecrire un algorithme puis l’implémentation en Python
d'un programme permettant de déterminer et d'afficher
la conversion en mile marin d'une distance mesurée en
kilomètre.
Algorithme Mile_marin
Début
Ecrire ("Donner le nombre de Km : "), Lire (km)
Mm  km/1.852
Ecrire (km," km = ", mm," miles marins")
Fin
Exercice 13
Ecrire un algorithme puis l’implémentation en Python
d'un programme qui permet de convertir et d'afficher en
octets, kilo octets, méga octets et giga octets un nombre
donné en bits.
Algorithme Conversion
Début
Ecrire ("Nombres de bits = "), Lire (bit)
Octet  bit/8
Kilo  octet/1024
Mega  kilo/1024
Giga  mega/1024
Ecrire (octet, kilo, mega, giga)
Fin
Exercice 14
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui convertit en heures, minutes et
secondes, une durée T donnée en secondes. Il affiche le
résultat sous la forme digitale comme celle d'une montre
électronique (hh : mn : ss).
Algorithme Temps
Début
Ecrire ("Donner une durée en secondes "), Lire (T)
H  T div 3600
M  (T div 60) mod 60
S  T mod 60
Ecrire (H, " : ", M, " : ", S)
Fin
Exercice 15
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui conjugue un verbe du premier
groupe au futur simple. On ne traite pas les verbes
irréguliers.
Algorithme Futur
Début
Ecrire ("Donner un verbe du 1er groupe : ")
Lire (verbe)
Ecrire ("Je ", verbe, "ai")
Ecrire ("Tu ", verbe, "as")
Ecrire ("Il ou elle ", verbe, "a")
Ecrire ("Nous ", verbe, "ons")
Ecrire ("Vous ", verbe, "ez")
Ecrire ("Ils ou elles ", verbe, "ont")
Fin
6 Exercices en Python FENNI SALAH ©® 1992
Exercice 16
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui calcule et affiche, l'intérêt et la
valeur acquise par une somme placée en épargne
pendant 5 ans à intérêt simple.
Algorithme Interet_Simple
Début
Ecrire ("Donner la somme initiale : "), Lire (SOM)
Ecrire ("Donner le taux d'intérêt : "), Lire (TAUX)
INTERET  (SOM * TAUX/100) * 5
VA  SOM + INTERET
Ecrire ("Après 5 ans la somme sera = ", VA)
Fin
Exercice 17
On sait qu'avec un réservoir de L litres, une voiture a
parcouru Y km. Ecrire un algorithme puis
l’implémentation en Python d'un programme, qui fait lire
les données nécessaires et fait calculer et afficher le taux
de consommation aux 100 km de cette voiture.
Algorithme Consommation
Début
Ecrire ("Nombre de Km parcouru : "), Lire(Y)
Ecrire ("Nombre de litres d'essence : "), Lire (L)
TAUX  (L*100)/Y
Ecrire ("Taux de consommation est = ", TAUX, "%")
Fin
Exercice 18
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui affiche la résistance équivalente à
trois résistances R1, R2, R3.
- si les résistances sont branchées en série: Rser =
R1+R2+R3
- si les résistances sont branchées en parallèle: 1/Rpar =
1/R1 + 1/R2 + 1/R3
Algorithme Résistance
Début
Ecrire ("Donner les trois résistances : ")
Lire (R1, R2, R3)
Rser  R1 + R2 + R3
Rpar  1/ (1/R1 + 1/R2 + 1/R3)
Ecrire ("Résistance résultante sérielle : ", Rser)
Ecrire ("Résistance résultante parallèle : ", Rpar)
Fin
Exercice 19
On se propose de saisir un entier N de trois chiffres non
nuls, de déterminer et d'afficher tous les nombres qui
peuvent être formés par les chiffres de N.
Exemple : pour N=427
Les nombres formés par les chiffres de N sont : 427, 472,
724, 742, 247, 274.
Algorithme NBR_3
Début
Ecrire ("Saisir un entier formé de 3 chiffres non nuls : ")
Lire (n)
c  n div 100
d  n mod 100 div 10
u  n mod 10
r1  c*100+u*10+d
r2  u*100+d*10+c
r3  u*100+c*10+d
r4  d*100+c*10+u
r5  d*100+u*10+c
Ecrire (n, r1, r2, r3, r4, r5)
Fin
Exercice 20
Ecrire un algorithme puis l’implémentation en Python
d'un programme, qui fait entrer deux entiers A et B et fait
calculer et afficher leur inf et leur sup. Utiliser une
formule mathématique donnant directement le résultat.
Algorithme Sup_Inf
Début
Ecrire ("A = "), Lire (A)
Ecrire ("B = "), Lire (B)
SUP  (A + B + abs (A - B)) div 2
INF  (A + B - abs (A - B)) div 2
Ecrire ("Valeur sup = ", SUP, " Valeur inf = ", INF)
Fin
7 Exercices en Python FENNI SALAH ©® 1992
Exercice 21
On se propose d'écrire un algorithme qui calcule le
nombre de pixels et le poids d'une image numérique en
méga octet (MO), d'une dimension (hauteur, largeur)
exprimées en pouces et d'une résolution en dpi (points
par pouce).
NB.
- La résolution indique le nombre de points sur une
unité de longueur de l'image.
- Le nombre de pixels dans une image = hauteur *
résolution* longueur *résolution
- L'image est codée en 24 bits/pixel ou 48 bits/pixel
c'est à dire 8 ou 16 bits par canal R (rouge),
V (vert) et B (bleu).
- Le nombre total d'octets dans l'image (poids) =
Nombre de pixels * nombre d'octets par pixel.
Algorithme IMAGE
Début
Ecrire ("Entrer la largeur de l'image: "), Lire(l)
Ecrire ("Entrer la hauteur de l'image: "), Lire (h)
Ecrire ("Entrer la résolution de l'image: "), Lire(r)
Ecrire ("Entrer le codage de l'image: "), Lire(c)
n  l*r*h*r
p  (n*c) / (1024*1024)
Ecrire (n, p)
Fin
Exercice 22
Ecrire un programme en Python, qui calcule et affiche la
distance DIST entre deux points A et B du plan dont les
coordonnées (XA, YA) et (XB, YB) sont entrées au clavier
comme entiers.
#Program Distance ;
from math import*
print ("Entrez Les Coordonnées Du Point A : Xa,Ya ")
Xa=int(input ())
Ya=int(input ())
print ("Entrez Les Coordonnées Du Point B : Xb,Yb ")
Xb=int(input ())
Yb=int(input ())
Dist = sqrt ((Xa-Xb)**2+(Ya-Yb)**2)
print ("La Distance Entre A Et B Est %.2f" %Dist)
Exercice 23
Ecrire un programme en Python qui calcule le prix TTC
d'un article à partir du prix net et du pourcentage de TVA
à ajouter. Utiliser la formule suivante :
#Program Prix_TTC ;
print ("Entrez Le Prix Net De L'article : ")
Pnet=int(input ())
print ("Entrez Le Taux De La Tva (En %) : " )
Tva=int(input ())
Pttc = Pnet+Pnet*Tva/100
print ("Le Prix Ttc Est %.2f" %Pttc)
Exercice 24
Deux trains, distants de 60 km, roulent l'un vers l'autre
sur le même itinéraire.
• Le train A avance à une vitesse de 70 km/h.
• Le train B avance à une vitesse de 55 km/h.
Ecrire un programme en Python, qui permet de calculer
le temps où les deux trains vont se rencontrer ?
t=60/(70+55)
print ("le temps de croisement de 2 trains est :",t, "heures")
print ("distance parcourue par le train A est :",70*t,"km")
print ("distance parcourue par le train B est :",55*t,"km")
8 Exercices en Python FENNI SALAH ©® 1992
LES STRUCTURES CONDITIONNELLES
Exercice 1
Ecrire un programme en Python qui affiche le plus
petit de deux nombres A et B.
#Program Min2
print ("Saisir deux entiers : ")
a=int(input ())
b=int(input ())
if a<b :
min = a
else:
min = b
print ("La plus petite valeur est : ", min)
Exercice 2
Ecrire un programme en Python permettant d'obtenir
le maximum de trois nombres donnés.
#Program Max3
print ("Saisir trois entiers : ")
a=int(input ())
b=int(input ())
c=int(input ())
maxi=a
if b>maxi :
maxi = b
if c>maxi :
maxi = c
print ("La plus grande valeur est : ", maxi)
#Solution 2 Program Max3
print ("Saisir trois entiers : ")
a=int(input ())
b=int(input ())
c=int(input ())
if (a>b)and(a>c):
maxi=a
elif b>c :
maxi = b
else :
maxi = c
print ("La plus grande valeur est : ", maxi)
Exercice 3
Ecrire un programme en Python qui affiche la racine
carrée d'un réel donné.
#Program Racine
from math import*
print ("Saisir un réel :",end=" ")
x=float(input ())
if x >= 0 : print ("Racine carrée ", x," = %.2f" %sqrt(x))
else: print ("Donnée incorrecte")
Exercice 4
Ecrire un programme en Python qui calcule et affiche
l'aire d'un triangle dont il faut donner les longueurs
des trois côtés.
Utilisez la formule :
S2
= P(P-A)(P-B)(P-C)
où A, B, C sont les longueurs des trois côtés et P le
demi-périmètre du triangle.
#Program Aire_Triangle
from math import*
print ("Donner 3 réels positifs :")
a=float(input ())
b=float(input ())
c=float(input ())
if (a+b==c) or (a+c==b) or (b+c==a):
print ("Il ne s'agit pas d'un triangle")
else:
P = (a+b+c)/2
S = sqrt (P*(P-a)*(P-b)*(P-c))
print ("Aire de triangle = %.2f" %S)
9 Exercices en Python FENNI SALAH ©® 1992
Exercice 5
Sans utiliser la fonction prédéfinie ABS, écrire un
programme en Python qui détermine et affiche la
valeur absolue de (a-b).
#Program Abs_diff
print ("Donner deux entiers : ")
a=int(input ())
b=int(input ())
if (a-b) < 0 :
z=b-a
else :
z=a-b
print ("valeur absolue de",a,"-",b, "=", z)
Exercice 6
Ecrire un programme en Python qui saisit un nombre
entier et détecte si ce nombre est pair ou impair.
#Program Parite
print ("Donner un entier : ", end="")
n=int(input ())
if n % 2 == 0 :
print (n,"est pair")
else :
print (n,"est impair")
Exercice 7
Ecrire un programme en Python, permettant de
simuler un jeu entre deux joueurs régi par le principe
suivant :
Deux joueurs A et B se cachent la main droite derrière
le dos. Les deux joueurs se montrent la main droite en
même temps, en choisissant de tendre un certain
nombre de doigts (de 1 à 5). Si la somme des nombres
de doigts montrés est paire, le premier joueur a
gagné, sinon c'est le second.
#Program Chez_la_fourmi
print ("Nombre de doigts montrés par le joueur A")
a=int(input ())
print (20*"n")
print ("Nombre de doigts montrés par le joueur B ")
b=int(input ())
if (a+b)%2 == 0 :
print ("Le joueur A gagne.")
else :
print ("Le joueur B gagne.")
Exercice 8
Ecrire un programme en Python, qui saisit le prénom
d'une personne et son titre (Mr, Mlle ou Mme), puis
affiche l'invite suivante :
"Titre"foulen", soyez le bienvenu"
Ou
"Titre"foulena", soyez la bienvenue"
#Program Invite
print ("Titre = ",end="") ; titre=input ()
print ("Votre nom = ",end="") ; foulen=input ()
if titre == "Mr":
term1 = "e"
term2 = ""
elif (titre == "Mlle") or (titre=="Mme"):
term1 = "a"
term2 = "e"
print (titre," ",foulen,", soyez l", term1," bienvenu", term2,sep="")
Exercice 9
Ecrire un programme en Python qui saisit deux entiers
A et B, teste si A est supérieur, inférieur ou égale à B
puis affiche le résultat.
#Program Sup_Inf
print ("Saisir deux entiers : ")
a=int(input ())
b=int(input ())
if a>b :
sie = " est supérieur à "
elif a<b :
sie = " est inférieur à "
else :
sie = " est égal à "
print (a, sie, b)
10 Exercices en Python FENNI SALAH ©® 1992
Exercice 10
Ecrire un programme en Python qui ordonne dans le
sens croissant, en échangeant leur valeur si
nécessaire, deux entiers saisis au clavier.
#Program Ordre
print ("Saisir deux entiers : ")
e1=int(input ())
e2=int(input ())
petit = e1
grand = e2
if e1>e2 :
petit = e2
grand = e1
print (petit, grand)
Exercice 11
Ecrire un programme en Python, qui fait lire trois
entiers A, B et C, les permute de façon à les classer par
ordre croissant puis affiche le résultat.
#Program Tri
print ("a =",end=" ") ; a=int(input ())
print ("b =",end=" ") ; b=int(input ())
print ("c =",end=" ") ; c=int(input ())
if a>b :
aux=a
a=b
b=aux
if b>c :
aux=b
b=c
c=aux
if a>b :
aux=a
a=b
b=aux
print (a, b, c)
Exercice 12
Ecrire un programme en Python, qui fait résoudre
dans IR l'équation ax+b=0 pour tout couple de réels
(a, b) donné.
#Program Equa_1d
print ("a =",end=" ") ;a=float(input ())
print ("b =",end=" ") ;b=float(input ())
if a != 0 :
print ("x = ", -b/a)
elif b == 0 :
print ("Toute IR")
else :
print ("Ensemble vide {}")
Exercice 13
Ecrire un programme en Python, qui fait résoudre
dans IR l'équation ax2
+bx+c=0 pour tout triplet de
réels (a, b, c) donné.
#Program Equa_2d
from math import*
print ("a =",end=" ") ; a=float(input ())
print ("b =",end=" ") ; b=float(input ())
print ("c =",end=" ") ; c=float(input ())
if a == 0 : #équation 1er degré
if b == 0 :
if c == 0 :
print ("Toute IR")
else:
print ("Ensemble vide {}")
else:
print ("x = ", -c/b)
else:
delta = b**2 - 4*a*c
if delta == 0 : #solution réelle double
print ("x1=x2= ", -b/(2*a))
elif delta > 0: #deux solutions réelles
print ("x1= ", (-b-sqrt (delta))/ (2*a))
print ("x2= ", (-b+sqrt (delta))/ (2*a))
else: print ("Deux solutions complexes")
11 Exercices en Python FENNI SALAH ©® 1992
Exercice 14
Ecrire un programme en Python, qui fait résoudre
dans IR l'inéquation ax+b<0 pour tout couple de réels
(a, b) donné.
#Program Inequation
from math import*
print ("a =",end=" ") ; a=float(input ())
print ("b =",end=" ") ; b=float(input ())
if a > 0 :
print ("x <",-b/a)
elif a<0:
print ("x >",-b/a)
elif b<0:
print ("Toute IR")
else:
print ("Impossible")
Exercice 15
Ecrire un programme en Python qui affiche selon le
cas, la nature du caractère (consonne, voyelle, chiffre
ou symbole) correspondant à une touche saisie.
#Program Touche version1
print ("Taper sur une touche"); c=input ()
if ("a"<=c<="z")or("A"<=c<="Z"):
if c.upper() in {"A","E","I","U","O","Y"}:
nature = "Voyelle"
else:
nature = "Consonne"
elif "0"<=c<="9":
nature = "Chiffre"
else:
nature = "Symbole"
print (nature)
#Program Touche version2
print ("Taper sur une touche"); c=input ()
match c:
case c if ("a"<=c<="z")or("A"<=c<="Z"):
if c.upper() in {"A","E","I","U","O","Y"}:
nature = "Voyelle"
else:
nature = "Consonne"
case c if "0"<=c<="9":
nature = "Chiffre"
case _:
nature = "Symbole"
print (nature)
Exercice 16
Ecrire un programme en Python, qui fait lire dans cet
ordre : un réel, un opérateur arithmétique (+, -, *, /) et
un autre réel. A chaque opérateur valide correspond
une opération arithmétique qu'il faut exécuter et
afficher le résultat ou un message d'erreur, le cas
échéant.
#Program Calculette version1
a=float(input ("a="))
b=float(input ("b="))
op=input ("opérateur=")
if op=="+" :
print (a,op,b,"=",a+b )
elif op=="-" :
print (a,op,b,"=",a-b)
elif op=="*" :
print (a,op,b,"=",a*b)
elif op=="/" :
if b == 0: print ("impossible")
else: print (a,op,b,"=",a/b)
else:
print ("Opérateur incorrect")
12 Exercices en Python FENNI SALAH ©® 1992
#Program Calculette version2
a=float(input ("a="))
b=float(input ("b="))
op=input ("opérateur=")
match op:
case "+" : print (a,op,b,"=",a+b )
case "-" : print (a,op,b,"=",a-b)
case "*" : print (a,op,b,"=",a*b)
case "/" :
if b == 0: print ("impossible")
else: print (a,op,b,"=",a/b)
case _: print ("Opérateur incorrect")
Exercice 17
Ecrire un programme en Python, qui permet de saisir
la moyenne annuelle d'un élève et affiche la décision
du conseil de classe, la mention adéquate dans le cas
où l'élève est admis :
18 ≤ moy Excellent
16 ≤ moy < 18 Très Bien
14 ≤ moy < 16 Bien
12 ≤ moy < 14 Assez Bien
10 ≤ moy < 12 Passable
Moy < 10 Redouble
#Program Bulletin
print ("Donner la moyenne annuelle : ")
moy=float(input ())
if moy < 10:
dec= "Redouble"
me= ""
else:
dec= "Admis"
if moy < 12:
me= "Passable"
elif moy < 14:
me= "Assez bien"
elif moy < 16:
me= "Bien"
elif moy < 18:
me= "Très bien"
else:
me= "Excellent"
print ("#Moyenne =", moy,"#Décision =", dec,"#Mention =", me)
Exercice 18
Ecrire un programme en Python qui saisit le numéro
du mois et affiche le nombre de jours de ce mois. Pour
le cas de février, on lit l'année, si l'année est bissextile,
le nombre de jours est 29, sinon c'est 28 jours.
#Program nbr_jours_mois version1
print ("N° du mois : ") ; m=int(input ())
if m in [1,3,5,7,8,10,12] :
print ("31 jours")
elif m in [4,6,9,11] :
print ("30 jours")
elif m==2 :
print ("Année : "); a=int(input ())
if ((a%4==0)and(a%100!=0))or(a%400==0):
print ("29 jours")
else: print ("28 jours")
else : print ("numéro du mois incorrect")
#Program nbr_jours_mois version2
print ("N° du mois : ") ; m=int(input ())
match m:
case 1|3|5|7|8|10|12: print ("31 jours")
case 4|6|9|11: print ("30 jours")
case 2:
print ("Année : "); a=int(input ())
if ((a%4==0)and(a%100!=0))or(a%400==0):
print ("29 jours")
else: print ("28 jours")
case _: print ("numéro du mois incorrect")
13 Exercices en Python FENNI SALAH ©® 1992
Exercice 19
Ecrire un programme en Python, qui saisit une date
sous la forme jj/mm/aaaa (chaîne de 10 caractères) et
l'affiche décodée (jj Mois aaaa).
Exemple : 10/05/2007
donne 10 Mai 2007.
#Program Dates
print ("Saisir une date sous la forme jj/mm/aaaa")
date=input ()
jj= date[0:2] ; aa = date[6:] ; mm=int(date[3:5])
match mm :
case 1 : mois = "Janvier"
case 2 : mois = "Février"
case 3 : mois = "Mars"
case 4 : mois = "Avril"
case 5 : mois = "Mai"
case 6 : mois = "Juin"
case 7 : mois = "Juillet"
case 8 : mois = "Août"
case 9 : mois = "Septembre"
case 10 : mois = "Octobre"
case 11 : mois = "Novembre"
case 12 : mois = "Décembre"
print (jj,mois,aa)
Exercice 20
Ecrire un programme en Python, qui fait lire une date
initiale JI/MI/AI et une date finale JF/MF/AF et qui fait
calculer et afficher la durée (exprimée en années,
mois et jours) qui les sépare.
#Program Anciennete
print ("Donner la date initiale : ")
ji=int(input ())
mi=int(input ())
ai=int(input ())
print ("Donner la date finale : ")
jf=int(input ())
mf=int(input ())
af=int(input ())
if ji > jf:
jf = jf + 30
mf = mf - 1
if mi > mf:
mf = mf + 12
af = af - 1
jj = jf - ji
mm = mf - mi
aa = af - ai
print (aa, "années",mm, "mois", jj, "jours")
Exercice 21
Ecrire un programme en Python, qui saisit une date
quelconque (jj, mm, aa) et affiche la date du
lendemain.
#Program Lendemain solution1
print ("jour = ",end="");j=int(input ())
print ("mois = ",end="");m=int(input ())
print ("année = ",end="");a=int(input ())
max=30
if m in [1,3,5,7,8,10]: max=31
if m==2:
max=28
if a%4==0:
max=29
j=j+1
if j>max:
j=1
m=m+1
if m>12:
m=1
a=a+1
print ("la date du lendemain est la suivante :")
print ("*********",j,"/",m,"/",a,"********")
14 Exercices en Python FENNI SALAH ©® 1992
#Program Lendemain solution2
print ("jour = ",end="");j=int(input ())
print ("mois = ",end="");m=int(input ())
print ("année = ",end="");a=int(input ())
match m:
case 1|3|5|7|8|10|12: dj=(j==31)
case 4|6|9|11: dj=(j==30)
case 2:
if a%4==0: dj=(j==29)
else : dj=(j==28)
if dj:
j=1
if m==12:
m=1
a=a+1
else:
m=m+1
else:
j=j+1
print ("le jour suivant est :",j,"/",m,"/",a)
#Program Lendemain solution3
print ("jour = ",end="");j=int(input ())
print ("mois = ",end="");m=int(input ())
print ("année = ",end="");a=int(input ())
if (j==31) and (m==12):
j=1; m=1; a=a+1
elif (m in [1,3,5,7,8,10]) and (j==31)
or(m in[4,6,9,11]) and (j==30)
or(m==2) and (j==28) and (a % 4!= 0)
or(m==2) and (j==29) and (a % 4 == 0):
j=1; m=m+1
else:
j=j+1
print ("la date du lendemain est la suivante :")
print ("*********",j,"/",m,"/",a,"********")
Exercice 22
Ecrire un programme en Python, qui traduit en toutes
lettres un entier naturel donné entre 0 et 99.
Exemples :
10  Dix
21  Vingt et un
85  Quatre vingt cinq
#Program T_lettres
print ("Donner un entier composé d'au maximum deux chiffres")
n=int(input ())
d = n // 10
u = n % 10
message = ""
if d==2: message = "vingt"
if d==3: message = "trente"
if d==4: message = "quarante"
if d==5: message = "cinquante"
if d==6: message = "soixante"
if d==7: message = "soixante"
if d==8: message = "quatre-vingt"
if d==9: message = "quatre-vingt"
if 2<=d<=9:
if u==1:
message = message+"-et-"
elif (u!=0) or (d==7) or (d==9):
message = message+"-"
if d in [1,7,9]:
if u==0: message = message+"dix"
if u==1: message = message+"onze"
15 Exercices en Python FENNI SALAH ©® 1992
if u==2: message = message+"douze"
if u==3: message = message+"treize"
if u==4: message = message+"quatorze"
if u==5: message = message+"quinze"
if u==6: message = message+"seize"
if u==7: message = message+"dix-sept"
if u==8: message = message+"dix-huit"
if u==9: message = message+"dix-neuf"
else:
if u==1: message = message+"un"
if u==2: message = message+"deux"
if u==3: message = message+"trois"
if u==4: message = message+"quatre"
if u==5: message = message+"cinq"
if u==6: message = message+"six"
if u==7: message = message+"sept"
if u==8: message = message+"huit"
if u==9: message = message+"neuf"
print (message)
Exercice 23
Ecrire un programme en Python, qui permet de
déterminer le jour de la semaine correspondant une
date donnée.
Exemple : le 10/05/2007 est un jeudi.
#Program jour_semaine
print ("Donner le jour"); day=int(input ())
print ("Donner le mois"); month=int(input ())
print ("Donner l'année"); year=int(input ())
dayyear=(year-1)*365 + ((year-1)//4)
daymonth=0
for cm in range (1,month):
match cm:
case 1|3|5|7|8|10|12 : daymonth=daymonth+31
case 4|6|9|11 : daymonth=daymonth+30
case 2 :
if (year%4==0)and((year%100!=0)or(year%400==0)):
daymonth=daymonth+29
else: daymonth=daymonth+28
weekday=(dayyear+daymonth+day)%7
match weekday:
case 1:jj="Dimanche"
case 2:jj="Lundi"
case 3:jj="Mardi"
case 4:jj="Mercredi"
case 5:jj="Jeudi"
case 6:jj="Vendredi"
case 7:jj="Samedi"
print ("Le jour correspondant est ", jj)
Exercice 24
Ecrire un programme en Python qui lit deux valeurs
entières (A et B) au clavier et qui affiche le signe du
produit de A et B sans faire la multiplication.
#Program Signe_produit
print ("Introduisez deux nombres entiers :")
A=int(input ())
B=int(input ())
if (A==0) or (B==0):
print ("Le produit",A,"*",B,"est nul")
elif ((A>0) and (B>0)) or ((A<0) and (B<0)):
print ("Le signe du produit",A,"*",B,"est positif")
else:
print ("Le signe du produit",A,"*",B,"est négatif")
16 Exercices en Python FENNI SALAH ©® 1992
Exercice 25
Ecrire un programme en Python qui lit deux valeurs
entières (A et B) au clavier et qui affiche le signe de la
somme de A et B sans faire l'addition.
#Program Signe_somme
print ("Introduisez deux nombres entiers :")
A=int(input ())
B=int(input ())
if (A==0) and (B==0):
print ("La somme",A,"+",B,"est zéro")
elif
((A>0)and(B>0))or((A<0)and(B>0)and(abs(A)<abs(B)))or((A>0)and(B
<0)and(abs(A)>abs(B))):
print ("Le signe de la somme",A,"+",B,"est positif")
else:
print ("Le signe de la somme",A,"+",B,"est négatif")
Exercice 26
Considérez la séquence d'instructions suivante:
Si (A>B)
Alors Ecrire ("premier choix")
Sinon Si (A>10)
Alors Ecrire ("deuxième choix")
Fin Si
Si (B<10)
Alors Ecrire ("troisième choix")
Sinon Ecrire ("quatrième choix")
Fin Si
Déterminez les réponses sur l’écran pour chacun des
couples de nombres suivants :
 A=10 et B=5
 A=5 et B=5
 A=5 et B=10
 A=10 et B=10
 A=20 et B=10
 A=20 et B=20
A=10 et B=5 premier choix
troisième choix
A=5 et B=5 troisième choix
A=5 et B=10 quatrième choix
A=10 et B=10 quatrième choix
A=20 et B=10 premier choix
quatrième choix
A=20 et B=20 deuxième choix
quatrième choix
Exercice 27
Considérez la séquence d'instructions suivante:
Si (A>B)
Alors Si (A>10)
Alors Ecrire ("premier choix")
Sinon Si (B<10)
Alors Ecrire ("deuxième choix")
Sinon Si (A=B)
Alors Ecrire ("troisième choix")
Sinon Ecrire ("quatrième choix")
FinSi
Pour quelles valeurs de A et B s’affiche ou non le
message : premier choix, deuxième choix, troisième
choix, quatrième choix ?
"premier choix" apparaît pour (A>B) et (A>10)
"deuxième choix" apparaît pour (10 A>B)
"troisième choix" apparaît pour (10 A>B 10) et (A=B)
10>10 impossible
A>B et A=B impossible => "troisième choix"
n'apparaît jamais
"quatrième choix" apparaît pour (10 A>B 10) et (A B)
10>10 impossible => "quatrième choix"
n'apparaît jamais
Exercice 28
Écrire un programme en Python qui permet de saisir
un temps (heure et minute) lui ajoute 5 minutes puis
l'affiche.
Exemples :
• heure :10 minute :20
après 5 minutes : 10:25
• heure :10 minute:57
après 5 minutes : 11:02
• heure :23 minute:55
après 5 minutes : 00:00
#Program plus5min
print ("Heure : ") ;h=int(input ())
print ("minute : ") ;m=int(input ())
if m<55:
m = m+5
elif h!=23:
h = h+1
m = m+5-60
else:
h = 0
m = m-55
17 Exercices en Python FENNI SALAH ©® 1992
print ("Après 5 min :")
if h<10:
print ("0",h,sep="",end="")
else:
print (h,end="")
print (":",end="")
if m<10:
print ("0",m,sep="")
else:
print (m)
Exercice 29
Ecrire un programme en Python, qui demande à
l'utilisateur trois valeurs entières et affiche la
deuxième plus grande valeur.
Exemples : pour 9 ; 5 ; 7
Le programme affiche : la deuxième plus grande
valeur est 7
#Program deuxieme_max
print ("Introduisez trois nombres entiers :")
a=int(input ())
b=int(input ())
c=int(input ())
max1=a
max2=b
if a<b:
max1 = b
max2 = a
if c>max1 :
max2 = max1
elif c>max2:
max2 = c
print ("la deuxième plus grande valeur :",max2)
Exercice 30
Un nombre de Niven est un entier qui est divisible par
la somme de ses chiffres.
Exemple : 112 est un nombre Niven.
En effet 112 est divisible par la somme de ses chiffres
qui est 4 (1+1+2=4)
Ecrire un programme en Python, qui permet de lire un
entier N (<=999), puis de vérifier et d’afficher s’il est
un nombre de Niven ou non.
#PROGRAM Niven
print ("Donner un entier <= 999 : ")
n=int(input ())
c = n//100
d = n//10%10
u = n%10
som = c+d+u
verif = n%som == 0
print ("Niven : ", verif)
18 Exercices en Python FENNI SALAH ©® 1992
LES STRUCTURES ITERATIVES
Exercice 1
Ecrire un programme en Python qui affiche l'alphabet en
majuscule, d'abord à l'endroit, puis à l'envers, après un
passage à la ligne.
#Program Alphabet
for c in range(ord("A"),ord("Z")+1):
print (chr(c),end=" ")
print ()
for c in range(ord("Z"),ord("A")-1,-1):
print (chr(c),end=" ")
Exercice 2
Ecrire un programme en Python qui affiche la table de
multiplication par 3, pour les entiers de 1 à 10.
#Program Table3
n = 10
for i in range(1,n+1):
print ("3 *",i,"=",3*i)
Exercice 3
Ecrire un programme en Python qui calcule et affiche la
somme et le produit, des 20 premiers entiers (de 1 à 20).
#Program Somme_Produit
s= 0
p= 1
for i in range (1,21):
s = s + i
p = p * i
print ("Somme =", s)
print ("Produit = %.2f" %p)
Exercice 4
Considérons la suite définie par la relation :
Un+1 = Un + 3 et U1 = 2
On veut calculer la somme de 100 premiers termes de
cette suite. Donner deux solutions distinctes en utilisant
les boucles : POUR et TANT QUE.
#Program Suite
som = 0
u = 2
for i in range(1,101):
som = som + u
u = u + 3
print (som)
#Program Suite
som = 0
u = 2
i = 1
while (i<=100):
som = som + u
u = u+3
i = i+1
print (som)
Exercice 5
Ecrire un programme en Python qui affiche la table de
Pythagore (table de multiplication) pour les 9 premiers
nombres entiers.
#Program Pythagore
n=9
for i in range(1,n+1):
for j in range(1,n+1):
print (i * j,end=" ")
print ()
19 Exercices en Python FENNI SALAH ©® 1992
Exercice 6
Ecrire cinq programmes Python permettant d’afficher les
triangles d’étoiles suivants :
Exemple : (pour nL=5)
* ********* * *****
*** ******* ** ****
***** ***** *** ***
******* *** **** **
********* * ***** *
Ecrire deux programmes Python permettant d’afficher les
pyramides de nombres suivants :
Exemple : (pour nL=6)
1
232
34543
4567654
567898765
67890109876
1
121
12321
1234321
123454321
12345654321
#Program Pyramide1
n=5
for i in range(0,n):
for j in range(i+1,n):
print (end=" ")
for j in range(-i,i+1):
print ("*",end="")
print ()
Exercice 7
Ecrire un programme en Python qui permet de calculer et
afficher la moyenne de notes fournies au clavier avec un
"dialogue" se présentant ainsi :
Combien de notes : 4
Note 1 : 12
Note 2 : 15.25
Note 3 : 13.5
Note 4 : 8.5
Moyenne de ces 4 notes : 12.31
#Program Moy_Notes
print ("Combien de notes : ")
n=int(input ())
s=0
for i in range(1,n+1):
print ("Note",i, ":")
note=float(input ())
s = s+note
print ("Moyenne de ces "+str(n)+" notes : %.2f" %(s/n))
Exercice 8
Ecrire un programme en Python faisant calculer et
afficher le factoriel d’un entier naturel N donné. Sachant
que (pour N>0) :
N ! = N x (N-1) x (N-2) x ...... 3 x 2 x 1.
#Program Factoriel
print ("Saisir un entier")
n=int(input ())
fact = 1
for i in range(2,n+1):
fact = fact * i
print (n, "!=", fact)
Exercice 9
Le "jeu du nombre mystérieux" consiste à jouer contre
l'ordinateur comme suit : L'ordinateur choisit, au hasard,
un entier entre 1 et 100 et on doit le trouver en 7 essais
au maximum grâce aux indices "C'est grand" et "C'est
petit". Au moment venu on affichera "Bravo vous avez
gagné !!". Si le nombre d'essais est atteint sans trouver le
nombre mystérieux, le programme affichera alors "Perdu,
le nombre cherché est : ", suivie du nombre à trouver.
Ecrire un programme en Python pour s'amuser avec
l'ordinateur.
#Program Jeu
from random import*
while True:
nc = randint (1,100) ; essai = 0 ; np=0
while (np!=nc)and(essai!=7):
essai = essai+1
print ("Essai numéro", essai, "Votre nombre : ")
np=int(input ())
if np > nc : print ("C'est grand")
elif np < nc: print ("C'est petit")
else: print ("Bravo vous avez gagné !!")
if np!=nc:
print ("Perdu, le nombre cherché est : ", nc)
print ("Voulez vous jouer encore ? (o/n)") ; rep=input ()
if rep!="o":
break
20 Exercices en Python FENNI SALAH ©® 1992
Exercice 10
Ecrire un programme en Python qui permet de saisir un
entier n, de déterminer et d'afficher tous ses chiffres qui
le divisent.
Exemple : pour n = 2376 alors les chiffres 2, 3 et 6 seront
affichés.
Exercice 10
#Program Diviseurs
print ("Donner un entier")
n=int(input ())
m=n
while m!=0:
r= m%10
m= m//10
if (n%r == 0):
print (r,end=" ")
Exercice 11
Ecrire un programme en Python, qui détermine toutes
les manières possibles d'obtenir un total de 15 en
ajoutant trois entiers choisis entre 1 et 9.
#Program Som_15
for i in range(1,10):
for j in range(1,10):
for k in range(1,10):
if (i+j+k==15):
print (i, j, k)
Exercice 12
On se propose d'afficher un histogramme à l'aide des
lettres A, B et C comme celui de l'exemple ci-dessous.
Ecrire un programme en Python qui saisit le nombre de
A, le nombre de B et le nombre de C puis affiche
l'histogramme correspondant. Les nombres sont des
entiers naturels inférieurs ou égaux à 15.
Exemple d'exécution : Entrer trois nombres entiers
compris entre 0 et 15 : 4,7, 2
A
A
A
A
B
B
B
B
B
B
B
C
C
#Program Histogramme
print ("Entrer trois entiers compris entre 0 et 15")
a=int(input ())
b=int(input ())
c=int(input ())
max=a
if b>max : max=b
if c>max : max=c
for i in range(max,0,-1):
if i>a : print (end=" ")
else: print ("A",end=" ")
if i>b: print (end=" ")
else: print ("B",end=" ")
if i>c : print () # print (end="n")
else: print ("C") # print ("C",end="n")
Exercice 13
Ecrire un programme en Python, qui permet de
déterminer la somme des chiffres d'un nombre entier
donné (exemple : pour N= 25418, on aura 2+5+4+1+8 =
20).
#Program Som_Chiffres
print ("Donner un entier")
n=int(input ())
som=0
while n!=0:
r = n%10
som = som+r
n = n//10
print ("La somme de chiffres est :", som)
Exercice 14
Un entier naturel de trois chiffres est dit cubique s'il est
égal à la somme des cubes de ses trois chiffres.
Exemple : 153 est cubique
car 153 = 13 + 53 + 33
Ecrire un programme en Python qui cherche et affiche
tous les entiers cubiques de trois chiffres.
#Program Nbr_Cube
for k in range(100,1000):
c = k//100
d = (k//10)%10
u = k%10
if (u*u*u+d*d*d+c*c*c) == k:
print (k, "est un nombre cubique")
21 Exercices en Python FENNI SALAH ©® 1992
Exercice 15
Ecrire un programme en Python, qui calcule et affiche
les sommes suivantes :
• S1 = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n
• S2 = 1 + 1/3 + 1/5 + ... + 1/n
• S3 = -1/2 - 1/4 - 1/6 - ... - 1/(n-1)
Avec n, un entier naturel impair donné.
#Program Somme
valide=False
while valide==False:
print ("Saisir un entier impair :")
n=int(input ())
valide=(n%2) != 0
s1=0; s2=0; s3=0
for i in range(1,n+1):
if i%2 !=0: s2 = s2 + 1/i
else: s3 = s3 - 1/i
s1= s2 - s3
print ("%.2f"%s1, "%.2f"%s2,"%.2f"%s3)
Exercice 16
On donne un entier naturel n strictement positif et on
définit la suite de Syracuse par:
0
1
1
2
3 1
k k
k k
S n
S S div
S S
−
−
=


=


= +

Ecrire un programme en Python qui fait afficher les
termes de cette suite commençant par le
terme S0=N jusqu'au premier 1 obtenu.
#Program Syracuse
n=int(input ("Saisir un entier > 0 : "))
S=n
print (S,end=" ")
while S!=1:
if S%2 == 0:
S= S // 2
else:
S= 3*S+1
print (S,end=" ")
Exercice 17
Si nous lançons 3 dés, le total des points est compris
entre 3 et 18. Quelle est la probabilité d'avoir un total
de 12 ?
Ecrire un programme en Python, qui répond à cette
question en simulant 100 lancers successifs.
#Program Probabilite
from random import*
n = 12; essai = 100
cumul = 0
for i in range(1,essai+1):
d1 = 1 + randint(1,6)
d2 = 1 + randint(1,6)
d3 = 1 + randint(1,6)
if (d1+d2+d3 == n) :
cumul = cumul +1
print ("Probabilité est : %.2f" %(cumul/essai))
Exercice 18
Un nombre réel X et un nombre entier N étant donné,
proposer un programme en Python qui fait calculer Xn
.
Etudier tous les cas possibles (N positive ou négative).
#Program Puissance_n
x=float(input ("Saisir un nombre réel : "))
n=int(input ("Saisir la puissance n : "))
y = 1
for k in range(1,abs(n)+1):
y = y * x
if n<0 : y = 1/y
print (str(x)+" puissance "+str(n)+" = %.2f" %y)
Exercice 19
Ecrire un programme en Python qui saisit deux entiers X
et Y, et fait calculer l’expression S=X*Y par additions
successives (X*Y=X+X+X+...). Choisir la somme qui fait
intervenir le minimum de termes.
#Program Multiplication_Addition
print ("Donner deux entiers")
x=int(input ())
y=int(input ())
print (x, "*", y, "=",end=" ")
if abs(y)>abs(x):
aux = x
x = y
y = aux
if y<0:
y= -y
x= -x
s = 0
Si est pair
Si est impair
22 Exercices en Python FENNI SALAH ©® 1992
for i in range(1,y+1):
s = s+x
print (s)
Exercice 20
Pour un entier naturel N donné. Ecrire un programme en
Python qui fait calculer et afficher la suite :
!
1
.....
!
2
1
!
1
1
!
0
1
n
S +
+
+
+
=
#Program Suite
print ("Donner un entier");n=int(input ())
s = 1
invfact = 1
for i in range(1,n+1):
invfact = invfact/i
s = s + invfact
print ("%.3f" %s)
Exercice 21
On remarque que :
12 x 42 = 21 x 24
12 x 63 = 21 x 36
12 x 84 = 21 x 48
Il y a 14 produits qui vérifient la propriété : (10 a + b) (10
c + d) = (10 b + a) (10 d + c), où a est différent de b et c
est différent de d. Ecrire un programme en Python qui
fait sortir tous ces entiers.
#program produits
for a in range(1,10):
for c in range(a,10):
for b in range(c,a-1,-1):
for d in range(c,a-1,-1):
if ((10*a+b)*(10*c+d)==(10*b+a)*(10*d+c))
and (a!=b)and(b!=c):
print (a,b,"*",c,d,"=",b,a,"*",d,c,sep="")
Exercice 22
On se propose de déterminer une valeur approchée de
Π par la méthode de Wallis, définie par la formule
suivante :
π 2 2 4 4 6 6 8 8
= x x x x x x x x....
2 1 3 3 5 5 7 7 9
Ecrire un programme en Python qui utilise la formule ci-
dessus pour déterminer et afficher une valeur approchée
de Π à 10-8
prés.
#PROGRAM PI_WALLIS
p=1
i=0
valide=False
while not valide:
i=i+2
r=i/(i-1)*i/(i+1)
diff=(p*r)-p
p=p*r
valide=abs(diff)<1e-8
print ("Par la formule de Wallis Pi = %.7f" %(2*p))
Exercice 23
On se propose de déterminer le PGCD (Plus Grand
Commun Diviseur) de deux entiers positifs non nuls A et
B en utilisant l'algorithme d'Euclide :
Sachant que PGCD (A, B) = PGCD(B, R),
avec R = A mod B.
Tant que le reste R est non nul, on remplace A par B et B
par R. Le dernier reste R non nul est alors le PGCD des
deux nombres.
Exemple : PGCD (32, 12) = PGCD (12, 8) = PGCD (8, 4) =
PGCD (4, 0) = 4.
#Program PGCD_Euclide
valide=False
while not valide:
print ("Saisir deux entiers > 0")
a=int(input ())
b=int(input ())
valide=(a>0) and (b>0)
while b!=0 :
r= a%b
a= b
b= r
print ("PGCD =",a)
Exercice 24
On se propose de déterminer le PGCD (Plus Grand
Commun Diviseur) de deux entiers positifs non nuls A et
B en utilisant la méthode de la différence :
Tant que (a ≠ b) on répète la recherche :
PGCD (a, b) = PGCD (a-b, b) si a>b,
sinon PGCD (a, b) = PGCD (a, b-a)
Exemple :
PGCD (10,16) = PGCD (10,6) = PGCD (4,6) = PGCD (4,2) =
PGCD (2,2) = 2.
#Program PGCD_Différence
valide=False
while not valide:
print ("Saisir deux entiers > 0")
a=int(input ())
b=int(input ())
valide=(a>0) and (b>0)
while a!=b :
if a>b:
a= a-b
23 Exercices en Python FENNI SALAH ©® 1992
else:
b=b-a
print ("PGCD =",a)
solution2
# Calcul d'un PGCD par différences successives
a=eval(input ("Valeur de a ?"))
b=eval(input ("Valeur de b ?"))
while a!=b:
d=abs(a-b)
b=a
a=d
print ("pgcd=",d)
if d==1:
print ("Les deux entiers sont premiers entre eux.")
Exercice 25
On se propose de déterminer le PPCM (Plus Petit
Commun Multiple) de deux entiers positifs non nuls M et
N.
#Program PPCM1
valide=False
while not valide:
print ("Saisir deux entiers > 0")
a=int(input ())
b=int(input ())
valide=(a>0) and (b>0)
if a<b:
aux=a
a=b
b=aux
pcm=a
while (pcm % b != 0):
pcm = pcm + a
print ("PPCM =", pcm)
#Program PPCM2
valide=False
while not valide:
print ("Saisir deux entiers > 0")
a=int(input ())
b=int(input ())
valide=(a>0) and (b>0)
if a<b:
aux=a
a=b
b=aux
i=1
while ((a*i) % b) != 0 :
i = i + 1
print ("PPCM =", a*i)
Exercice 26
Suite de Fibonacci
Les nombres de Fibonacci sont donnés par la récurrence :
Fn = Fn-2 + Fn-1 avec F0 = F1 = 1.
Ecrire un programme en Python qui affiche les 20
premiers nombres de Fibonacci.
#Program Fibonacci
f0 = 1
f1 = 1
print (f0,f1,end=" ")
for k in range(2,20):
f2 = f1+f0
f0 = f1
f1 = f2
print (f2,end=" ")
24 Exercices en Python FENNI SALAH ©® 1992
Exercice 27
Un entier supérieur à 1 est dit premier s'il admet
exactement deux diviseurs : 1 et lui-même. Ecrire un
programme en Python qui cherche et affiche tous les
nombres premiers ≤ à 400.
#Program Nbre_Premiers
for nb in range(2,401):
i = 2
while (nb % i != 0) and (i <= nb // 2) :
i= i+1
if (i > nb // 2) :
print (nb,end=" ")
Exercice 28
Un nombre entier naturel est dit parfait s'il est égal à la
somme de ses diviseurs sauf lui-même. Ecrire un
programme en Python permettant de déterminer et
d'afficher tous les nombres parfaits compris entre a et b
(2<a<b).
#Program Parfait
valide=False
while not valide:
print ("Saisir deux entiers a et b")
a=int(input ())
b=int(input ())
valide= (1<a) and (a<b)
for nb in range(a,b+1):
som=0
for i in range(1,nb//2+1):
if (nb%i == 0):
som=som+i
if nb==som :
print (nb, "est parfait")
Exercice 29
Deux entiers m et n sont dit amis si et seulement si la
somme des diviseurs de m sauf lui-même est égale à n et
la somme des diviseurs de n sauf lui-même est égale à m.
Ecrire un programme en Python permettant de
déterminer et d'afficher tous les nombres amis compris
entre 1 et 1000.
#Program Amis
def diviseurs (x) :
sdx=1
for i in range(2,x//2+1):
if (x%i) == 0:
sdx= sdx+i
return sdx
#Programme Principal
for m in range(1,1001):
for n in range (1,1001):
sdn = diviseurs (n)
sdm = diviseurs (m)
if (sdm==n) and (sdn==m):
print (n, "et", m, "sont amis")
Exercice 30
Ecrire un programme en Python permettant de
décomposer un entier N donné (2 ≤ N ≤ 100) en produit
de facteurs premiers et d'afficher N et le produit de ses
facteurs trouvés.
Exemple : Si n = 60 alors
on affiche 60 = 2*2*3*5.
#Program Facteur_Premier
from numpy import array
t = array([int()]*100)
valide=False
while not valide:
print ("donner un entier entre 2 et 1000")
n=int(input ())
valide=(n>=2) and (n<=1000)
print (n, "= ",end="")
i=2 ; f=0
while n!=1:
if (n%i == 0):
n= n // i
t[f] = i
f=f+1
else :
i=i+1
print (t[0],end="")
for i in range(1,f):
print (" *",t[i],end="")
25 Exercices en Python FENNI SALAH ©® 1992
Exercice 31
Sachant que
3 5 7 9
sin( ) ......
1! 3! 5! 7! 9!
x x x x x
x = − + − + −
tel que x ∈ [0, 2π].
Ecrire un programme en Python qui permet d'afficher
sin(x) en utilisant la formule ci-dessus. Le calcul s'arrête
quand la différence entre deux termes consécutifs
devient ≤ à 10-4
. La dernière somme calculée est une
valeur approchée de sin(x).
#Program calcul_sinus
def sinus (x) :
som=x; term2=x; i=1
valide=False
while not valide:
i=i+2
term1=term2
term2=term2 *-(x**2)/(i*(i-1))
som=som+term2
valide= abs(term2-term1) <= 0.0001
return som
#Programme Principal
from math import*
valide=False
while not valide:
print ("donner un réel x ")
x=float(input ())
valide=(-pi <= x) and (x <= pi)
print ("sin(",x,")= %.5f" %sinus(x),sep="")
Exercice 32
Ecrire un programme en Python qui donne une
approximation de :
ex
= 1 +
x
1!
+
x2
2!
+
x3
3!
+ ⋯ +
xn
n!
à epsilon près.
Le calcul s’arrête lorsque
!
n
x
epsilon
n
≤ . X et Epsilon
sont des données.
#Program Exponentiel
epsilon=float(input ("epsilon = "))
x=float(input ("x = "))
s=1
i=1
p=1
f=1
while abs(p/f) > epsilon:
p=p*x
f=f*i
s=s+p/f
i=i+1
print ("expn = %.3f" %s)
Exercice 33
Soit la somme Sn suivante :
2 3 4
3 5 7 2 1
1 ......
2 3 4
n n
n
S
n
−
=+ + + + +
Ecrire un programme en Python permettant de calculer
et d'afficher la somme Sn pour un entier n positif donné
en utilisant la formule ci-dessus.
def saisie ():
valide=False
while not valide:
m=int(input ("Donner un entier positif"))
valide=m>0
return m
def puissance (x):
p=1
for j in range(1,x+1):
p=p*x
return p
#Programme Principal
n=saisie()
s=0
for i in range(1,n+1):
s= s + (2*i-1) / puissance (i)
print ("la somme = %.2f" %s)
26 Exercices en Python FENNI SALAH ©® 1992
Exercice 34
Ecrire un programme en Python, qui lit deux entiers
naturels n et p avec (0<p<n), puis calcule et affiche le
nombre de combinaisons de p objets parmi n.
On rappelle que :
( )
!
! !
p
n
n
C
p n p
=
−
#Program Combinaison1
def fact (x) :
f = 1
for i in range(2,x+1):
f = f * i
return f
def saisie():
valide=False
while not valide:
p=int(input ("p="))
n=int(input ("n="))
valide=(0<p) and (p<=n)
return p,n
#Programme Principal
p,n=saisie()
cnp = fact (n) / (fact (p) * fact (n-p))
print ("Combinaison = %.2f" %cnp)
#Program Combinaison2
def calcul (n) :
nf =1
pf =1
npf =1
for i in range(2,n+1):
nf = nf*i
if i<=p :
pf = pf*i
if i<=n-p:
npf = npf*i
return nf/(pf*npf)
def saisie():
valide=False
while not valide:
p=int(input ("p="))
n=int(input ("n="))
valide=(0<p) and (p<=n)
return p,n
#Programme Principal
p,n=saisie()
cnp = calcul(n)
print ("Combinaison = %.2f" %cnp)
Exercice 35
Un entier de n chiffres (1<n<9) est dit bien ordonné si ses
chiffres forment, de gauche à droite, une suite
strictement croissante.
Exemples :
L'entier de 3 chiffres, 147 est bien ordonné car 1<4<7
L'entier de 4 chiffres, 1265 n'est pas bien ordonné car
6>5
Ecrire un programme en Python qui saisit un entier n
(1<n<9) et fait sortir tous les entiers bien ordonnés de n
chiffres et le nombre total de ces entiers.
#Program Ordered
def min_max (m) :
min=0
max=0
for i in range(1,m+1):
min=10*min + i
max=10*max + (9-m+i)
return min,max
def ordre (m) :
valide=False
while not valide:
c1= m % 10
m= m // 10
c2= m % 10
27 Exercices en Python FENNI SALAH ©® 1992
valide=(c1<=c2)or(m<10)
return c1>c2
def saisie ():
valide=False
while not valide:
m=int(input ("Donner un entier n compris entre 2 et 8 : "))
valide= (2<=m)and(m<=8)
return m
#Programme Principal
n=saisie()
mn,mx=min_max (n)
p=0
for i in range(mn,mx+1):
if ordre (i):
p=p+1
print (p,"-",i)
Exercice 36
Ecrire un programme en Python qui affiche tous les
entiers positifs impairs inférieurs à 100, en omettant les
nombres divisibles par 7. L'affichage doit être sur 5
colonnes comme l'aspect suivant :
1 3 5 9 11
13 15 17 19 23
25 27 29 31 33
….. ….. ….. ….. …..
#Program Nbre_Impairs
n=0
for i in range(1,100):
if (i%2==1)and(i%7!=0):
n=n+1
if n%5!=0:
print (i,end="t ")
else :
print (i)
Exercice 37
On se propose d’écrire un programme en Python qui
permet de déterminer et d’afficher toutes les
représentations sous forme de sommes d’entiers
consécutifs d’un entier n donné.
Exemple d’exécution :
Entrer un entier : 45
Les sommes consécutives sont :
45 = 1+2+3+4+5+6+7+8+9
45 = 5+6+7+8+9+10
45 = 7+8+9+10+11
45 = 14+15+16
45 = 22+23
#Program sommes_entiers
n=int(input ("Entrer la valeur de N :"))
for i in range(1,n//2+1):
s= i
j= i
while s<n:
j= j +1
s=s + j
if s==n:
print (n,"=",i,end="")
for k in range(i+1,j+1):
print (" +",k,end="")
print ()
Exercice 38
En mathématiques, un entier N est un carré parfait s'il
existe un entier k tel que N = k2
.
Ecrire un programme en Python permettant de
déterminer et d'afficher tous les carrés parfaits compris
entre 1 et 9999.
#Program carre_parfait
from time import sleep
for n in range(1,10000):
k=0
while (k*k)<n:
k=k+1
if (k**2)==n:
print (n,"=",k,"*",k)
sleep(1)
28 Exercices en Python FENNI SALAH ©® 1992
Exercice 39
Considérons un échiquier classique de 64 cases disposées
en un carré de 8 lignes composées de 8 cases. On
demande d'écrire un programme REINE permettant de
lire les coordonnées
(x, y) définissant la position de la reine, d'afficher la lettre
R à la position correspondante et une * (astérisque) à
chacune case accessible.
Exemple :
Pour x=2 et y=5 on aura l'affichage :
* * *
* * * * R * * *
* * *
* * *
* * *
* *
*
*
#Program Reine
x=int(input ("Les coordonnées de la dame: X = "))
y=int(input (" Y = "))
for i in range(1,9):
for j in range(1,9):
if (i==x) and (j==y):
print ("R",end="")
elif (i==x) or (j==y) or (abs(x-i)==abs(y-j)):
print ("*",end="")
else:
print (end=" ")
print ()
Exercice 40
PGCD et PPCM de deux entiers :
La méthode la plus simple est de chercher le premier
multiple de a qui soit divisible par b, sachant que le
produit du pgcd par le ppcm est ab, on a les deux en
même temps.
#Program ppcm_pgcd
def saisie ():
valide=False
while not valide:
print ("Donner deux entiers >0")
a=int(input ())
b=int(input ())
valide=(a>0) and (b>0)
return a,b
def affiche(a,b):
k = 1
while (a*k)%b!=0:
k = k+1
print ("ppcm de", a, "et", b, "=", a*k)
print ("pgcd de", a, "et", b, "=", b // k)
#Programme Principal
n,m=saisie()
affiche(n,m)
Exercice 41
Soient A et B deux entiers naturels quelconques non nuls.
On a: PGCD (A, B) * PPCM (A, B) = A*B
Ecrire un programme en Python qui permet de calculer
A*B en utilisant cette propriété.
#Program produit_ab
def pgcd_ppcm(a,b):
k = 1
while (a*k)%b!=0:
k = k+1
ppcm=a*k
pgcd=b // k
return ppcm,pgcd
#Programme Principal
print ("Donner a et b : ")
a=int(input ())
b=int(input ())
ppcm,pgcd=pgcd_ppcm(a,b)
print (a,"*",b,"=",pgcd*ppcm)
29 Exercices en Python FENNI SALAH ©® 1992
Exercice 42
Soient a et b deux réels quelconques. Pour tout entier
impair n, supérieur ou égal à 3, on a :
an
+ bn
= (a+b) (an-1
– an-2
b + … - abn-2
+ bn-1
)
Ecrire un programme en Python qui permet de calculer an
+ bn
.
#Program Exercice_42
def saisie():
print ("donner a et b")
a=float(input ())
b=float(input ())
valide=False
while not valide:
n=int(input ("donner n "))
valide=(n>=3) and (n%2==1)
return a,b,n
def power ( x,n):
p=1
for k in range(1,n+1):
p=p*x
return p
#Programme Principal
a,b,n=saisie()
s=0
signe=1
for i in range(0,n):
s=s+signe*power(b,i)*power(a,n-i-1)
signe=-signe
print ("%.2f" %((a+b)*s))
Exercice 43
L’entier naturel X est divisible par 11 si et seulement si la
somme de ses chiffres :
x0 – x1 + x2 – x3 + … + (-1)n
xn
est divisible par 11.
Exemple : Si X = 6182319
La somme : 9-1+3-2+8-1+6 = 22
Or 22 est divisible par 11,
donc 6182319 l’est aussi.
Ecrire un programme en Python qui permet de vérifier
cette règle de divisibilité.
#Program divisible_11
def saisie ():
valide=False
while not valide:
print ("Donner un entier ")
x=int(input ())
valide=x>0
return x
def divs_11(x):
signe=1
som=0
while x!=0:
som=som+signe*(x%10)
x=x // 10
signe=-signe
return som%11 == 0
#Programme Principal
x=saisie()
if divs_11(x):
print ("divisible par 11")
else:
print ("non divisible par 11")
Exercice 45
Un entier naturel est divisible par 7 si la différence entre
le nombre de dizaines et 2 fois le chiffre des unités est
divisible par 7.
Exemple :
Pour vérifier si 17381 est divisible par 7, on fait :
1738 – (2 x 1) = 1736 ; 173 – (2 x 6) = 161 ;
16 – (2 x 1) = 14
Or 14 est divisible par 7, donc 17381 l'est aussi !
#Program divis_7_13
def div_7 (n) :
while (n>99) :
n = (n//10) - 2 * (n%10)
return (n%7 == 0)
def div_13 (n) :
while (n>99):
n = (n // 10) + 4 * (n % 10)
return (n % 13 ==0)
30 Exercices en Python FENNI SALAH ©® 1992
Un entier naturel est divisible par 13 si l'addition du
nombre de dizaines et 4 fois le chiffre des unités est
divisible par 13.
Exemple :
Pour vérifier si 8541 est divisible par 13, on fait :
854 + (4 x 1) = 858 ;
85 + (4 x 8) = 117 ;
11 + (4 x 7) = 39
Or 39 est divisible par 13,
donc 8541 l'est aussi !
Ecrire un programme en Python permettant d’afficher sur
l'écran :
- D’abord, les 100 premiers entiers divisibles par 7
- Ensuite, les 100 premiers entiers divisibles par 13.
#Programme Principal
print ("les nombres divisibles par 7 :")
nb=0;n=0
while nb!=100 :
if div_7(n):
print (n,end=" ")
nb=nb+1
n=n+1
print ()
print ("les nombres divisibles par 13 :")
nb=0; n=0
while nb!=100 :
if div_13(n):
print (n,end=" ")
nb=nb+1
n=n+1
Exercice 46
Un entier positif K à n chiffres est dit nombre de
Kaprekar si lorsqu'on élève K au carré, la somme du
nombre composé des n chiffres de droite au nombre
composé des n ou n-1 chiffres de gauche redonne le
nombre d'origine.
Exemples : 9, 45 et 297 sont des nombres de Kaprekar :
92
= 81 et 1+8=9 ;
452
= 2025 et 25+20=45 ;
2972
= 88209 et 209+88 = 297
Ecrire un programme en Python qui permet d’afficher
tous les nombres de KAPREKAR dans l’intervalle [4,1000]
en utilisant la méthode décrite ci-dessus.
#Program Nbre_kaprekar
def kaprekar(m):
ch=str(m**2)
l = len(ch)
ch1 = ch[0:l//2]
ch2 = ch[l//2:l]
n1=int(ch1)
n2=int(ch2)
return m==n1+n2
#Programme Principal
for k in range(4,1000):
if kaprekar(k):
print (k,end=" ")
Exercice 47
Un nombre premier N est dit circulaire s’il vérifie la
propriété suivante : chacune des rotations de ses chiffres
d’un élément vers la droite, forme à son tour un nombre
premier.
Exemples :
- Si N=719, N est un nombre premier circulaire car
719, 971 et 197 sont des nombres premiers, avec :
- 971 est le nombre obtenu après une rotation des
chiffres de 719 d’un élément vers la droite.
- 197 est le nombre obtenu après une rotation des
chiffres de 971 d’un élément vers la droite.
- Si N=23, N n’est pas un nombre premier circulaire car
il est premier mais 32 ne l’est pas.
- Si N=6102, N n’est pas un nombre premier circulaire
car il n’est premier.
On veut chercher tous les nombres circulaires se trouvant
dans l’intervalle [p, q] (avec p et q sont deux entiers
donnés tels que 10<p<q<20000).
#Program premier_circulaire
def saisie():
valide=False
while not valide:
p=int(input ("p = "))
q=int(input ("q = "))
valide=(10<p)and(p<q)and(q<20000)
return p,q
def premier(x):
test=True
i=2
while (test==True)and(i<=x//2):
if x%i==0:
test=False
else :
i=i+1
return test
def circulaire(x):
ok=premier(x)
if ok:
ch=str(x)
i=0
while (i!=len(ch)-1) and ok:
31 Exercices en Python FENNI SALAH ©® 1992
ch=ch[len(ch)-1]+ch[0:len(ch)-1]
x=int(ch)
ok=premier(x)
i=i+1
return ok
#Programme Principal
p,q=saisie()
for n in range(p,q+1):
if circulaire(n):
print (n,end=" ")
Exercice 48 Fractions égyptiennes
Toute fraction peut s’écrire comme une somme de
fractions ayant 1 comme numérateur. Cette
décomposition est appelée décomposition en fractions
égyptiennes. En voici un exemple :
𝟕𝟕
𝟖𝟖
=
𝟏𝟏
𝟐𝟐
+
𝟏𝟏
𝟑𝟑
+
𝟏𝟏
𝟐𝟐𝟐𝟐
Ecrire un programme en Python prenant en entrée le
numérateur N et le dénominateur D d’une fraction et affiche
sa décomposition en fraction égyptiennes.
#Program frac_egypt
n=int(input ("n="))
d=int(input ("d="))
while d%n!=0:
i=(d // n)+1
print (1,"/",i,"+",sep="",end="")
n=i*n-d
d=i*d
print (1,"/",d // n,sep="")
Exercice 49
Un nombre est dit super premier s'il est premier et si, en
supprimant des chiffres à partir de sa droite, le nombre
restant est aussi premier.
Exemple : Le nombre 59399 est super premier car les
nombres 59399,5939, 593,59et 5sonttouspremiers.
Ecrire un programme en Python qui permet de :
• Saisir un entier n tel que 40000 < n < 100000,
• Chercher tous les nombres premiers inférieurs ou
égaux à n, les afficher à raison d'un nombre par
ligne en mentionnant devant chaque nombre super
premier la note « super premier ».
#Program super_premier
def saisie():
valide=False
while not valide:
n=int(input ("n = "))
valide=(4<n) and (n<100000)
return n
def premier(x):
test=True
i=2
while (test==True)and(i<=x//2):
if x%i==0:
test=False
else :
i=i+1
return test
def super(x):
test=True
while (test==True)and(x>=10):
x=x // 10
if x!=1 :
test=premier(x)
return test
#Programme Principal
n=saisie()
for i in range(2,n+1):
if premier(i):
if super(i):
print (i,"super premier")
else:
print (i)
32 Exercices en Python FENNI SALAH ©® 1992
Exercice 50
On se propose d’écrire un programme en Python
conversion permettant de saisir un nombre binaire de
longueur minimale 2 puis de le convertir en décimal.
Pour ce faire, on multiplie la valeur de chaque bit*2
puissance «le poids du bits (ordre-1)».
N.B : On rappelle qu’un nombre binaire est composé
uniquement par des 0 et des 1.
Exemple :
(1001101)2= 1*2
6
+0*25
+0*24
+1*23
+1*22
+0*21
+1*20
=
64+0+0+8+4+0+1 = (77)10.
#Program Conversion_base2_base10
def saisir():
valide=False
while not valide:
print ("Donner un nombre binaire")
ch_bin=input ()
i=0
binaire=True
while binaire and (i!=len(ch_bin)):
binaire =ch_bin[i] in ["0","1"]
i=i+1
valide=binaire
return ch_bin
def conv_b2_b10(ch_bin):
dec=0
puiss=1
for i in range(len(ch_bin)-1,-1,-1):
if ch_bin[i]=="1":
dec=dec+puiss
puiss=puiss*2
return dec
#Programme Principal
ch_bin=saisir()
print ("(",ch_bin,")2","=(",conv_b2_b10(ch_bin),")10")
Exercice 51 Jeu « des allumettes »
Ecrire un programme en Python permettant de simuler le
jeu suivant :
Au départ on dispose quelques allumettes sur une table.
Chaque joueur peut choisir de prendre 1, 2 ou 3
allumettes en même temps. Le perdant est celui qui
retire la dernière allumette.
#Program jeux_allumette
from random import*
j= randint(10,20)
print ("Jeu avec ",j," allumettes")
while j > 0 :
if j > 3 :
i= randint(1,3)
elif j==3 :
i=randint(1,2)
else : i=1
j=j-i
print ("Je prend ",i," allumette(s). Il en reste ",j)
if j==0:
print ("Bravo vous avez gagné !")
else:
valide=False
while not valide:
print ("Donnez votre jeu: 1 ou 2 ou 3")
s=int(input ())
valide= s in {1,2,3}
j = j - s
if j == 0 :
print ("Vous avez perdu !")
Exercice 52
Un nombre colombien, ou auto-nombre, est un entier
naturel qui, dans une base donnée, ne peut pas s'écrire
sous la forme d'un nombre ajouté à la somme des
chiffres de ce nombre.
Exemples :
• 23 n'est pas un nombre colombien, puisqu'il peut
être généré par la somme de 16 et de ses chiffres,
#Program auto_nombre
def verif(n):
def somchif(x):
sc=0
while x!=0:
sc=sc+ x % 10
x=x // 10
return sc
y=n-1
33 Exercices en Python FENNI SALAH ©® 1992
c’est-à-dire, 23 = 16 + 1 + 6.
• 20 est un nombre colombien car il n'existe pas une
telle somme pour 20.
Ecrire un programme en Python qui permet d’afficher
tous les nombres colombiens < 1000.
test=(n==y+somchif(y))
while not((test) or (y<=n // 2)):
y=y-1
test=(n==y+somchif(y))
return test
#Programme Principal
for n in range(1,1000):
if verif(n)==False:
print (n," est auto nombre")
Exercice 53
Un nombre Vampire est un nombre qui est égal à un
produit de ses chiffres.
Exemple : 126 = 21 x 6
Ecrire un programme en Python qui permet de
déterminer tous les nombres Vampires de trois chiffres.
#Program vampire
def verif(n):
c=n // 100
d=n // 10 % 10
u=n % 10
p1=c*(d*10+u)
p2=c*(u*10+d)
p3=d*(c*10+u)
p4=d*(u*10+c)
p5=u*(d*10+c)
p6=u*(c*10+d)
return n in {p1,p2,p3,p4,p5,p6}
#Programme Principal
for n in range(100,1000):
if verif(n):
print (n,end=" ")
Exercice 54
Le PGCD de deux nombres entiers M et N supérieurs ou
égaux à 2 a pour décomposition en facteurs premiers le
produit des facteurs premiers apparaissant à la fois dans
la décomposition de M et de N munis du plus petit des
exposants trouvés dans la décomposition de M et de N.
Ainsi, si M = 23
x 34
x 52
x 7 et N = 22
x 35
x 73
x 11 alors
pgcd (m, n) = 22
x 34
x 7
#Program PGCD_fact_prem
from numpy import array
fa=array([int()]*100)
fb=array([int()]*100)
def saisie ():
valide=False
while not valide:
a=int(input ("a="))
b=int(input ("b="))
valide=(1<=a) and (a<=b) and (b<=10000)
return a,b
def factprem(n):
fp=array([int()]*100)
i = 2 ;f=0
while n!=1:
if n % i == 0:
n= n // i
f=f+1
fp[f] = i
else:
i=i+1
return fp,f
def pgcd(fa,fb,na,nb) :
t=array([int()]*100)
i=1;j=1;k=0
while (i<=na) and (j<=nb):
if fa[i]==fb[j]:
k=k+1
t[k]=fa[i]
i=i+1
34 Exercices en Python FENNI SALAH ©® 1992
j=j+1
elif fa[i]>fb[j]:
j=j+1
else:
i=i+1
p=1
for i in range(1,k):
p=p*t[i]
return p
#Programme Principal
a,b=saisie()
fa,na=factprem(a)
fb,nb=factprem(b)
print("PGCD(",a,",",b,")","= ",pgcd(fa,fb,na,nb))
#Program PGCD_fact_prem Solution2
from numpy import array
def saisie ():
valide=False
while not valide:
a=int(input ("a="))
b=int(input ("b="))
valide=(1<=a) and (a<=b) and (b<=10000)
return a,b
def pgcd( a , b) :
fa=array([int()]*100)
fb=array([int()]*100)
def decfact(n):
fp=array([int()]*100)
i=2 ;f=0
while n!=1:
if n % i == 0:
n= n // i
f=f+1
fp[f] = i
else:
i=i+1
return fp,f
def nb(x,n,t):
s = 0
for j in range(1,n+1):
if t[j] == x :
s=s+1
return s
def puiss(x,y):
if y == 0:
p= 1
else:
p= x * puiss(x,y-1)
return p
fa,af=decfact(a) #decomposition en facteurs premiers de a dans
tableau fa de taille af
fb,bf=decfact(b) #decomposition en facteurs premiers de b dans
tableau fb de taille bf
i = 2; p = 1
while not ((i > fa[af] ) and ( i > fb[bf] )):
nba = nb(i,af,fa)
nbb = nb(i,bf,fb)
if (nba!=0) and (nbb!=0):
35 Exercices en Python FENNI SALAH ©® 1992
if nba < nbb:
p = p* puiss(i,nba)
else: p = p* puiss(i,nbb)
i=i+1
return p
#Programme Principal
a,b=saisie()
print ("PGCD(",a,",",b,")"," = ",pgcd(a,b))
Exercice 55
Le PPCM de deux nombres entiers M et N supérieurs ou
égaux à 2 a pour décomposition en facteurs premiers le
produit des facteurs premiers apparaissant
dans M ou dans N munis du plus grand des exposants
trouvés dans la décomposition de M et de N.
Ainsi, si M = 23
x 34
x 52
x 7 et N = 22
x 35
x 73
x 11 alors
ppcm (m, n) = 23
x 35
x 52
x 73
x 11
#Program PPCM_fact_prem
from numpy import array
fa=array([int()]*100)
fb=array([int()]*100)
def saisie ():
valide=False
while not valide:
a=int(input ("a="))
b=int(input ("b="))
valide=(1<=a) and (a<=b) and (b<=10000)
return a,b
def factprem(n):
fp=array([int()]*100)
i = 2 ;f=0
while n!=1:
if n % i == 0:
n= n // i
f=f+1
fp[f] = i
else:
i=i+1
return fp,f
def ppcm(fa,fb,na,nb) :
t=array([int()]*100)
i=1;j=1;k=0;p=1
while (i<=na) and (j<=nb):
k=k+1
if fa[i]==fb[j]:
p=p*fa[i]
i=i+1
j=j+1
elif fa[i]<fb[j]:
p=p*fa[i]
i=i+1
else:
p=p*fb[j]
j=j+1
if i>na :
for m in range(j,nb+1):
k = k+1
p = p*fb[m]
else:
for m in range(i,na+1):
k = k+1
p = p*fa[m]
return p
#Programme Principal
a,b=saisie()
fa,na=factprem(a)
36 Exercices en Python FENNI SALAH ©® 1992
fb,nb=factprem(b)
print ("PPCM(",a,",",b,")"," = ",ppcm(fa,fb,na,nb))
#Program PPCM_fact_prem solution2
from numpy import array
def saisie ():
valide=False
while not valide:
a=int(input ("a="))
b=int(input ("b="))
valide=(1<=a) and (a<=b) and (b<=10000)
return a,b
def ppcm( a , b) :
fa=array([int()]*100)
fb=array([int()]*100)
def decfact(n):
fp=array([int()]*100)
i=2 ;f=0
while n!=1:
if n % i == 0:
n= n // i
f=f+1
fp[f] = i
else:
i=i+1
return fp,f
def nb(x,n,t):
s = 0
for j in range(1,n+1):
if t[j] == x :
s=s+1
return s
def puiss(x,y):
if y == 0:
p= 1
else:
p= x * puiss(x,y-1)
return p
fa,af=decfact(a)
#decomposition en facteurs premiers de a dans tableau fa de taille af
fb,bf=decfact(b)
#decomposition en facteurs premiers de b dans tableau fb de taille bf
i = 2; p = 1
while not ((i > fa[af] ) and ( i > fb[bf] )):
nba = nb(i,af,fa)
nbb = nb(i,bf,fb)
if nba > nbb:
p = p* puiss(i,nba)
else: p = p* puiss(i,nbb)
i=i+1
return p
#Programme Principal
a,b=saisie()
print ("PPCM(",a,",",b,")"," = ",ppcm(a,b))
37 Exercices en Python FENNI SALAH ©® 1992
Exercice 56
Votre sœur joue avec des perles, des blanches et des
noires, et elle souhaite constituer des colliers. Dans un
souci d’esthétique, elle désire alterner les couleurs, tout
en préservant une certaine périodicité. Elle va donc
placer X perles blanches, suivies de Y perles noires et elle
répètera ce motif N fois.
Exemple : Supposons qu’elle possède X = 12 perles
blanches et Y = 6 perles noires. Elle a plusieurs
possibilités :
• une répétition (12 blanches, 6 noires)
• deux répétitions (6 blanches, 3 noires)
• trois répétitions (4 blanches, 2 noires)
• six répétitions (2 blanches, 1 noire)
Écrire un programme en Python qui
calcule, étant donné deux entiers
strictement positifs X et Y, représentant respectivement
les nombres de perles blanches et noires, le nombre
maximum de répétitions que votre sœur va pouvoir faire
avec ces perles.
#Program Perles
def Pgcd(A,B) :
while B!=0:
R=A % B
A=B
B=R
return A
valide=False
while not valide:
X=int(input ("Donner Le nombre de perles blanches (X) : "))
Y=int(input ("Donner Le nombre de perles noires (Y) : "))
valide=(X>0)and(Y>0)
print ("Le nombre maximum de répétitions est : ",Pgcd (X,Y))
Exercice 57
Ecrire un programme en Python qui affiche tous les
nombres palindromes inférieurs à un entier N donné
(N>1) et qui peuvent être écrits sous la forme d’une
somme des carrés de nombres successifs.
Exemples :
5 est un nombre palindrome et vérifie la propriété car 5 =
12
+ 22
595 est un nombre palindrome et vérifie la propriété car
595=62
+72
+82
+92
+102
+112
+122
Remarques :
• Un nombre palindrome est un nombre égal à
lui-même s’il est lu de gauche à droite ou de
droite à gauche.
• Vous devez afficher le nombre palindrome suivi
de la somme de ses carrés successifs.
Exemple d’affichage : 595 = 6^2 + 7^2 + 8^2 +
9^2 + 10^2 + 11^2 + 12^2
#Program Nombres
from math import*
def Lecture () :
valide=False
while not valide:
N=int(input ("Donner un entier : "))
valide=(N>1)
return N
def Palindrome (Nb) :
Ch=str(Nb)
while (len(Ch)>1) and (Ch[0]==Ch[len(Ch)-1]):
Ch = Ch[1:len(Ch)-1]
return len(Ch)<=1
def Affiche (Nb) :
J = 0;Somme=0
while not ((Somme==Nb) or (J>sqrt(Nb))):
J=J+1
Somme=0
K=J
Ch=""
while (Somme<Nb):
Somme= Somme + K**2
Ch1=str(K)
Ch= Ch + Ch1 + "^2 + "
K= K + 1
Ch=Ch[0:len(Ch)-2]
if Somme==Nb:
print (Nb ,"=",Ch)
#Programme Principal
N=Lecture()
38 Exercices en Python FENNI SALAH ©® 1992
for I in range(1,N+1):
if Palindrome(I):
Affiche(I)
Exercice 58
Un nombre de SMITH s’il est un nombre dont la somme
des chiffres est égale à la somme de tous les chiffres de
ses facteurs premiers.
Exemple :
4937775 = 3*5*5*65837
=> Somme des chiffres : 4+9+3+7+7+7+5 = 42
=> Somme des chiffres de sa factorisation :
3+5+5+6+5+8+3+7 = 42
Ecrire un programme en Python qui permet de chercher
et d’afficher tous les nombres de smith de l’intervalle [n,
m] (avec 10<m<n<100).
#Program Smith
def Saisie():
valide=False
while not valide:
print ("Saisir M Et N")
M=int(input ())
N=int(input ())
valide=(10<M) and(M<N) and(N<100)
return M,N
def Som_Chif(Nb):
S=0
while Nb!=0:
S=S + (Nb % 10)
Nb=Nb // 10
return S
def Som_Fact(Nb):
D=2
S=0
while Nb!=1:
if Nb % D ==0:
Nb=Nb // D
S=S+Som_Chif(D)
else:
D=D+1
return S
#Programme Principal
M,N=Saisie()
for Nb in range(M,N+1):
if Som_Chif(Nb)==Som_Fact(Nb):
print (Nb,end=" ")
Exercice 59
Un nombre de Zuckerman est un nombre qui est divisible
par le produit de ses chiffres. Les nombres contenant un
0 sont naturellement exclus. Alors qu’un nombre de
Harshad est divisible par la somme.
Ecrire un programme en Python qui permet de chercher
et d’afficher tous les nombres qui sont à la fois
Zuckerman et Harshad de l’intervalle [n, m] (avec
100≤n<m).
#Program Harshad_Zuckerman
def Saisir():
valide=False
while not valide:
N=int(input ("N = "))
M=int(input ("M = "))
valide= (N>=100)and (N<M)
return N,M
def Harzuc ( Nb) :
Ch=str(Nb)
Som=0 ;Prod=1
for i in range(len(Ch)):
V=int(Ch[i])
Som=Som+V
Prod=Prod*V
return (Nb % Som == 0) and (Nb % Prod == 0)
39 Exercices en Python FENNI SALAH ©® 1992
#Programme Principal
N,M=Saisir()
for i in range(N,M+1):
Ch=str(i)
if Ch.find("0")==-1:
if Harzuc(i):
print (i,end=" ")
Exercice 62
SUITE DE STEINHAUS
• On prend un nombre de deux chiffres, au
hasard.
• On multiplie les deux premiers chiffres.
• On place le résultat à la suite des chiffres déjà
trouvés.
Exemple : 23 ; 2*3=6 ; 236 ; 3*6=18 ; 23618 ; 6*1=6 ;
236186 ; 1*8=8 ; 2361868 ; 8*6= 48 ; 236186848 …
Ecrire un programme en Python qui permet de chercher
et d’afficher les 100 premiers chiffres de cette suite.
#Program STEINHAUS
from random import*
N=randint(10,99)
Ch=str(N)
K=0
while len(Ch)!=100:
D=int(Ch[K])
U=int(Ch[K+1])
C=str(D*U)
Ch=Ch+C
K=K+1
print (Ch)
Exercice 63
Suite de Padovan
Les nombres de Padovan sont donnés par la récurrence :
Pn = Pn-3 + Pn-2 avec P0=P1=P2=1.
Ecrire un programme en Python qui affiche les 20
premiers nombres de Padovan.
#Program Pidovan
P0=1
P1=1
P2=1
print (P0,P1,P2,end=" ")
for K in range(3,20):
Pn = P0+P1
P0 = P1
P1 = P2
P2 = Pn
print (Pn,end=" ")
Exercice 64
Un nombre est riche si un de ses facteurs au moins est
répété deux fois ou plus.
Exemples :
4 = 22
90 = 2 x 32
x 5
540 = 22
x 33
x 5
Ecrire un programme en Python qui affiche tous les
nombres riches <1000.
#Program Nb_Riche
def Nbfact(N):
K=0
i=2
while not ((N==1) or (K>=2)):
if N % i == 0:
K= K + 1
N = N // i
else :
i = i + 1
K=0
return K
#Programme Principal
for N in range(1,101):
if Nbfact(N)>=2:
print (N,end=" ")
Exercice 65
Un nombre est harshad morphique, s’il est la somme des
chiffres d'un nombre de harshad et qui termine aussi ce
nombre de harshad.
Exemple : 910=9+1+0=10
910 est un nombre de harshad puisqu’il est
divisible par la somme de ses chiffres.
10 est harshad morphique.
#Program Harshad_Morphique
def HM ( Nb) :
Ch=str(Nb)
Som=0
for i in range(len(Ch)):
V=int(Ch[i])
Som=Som+V
return (Nb % Som == 0)and(Nb % 100 == Som)
40 Exercices en Python FENNI SALAH ©® 1992
Ecrire un programme en Python qui affiche tous les
nombres harshad de l’intervalle [100,9999] et qui
intègrent les harshad morphique.
#Programme Principal
from time import sleep
for i in range(100,10000):
if HM(i):
print (i,end=" ")
sleep(1)
Exercice 66
Un nombre narcissique est un entier naturel N non nul
qui est égal à la somme des puissances p-ièmes de ses
chiffres, où p désigne le nombre de chiffres de N.
Exemples :
153 = 13
+53
+33
548834 = 56
+46
+86
+86
+36
+46
Ecrire un programme en Python qui affiche tous les
nombres narcissiques <10000.
#Program narcissiques
def Puissance(N,L):
P=1
for i in range(L):
P=N*P
return P
#programme principal
for Nb in range(1,10000):
Ch=str(Nb)
L=len(Ch)
Som=0
for J in range(L):
N=int(Ch[J])
Som=Som+Puissance(N,L)
if Nb==Som :
print (Nb," Est Un Nombre Narcissique ")
Exercice 67
Deux entiers N1 et N2 sont dits frères si chaque chiffre de
N1 apparaît au moins une fois dans N2 et inversement.
Ecrire un programme en Python qui saisit deux entiers
N1 et N2, vérifie et affiche s’ils sont frères ou non.
Exemples :
- Si N1 = 1164 et N2 = 614 alors le programme
affichera : N1 et N2 sont frères
- Si N1 = 905 et N2 = 9059 alors le programme
affichera : N1 et N2 sont frères
- Si N1 = 405 et N2 = 554 alors le programme
affichera : N1 et N2 ne sont pas frères
#Program Nbr_Freres
def Saisie():
N=int(input ())
return N
def Frere(N1,N2):
Ch1=str(N1)
Ch2=str(N2)
i=0
V=True
while not((i>=len(Ch1)) or (V== False)):
V=Ch2.find(Ch1[i])!=-1
i=i+1
return V
#Programme Principal
print ("N1= ",end="")
N1=Saisie()
print ("N2= ",end="")
N2=Saisie()
if Frere(N1,N2) and Frere(N2,N1):
print (N1," Et ",N2," Sont Frères")
else :
print (N1," Et ",N2," Ne Sont Pas Frères")
Exercice 68
Si d est un diviseur propre de n et s'il est premier avec
n/d (pgcd (d, n/d)=1), c'est un diviseur unitaire de n.
Un nombre unitairement parfait est égal à la somme de
ses diviseurs unitaires.
Exemple : 60 est un nombre unitairement parfait, parce
que ses diviseurs unitaires stricts
sont 1, 3, 4, 5, 12, 15 et 20, et que 1 + 3 + 4 + 5 + 12 + 15
#Program Unitairement_Parfait
def Sdu(Nb):
def Pgcd(A,B):
while A!=B:
if A>B:
A= A-B
else:
B= B-A
return A
41 Exercices en Python FENNI SALAH ©® 1992
+ 20 = 60.
Ecrire un programme en Python qui affiche tous les
nombres unitairement parfaits <100000.
Som=0
for D in range(1,Nb // 2+1):
if (Nb % D ==0) and (Pgcd(D,Nb // D)==1):
Som=Som+D;
return Som
#Programme Principal
from time import sleep
for N in range(1,100000):
if Sdu(N)==N:
print (N,end=" ")
sleep(1)
Exercice 69
Tout entier strictement positif peut s’écrire sous la forme
d’une somme de puissance de 2, où les exposants sont
distincts.
Exemples : 31 = 20
+21
+22
+23
+24
146 = 21
+24
+27
Ecrire un programme en Python qui permet d’afficher la
décomposition d’un entier N, en une somme de
puissances de 2 distinctes.
#Program Affiche_puissance
def saisir():
valide=False
while not valide:
n=int(input ("Donner un entier positif"))
valide=(n > 0)
return n
def decomposer (n):
ch = ""
p = 0
while n != 0:
if (n%2)==1 :
pp=str(p)
ch = ch+"2^"+pp+"+"
p = p+1
n = n//2
ch=ch[0:len(ch)-1]
return ch
#programme principal
n=saisir()
print (n," = ",decomposer(n))
Exercice70
On veut afficher à l'écran le calendrier d'un mois donné.
On donne le mois, l'année et le jour de la semaine
correspondant au premier du mois en question. Écrivez
un programme en Python qui réalise cette tâche.
Exemple:
Donner le n° du mois = 5
Donner le jour de début de mois (lundi=1, mardi=2, ...) =
3
Lundi 6 13 20 27
Mardi 7 14 21 28
Mercredi 1 8 15 22 29
Jeudi 2 9 16 23 30
Vendredi 3 10 17 24 31
Samedi 4 11 18 25
Dimanche 5 12 19 26
#Program Calendrier
mois=int(input ("Donner le n° du mois = "))
if mois in {1,3,5,7,8,10,12}:
jours = 31
elif mois in {4,6,9,11}:
jours = 30
elif mois==2:
an=int(input ("Donner l'année = "))
if an % 4== 0:
jours = 29
else :
jours = 28
print ("Donner le jour de début de mois (lundi=1, mardi=2, ...) = ")
x=int(input ())
print ()
for i in range(1,8):
if i==1: jour_semaine = "Lundi "
elif i==2: jour_semaine = "Mardi "
elif i==3: jour_semaine = "Mercredi "
elif i==4: jour_semaine = "Jeudi "
elif i==5: jour_semaine = "Vendredi "
42 Exercices en Python FENNI SALAH ©® 1992
elif i==6: jour_semaine = "Samedi "
elif i==7: jour_semaine = "Dimanche "
print (jour_semaine,end="")
j = i-x+1
while (j<=jours):
if j>0:
print (j,end=" ")
else :
print (end=" ")
j = j+7
print ()
Exercice 71
Nombre sublime : La quantité de diviseurs et la somme
des diviseurs sont deux nombres parfaits.
Exemple : 12 est un nombre sublime.
Diviseurs : 1, 2, 3, 4, 6 et 12
Quantité : 6 Nombre parfait
Somme : 28 Nombre parfait
#Program Sublime
def som_nb_div(n):
Sd = 0 ; nbd = 0
for i in range(1,n+1):
if (n % i) == 0:
Sd = Sd + i
nbd = nbd + 1
return Sd, nbd
def parfait (n):
Sd = 0
for i in range(1,n//2+1):
if (n % i) == 0:
Sd = Sd + i
return Sd==n
#programme principal
from time import sleep
for n in range(1,100000):
sd,nbd=som_nb_div(n)
if parfait(sd) and parfait(nbd):
print (n,end=" ")
sleep(1)
Exercice 72
Soit S la somme des diviseurs propres (sauf lui-même) de
N.
Ecrire un programme en Python NOMBRE, qui permet
de saisir un entier N (2 ≤ N ≤ 100) et d’afficher sa nature :
• Nombre déficient si S < N
• Nombre presque parfait si S = N-1
• Nombre parfait si S = N
• Nombre quasi-parfait si S = N+1
• Nombre abondant si S > N
Exemple :
Pour N=6, la somme S=1+2+3, donc N=S, alors le
programme affichera "Nombre parfait"
#program nombre
for n in range(1,300):
s=0
for i in range(1,n//2+1):
if n % i ==0:
s=s+i
if s<n:
print (n,' Nombre déficient')
elif s==n:
print (n,' Nombre parfait')
else:
print (n,' Nombre abondant')
if s==n-1:
print (n,' Nombre presque parfait')
if s==n+1:
print (n,' Nombre quasi parfait')
Exercice 73
Un nombre N est dit ondulant s’il est formé de trois
chiffres au minimum et qui est de la forme ababab… avec
a ≠ b.
Exemples :
▪ 101, 2525, 56565 et 1717171 sont des nombres
ondulants.
▪ 12345 et 808008 ne sont pas des nombres ondulants
Ecrire un programme Python, qui permet de vérifier si un
#programme ondulant
valide=False
while not valide:
N=int(input ("Saisir un entier >=100"))
valide= N>=100
ch=str(N)
i=0
verif=True
while (i<=len(ch)-3) and verif :
43 Exercices en Python FENNI SALAH ©® 1992
entier naturel N (N>=100) est un nombre ondulant ou
non.
if (ch[i]!=ch[i+1]) and (ch[i]==ch[i+2]) :
i=i+1
else:
verif=False
if verif :
print (N,"est un nombre ondulant")
else:
print (N,"n'est pas ondulant")
Exercice 74
Un nombre N est dit super-pairplus s’il vérifie les trois
conditions suivantes :
▪ Condition1 : N est pair
▪ Condition2 : N est formé uniquement par des
chiffres pairs
▪ Condition3 : tous les diviseurs de N autre que 1 sont
des entiers pairs.
Exemples :
- N = 64 est un entier super-pairplus car 64 vérifie les
trois conditions :
• Condition 1 : 64 est pair
• Condition 2 : 64 est formé uniquement par des
chiffres pairs (6 et 4)
• Condition 3 : les diviseurs de 64 autre que 1 (2,
4, 8, 16, 32 et 64) sont des entiers pairs.
- N = 28 n’est pas un entier super-pairplus car une
des trois conditions (condition3) n’est pas vérifiée :
• Condition 1 : 28 est pair
• Condition 2 : 28 est formé uniquement par des
chiffres pairs (2 et 8)
• Condition 3 : les diviseurs de 28 autre que 1 (2,
4, 7, 14 et 28) ne sont pas tous des entiers
pairs. En effet, 7 est impair
#programme super pair plus
def pariteChiffre(N):
verif=True
while verif and N!=0:
u=N%10
verif=(u%2==0)
N=N//10
return verif
def pariteDiviseur(N):
ok=True
i=2
while ok and i<=N:
if N%i==0:
ok=(i%2==0)
i=i+1
return ok
#programme principal
for N in range(1,10000):
if (N%2==0) and pariteChiffre(N) and pariteDiviseur(N):
print (N,end=" ")
Exercice 75
Un nombre N est dit semi-premier lorsqu’il est égal au
produit de deux nombres premiers non nécessairement
distincts. C’est-à-dire N = k*k avec k est un nombre
premier ou N = k*j avec k et j sont deux nombres
premiers.
Exemples :
▪ 6 est un nombre semi-premier car 6 = 2 × 3 avec 2
et 3 sont deux nombres premiers.
▪ 25 est un nombre semi-premier car 25 = 5 × 5 avec 5
est un nombre premier.
▪ 831 est un nombre semi-premier car 831= 3 × 277
avec 3 et 277 sont deux nombres premiers
▪ 8 n’est pas un nombre semi-premier, car 8 = 2 × 4
avec 4 n’est pas un nombre premier.
#programme semi premier
def premier(x):
nb=2
for i in range(2,x//2+1):
if x%i==0:
nb=nb+1
return nb==2
def semipremier(n):
d=2
p=1
k=0
x=n
while k!=2:
if n % d==0:
p=p*d
n=n//d
k=k+1
else:
d=d+1
return x==p
44 Exercices en Python FENNI SALAH ©® 1992
#programme principal
for n in range(1,1000):
if not premier(n):
if semipremier(n):
print (n,end=" ")
Exercice 76
Un nombre N est dit lisse lorsque son plus grand
diviseur premier est inférieur ou égal à la racine carrée
du nombre N.
Exemples :
• N = 60, les diviseurs de 60 sont : 1, 2, 3, 4, 5, 6, 10,
12, 15, 30 et 60. Son plus grand diviseur premier
est 5 et puisque 5<=√60 = 7.746 …, donc 60 est un
nombre lisse.
• N = 49, les diviseurs de 49 sont : 1, 7 et 49.
Son plus grand diviseur premier est 7 et puisque
7<=√49 = 7 donc 49 est un nombre lisse.
• N = 22, les diviseurs de 22 sont : 1, 2, 11 et 22. Son
plus grand diviseur premier est 11 et puisque 11
> √22 = 4.690 …, donc 22 n’est pas un nombre
lisse.
#programme nbr_lisse
from math import*
def premier(N):
i=2
while i<=N//2 and N%i!=0:
i=i+1
return i>N//2
def Lisse(N):
ok=False
if premier(N):
pgd=N
else:
i=N//2
while i>=2 and not ok:
if premier(i) and N%i==0:
pgd=i
ok=True
i=i-1
return pgd
#programme principal
for N in range(1,100):
if Lisse(N)<=sqrt(N):
print (N,end=" ")
Exercice 77
Un nombre N est dit hautement abondant si la somme
de ses diviseurs (lui-même inclus) est strictement
supérieure à la somme des diviseurs de n’importe quel
nombre plus petit que lui (le nombre inclus).
Exemples :
• 8 est hautement abondant car la somme de ses
diviseurs, qui est égale à 15 (1+2+4+8=15), est
strictement supérieure à la somme des diviseurs de
tout entier plus petit que lui.
• 5 n’est pas hautement abondant car la somme de
ses diviseurs, qui est égale à 6 (1+5 =6), est
inférieure à 7 qui la somme des diviseurs de 4
(1+2+4=7).
#programme hautement abondant
def SomDiv(N):
s=N
for i in range(1,N//2 +1):
if N%i==0:
s=s+i
return s
def HAbondant(N):
ok=True
i=N-1
S=SomDiv(N)
while i>=1 and ok:
if SomDiv(i) > S:
ok=False
else :
i=i-1
return ok
#programme principal
for i in range(1,100):
if HAbondant(i):
print (i,end=" ")
45 Exercices en Python FENNI SALAH ©® 1992
LES TABLEAUX
Exercice 1
Ecrire un programme en Python, qui fait remplir un tableau T par n (5<n<=10) entiers compris entre 1 et 20. Ensuite, il
fait calculer et afficher la somme, le produit et la moyenne arithmétique des éléments de T.
Exercice 2
Ecrire un programme en Python, qui fait remplir un tableau T par n lettres (2<n≤20). Ensuite il fait afficher, sans
redondance, les éléments de T.
Exercice 3
Ecrire un programme en Python qui fait réaliser les tâches suivantes :
• Remplir un tableau LET de 35 cases par des lettres majuscules au hasard. On utilisera la fonction prédéfinie
Random.
• Compter la fréquence d'apparition (le nombre d'occurrence) de chaque lettre majuscule dans le tableau LET
et ranger les résultats statistiques dans un tableau FE.
Exercice 4
Ecrire un programme en Python qui permet de convertir un entier naturel en son équivalent binaire (conversion de la
base10 à la base2).
Exercice 5
Ecrire un programme en Python qui permet de convertir un nombre écrit dans une base b1 en son équivalent dans
une base b2.
Exercice 6
Soit T un tableau contenant N entiers (10 ≤ N ≤ 50). On propose d'écrire un programme en Python qui permet d'éclater
T en deux tableaux :
TN (contenant les éléments négatifs de T) et TP (contenant les éléments positifs de T).
Exercice 7
Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet d'inverser
les éléments de T (permuter T[1] et T[n], puis T[2] et T[n-1], …).
Exercice 8
Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de
regrouper les éléments pairs au début et les éléments impairs à la fin de T, sans modifier l'ordre de saisie des valeurs
paires et impaires.
Exemple : pour N = 10
4 2 7 8 20 5 11 6 3 30 4 2 8 20 6 30 7 5 11 3
Etat initial de T Etat final de T
Exercice 9
Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de
déterminer et d'afficher la valeur maximale et la valeur minimale de T.
Exercice 10
On se propose d'écrire un programme en Python qui permet de saisir un entier N >1 et pair. Ensuite remplir un tableau
T par n entiers égaux deux par deux. Enfin transformer T en un tableau symétrique.
Exemple : pour N = 10
4 4 0 0 -5 -5 8 8 3 3 4 0 -5 8 3 3 8 -5 0 4
Etat initial de T Etat final de T
46 Exercices en Python FENNI SALAH ©® 1992
Exercice 11
Soit un tableau de N (5≤N≤20) entiers. On se propose de ranger les éléments de T de façon à mettre les éléments
positifs ou nuls au début de T suivis des éléments négatifs.
Exemple :
T initial T final
2 -3 -9 0 15 -1 6 2 0 15 6 -9 -1 -3
Exercice 12
Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de
chercher l'existence d'un élément V donné, dans la liste de valeurs de T.
Exercice 13
Soit le tableau T suivant :
10 7 9 7 10 6 7 4 8 8
Pour chaque élément de T on ne garde que sa première occurrence et on remplace les autres par 0.
10 7 9 0 0 6 0 4 8 0
On regroupe les éléments restant au début du tableau T.
10 7 9 6 4 8 0 0 0 0
Ecrire un programme en Python qui fait le traitement ci-dessus pour un tableau T de n (2 ≤n≤20) entiers positifs non
nuls.
Exercice 14
Ecrire un programme en Python qui fait remplir un tableau T par les résultats de 20 lancements d'un dé. Le programme
doit faire remplir par la suite un tableau fréquence F par le nombre de fois que chaque face est obtenue.
Exercice 15
On dispose d'un tableau MOY qui contient la liste des moyennes de N élèves. On propose d'écrire un programme en
Python qui permet de déterminer et d'afficher le rang de chaque élève.
Exercice 16
On dispose d’un tableau de N_MAX éléments rempli par N caractères (N<N_MAX).
Ecrire un programme en Python permettant d’insérer un caractère C donné à la k_ème position (avec K<=N).
Exercice 17
Le triangle de Python est obtenu en considérant que pour une ligne donnée :
• Le premier élément et le dernier élément sont égaux à 1.
• Les autres éléments sont obtenus au moyen de la relation : T[l, c]=T[l-1, c] + T[l-1, c-1]
Ecrire un programme en Python permettant de générer et afficher le triangle de Python de taille n.
Exemple d'exécution :
Taille du triangle : 5
Le triangle correspondant est :
Exercice 18 Transposition d’une Matrice carrée
Une Matrice carrée est une matrice à n lignes et n colonnes. L’opération de transposition consiste à inverser les lignes
et les colonnes en effectuant une symétrie par rapport à la diagonale principale de la matrice.
Exemple :
La Matrice
1 2 3
Devient
1 4 7
4 5 6 2 5 8
7 8 9 3 6 9
Ecrire un programme en Python qui permet de saisir une Matrice carrée puis il cherche et affiche son transposée.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
47 Exercices en Python FENNI SALAH ©® 1992
Exercice 19
L’algorithme suivant permet de calculer et d’afficher les moyennes des trois notes de n élèves.
0) Début Calcul_moyennes
1) Lire (n)
2) Pour i de 1 à n faire
Lire (Note1, Note2, Note3)
Moy  (Note1 + 2 x Note2 + 2 x Note3)/5
Ecrire (Moy)
FinPour
3) Fin Calcul_moyennes
Questions :
1. Traduire cet algorithme en Python.
2. Dans l’action 1, ajouter le contrôle sur la saisie pour assurer la condition suivante 5≤n≤40.
3. Ajouter une fonction e RANG qui permet de chercher le rang de l’élève n°i.
4. Apporter les changements adéquats afin d’afficher pour chaque élève et sur une même ligne :
N° Moyenne Rang
Exercice 20
On se propose d'utiliser l'algorithme de tri par sélection pour trier un tableau de 20 chaînes de caractères.
Exercice 21
Soient deux tableaux T1 et T2 contenant chacun n éléments distincts deux à deux (2<n<100). On appelle intersection
de T1 et T2 l'ensemble des éléments communs à ces deux tableaux.
On se propose d'écrire un programme en Python, qui range les éléments de l'intersection des deux tableaux dans un
tableau T3 puis affiche les trois tableaux T1, T2 et T3.
Exercice 22
Ecrire un programme en Python, qui permet de créer un tableau V3 d'entiers croissants à partir de deux tableaux V1 et
V2 d'entiers.
Exemple :
V1 1 3 2 -6
V2 0 4 -5
V3 -6 -5 0 1 2 3 4
Exercice 23
Ecrire, en s'inspirant du tri par sélection, une procédure qui permet de construire à partir d'un tableau T de n entiers
un tableau Rang tel que Rang[i] soit l'indice dans T de l’ieme élément dans l'ordre croissant sans modifier le tableau T.
Exemple :
T 80 50 90 35 20
1 2 3 4 5
Rang 5 4 2 1 3
Exercice 24
Ecrire un programme en Python qui permet de remplir un tableau T par n caractères, de rechercher dans le tableau la
première plus longue suite de caractères identiques et d'afficher le caractère concerné ainsi que le nombre de fois qu'il
est répété.
Exemple : Si on introduit (a a b c c e d e e e e e f f g a a a).
Le programme doit afficher (e, 5).
Exercice 25
Ecrire un programme en Python permettant de remplir d’une manière automatique et aléatoire, un tableau T par N
entiers (de 100 à 999), avec (5 ≤ N ≤ 200), et d’afficher les éléments qui sont symétrique.
48 Exercices en Python FENNI SALAH ©® 1992
Exercice 26
Ecrire un programme en Python permettant de saisir, dans un tableau T, N entiers positifs triés dans l’ordre croissant,
puis d'afficher les entiers manquants entre le premier et le dernier élément de ce tableau T ainsi que leur nombre.
Exemple : Si N = 7 et si T est le tableau suivant
T 5 6 8 9 10 12 15
i 1 2 3 4 5 6 7
Le programme affichera : Les entiers manquants sont : 7 11 13 14 ; leur nombre est : 4
Exercice 27
Écrire un programme en Python Séquence permettant de :
- Remplir un tableau T par N (2≤N≤24) entiers non nuls.
- Chercher et afficher la première longue séquence d’éléments juxtaposés dont la somme est égale à zéro.
Exemple : Si N = 10 et si T est le tableau suivant :
T -5 6 -2 -2 -1 -1 4 7 3 -3
1 2 3 4 5 6 7 8 9 10
Le programme affichera : La plus longue séquence est : 6 -2 -2 -1 -1
Exercice 28
Écrire un programme en Python permettant de remplir d’une manière automatique et aléatoire, un tableau T par N
(avec 5≤N≤20) entiers (de 0 à 9) et d’afficher l’élément qui apparaît le plus dans le tableau T, ainsi que son nombre
d’occurrences.
Si plusieurs éléments différents répondent à la condition, le programme doit en fournir le premier.
Exercice 29
Écrire un programme en Python permettant de vérifier l’existence d’une chaîne donnée Ch dans un tableau T de n
chaînes de caractères (2 ≤ n ≤ 10). Les éléments du tableau T ainsi que la chaîne recherchée sont formés de n
caractères. On admet que la chaîne Ch est dans le tableau T si elle est :
• l’un des éléments du tableau,
• l’inverse d'un élément du tableau.
Exemple : Pour n = 4, le tableau T contient 4 chaînes formées chacune de 4 caractères. On veut vérifier l’existence de
la chaîne Ch dans le tableau T.
Si Ch = ''HOUE’’
Ch est le troisième élément du tableau T.
Si Ch = ''DOUE’’
Ch est l’inverse du deuxième élément du tableau T.
Si Ch = ''ROUT’’
Ch n’existe pas dans le tableau T.
Exercice 30
Soit T un tableau de N chaîne de caractères non vides et dont la taille maximale est 5 caractères. On se propose
d'écrire un programme permettant de remplir le tableau T par N chaînes de caractères (2 ≤ N ≤ 30), puis de calculer et
d'afficher la somme des nombres extraits des chaînes de chaque élément du tableau T.
Le nombre extrait de la chaîne contenue dans la case i du tableau T, est formé par la concaténation de tous les chiffres
de la chaîne parcourue de gauche à droite.
N.B. : Si une chaîne ne contient pas des chiffres, elle prend la valeur 0 dans le calcul de la somme finale.
T VRAI EUOD HOUE ICTB
1 2 3 4
T VRAI EUOD HOUE ICTB
1 2 3 4
T VRAI EUOD HOUE ICTB
1 2 3 4
49 Exercices en Python FENNI SALAH ©® 1992
Exemple : Si N = 9 et que le tableau T contient les éléments suivants :
T R4*s2 12hj5 5?7e Ak!r E9Y41 6754 3E-Z2 G(Y U5Kx1
1 2 3 4 5 6 7 8 9
Alors la somme S = 42 + 125 + 57 + 0 + 941 + 6754 + 32 + 0 + 51 = 8002
Exercice 31
Un élément X du tableau T est dit majoritaire si et seulement si T contient strictement plus de (n/2) occurrences de X.
Exemple : Pour n=10 et le tableau T suivant :
T 25 9 9 9 7 9 12 12 9 9
1 2 3 4 5 6 7 8 9 10
L’entier 9 possède 6 occurrences qui est > n/2 donc 9 est majoritaire.
Ecrire un programme en Python qui permet de saisir un entier N (5≤N≤25), puis de remplir un tableau T par N entiers,
de vérifier si T contient un élément majoritaire.
Exercice 32 Intervalle de plus grande somme
Nous avons un tableau T de n entiers relatifs. Nous recherchons un sous-tableau de T dont la somme des éléments
adjacents soit maximale.
Exemple : Pour n=9 et le tableau T suivant :
T 2 5 -8 6 7 1 -9 3 4
1 2 3 4 5 6 7 8 9
La plus grande somme est définie par les valeurs : 6, 7 et 1.
Exercice 33 Segmentation d’un tableau
La segmentation d’un tableau T de N entiers par rapport à T[1] consiste à placer les éléments inférieurs ou égaux à
T[1] à sa gauche et les éléments strictement supérieurs à T[1] à sa droite.
Exemple : Soient N=10 et le tableau T suivant :
125 10 34 192 120 1026 22 -365 411 48
1 2 3 4 5 6 7 8 9 10
La segmentation de T par rapport à l’élément numéro 1 donne le tableau suivant :
10 34 120 22 -365 48 125 192 1026 411
1 2 3 4 5 6 7 8 9 10
Eléments ≤ à 125 Eléments > à 125
Ecrire un programme en Python qui permet de saisir un entier N (5≤N≤20), de remplir un tableau T par N entiers, de
segmenter le tableau T par rapport à T [1] et d’afficher le tableau T segmenté.
Exercice 34
Soit T un tableau de N chaîne de caractères alphabétiques minuscules (2 ≤ N ≤ 10).
Ecrire un programme en Python qui permet de saisir les éléments du tableau T et affiche les lettres communes à
toutes les chaînes sans redondance.
Exemple : Si N=4 et le tableau T suivant :
T palindrome amour amirale marron
1 2 3 4
Le programme affichera : Les caractères communs sont : a, m, r
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf

Contenu connexe

Tendances

Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeWajihBaghdadi1
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombressalah fenni
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018salah fenni
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siNarûtö Bàl'Sèm
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)abdellah12
 

Tendances (20)

Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrige
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Exercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombresExercices en turbo pascal sur les nombres
Exercices en turbo pascal sur les nombres
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 
01 correction-td smia-s2-info2
01 correction-td smia-s2-info201 correction-td smia-s2-info2
01 correction-td smia-s2-info2
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Devoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 siDevoirs Algorithme + correction pour 4 si
Devoirs Algorithme + correction pour 4 si
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)
 

Similaire à Exercices_Python_Fenni_2023 -corrigé.pdf

Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Fatima Zahra Fagroud
 
Exemples for1
Exemples for1Exemples for1
Exemples for1salmazen
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigramenabildekess
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigramenabildekess
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigramenabildekess
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdiversHajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONborhen boukthir
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programmeBaghdadi Wajih
 

Similaire à Exercices_Python_Fenni_2023 -corrigé.pdf (20)

Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
 
Exemples for1
Exemples for1Exemples for1
Exemples for1
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigrame
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigrame
 
Examen organigrame
Examen organigrameExamen organigrame
Examen organigrame
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
La série 3 en pascal
La série 3 en pascalLa série 3 en pascal
La série 3 en pascal
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
Exercicescorrigesdivers
 
LES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATIONLES ALGORITHMES D’APPROXIMATION
LES ALGORITHMES D’APPROXIMATION
 
Tp1 corr
Tp1 corrTp1 corr
Tp1 corr
 
2-Algo.ppt
2-Algo.ppt2-Algo.ppt
2-Algo.ppt
 
Fiche1 ex-sous-programme
Fiche1 ex-sous-programmeFiche1 ex-sous-programme
Fiche1 ex-sous-programme
 
Correction
CorrectionCorrection
Correction
 
C
CC
C
 
Theme 6
Theme 6Theme 6
Theme 6
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 

Exercices_Python_Fenni_2023 -corrigé.pdf

  • 1.
  • 2. 2 Exercices en Python FENNI SALAH ©® 1992 Le présent manuel est conforme au programme d'informatique de l'enseignement secondaire relatif aux sections : Sciences Informatiques, Mathématiques, Sciences Expérimentales et Techniques. Ces Exercices sont assez variés et tiennent compte des différents niveaux des élèves.
  • 3. 3 Exercices en Python FENNI SALAH ©® 1992 LES STRUCTURES SIMPLES Exercice 1 Compléter le tableau suivant par les valeurs finales des variables indiquées. Instructions En python Valeurs A  6 + 2 * 5 div 3 - 10 from random import* A = 6 + 2 * 5 // 3 - 10 B = (5>2) or (8<8) and not(6==6) X = int (10.5) Y = round (10.5) W = randint (1,6) E = float ("025.38") ch = "python" L = len (ch[1:0]) P = "PYTHON".find("h".upper()) Ch = "information" Ch = Ch[:0] + Ch[2:] Ch = Ch[:len(Ch)-3] + Ch[len(Ch):] print (A,B,X,Y,W,E,L,P,Ch,sep="n") A = ………… B  (5>2) OU (8<8) ET Non (6=6) B = ………… X  Ent (10.5) X = ………… Y  Arrondi (10.5) Y = ………… W  Aléa(0,6) + 4 W = ……… E  Valeur ("025.38") E = ………… ch  "python" L  Long (Sous_Chaîne (ch, 1, 0)) L = ………… P  Pos (Majus ("h"), "PYTHON") P = ………… Ch  "information" Effacer (Ch, 0, 2) Effacer (Ch, Long (Ch)-3, Long(Ch)) Ch = ………… Exercice 2 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui saisit trois nombres dans un ordre donné et les affiche dans l’ordre opposé à l’entrée. Algorithme Sortie_Inverse Début Ecrire ("A = "), Lire (A) Ecrire ("B = "), Lire (B) Ecrire ("C = "), Lire(C) Ecrire (C, " ", B, " ", A) Fin #programme python A=int(input ("A = ")) B=int(input ("B = ")) C=int(input ("C = ")) print (C, B, A) Exercice 3 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui calcule et affiche le volume d'un cylindre après saisie son rayon R et sa hauteur H. Algorithme Cylindre Début Ecrire ("Donner le rayon : "), Lire(R) Ecrire ("Donner la hauteur : "), Lire (H) V  PI*R*R*H Ecrire ("Volume = ", V) Fin #programme python from math import* R=float(input ("Donner le rayon : ")) H=float(input ("Donner la hauteur : ")) V = pi*R*R*H print ("Volume = %.2f" %V) #afficher le volume avec 2 chiffres après la virgule
  • 4. 4 Exercices en Python FENNI SALAH ©® 1992 Exercice 4 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui calcule la surface d'un rectangle de dimensions données et affiche le résultat sous la forme suivante : "La surface du rectangle dont la longueur mesure .... m et la largeur mesure .... m, a une surface égale à .... mètres carrés". Algorithme Surface_rectangle Début Ecrire ("Largeur = "), Lire (LA) Ecrire ("Longueur = "), Lire (LO) S LA * LO Ecrire ("La surface du rectangle dont la longueur mesure ", LO, " m et la largeur mesure ", LA," m, a une surface égale à ", S," mètres carrés.") Fin Exercice 5 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui lit les dimensions d'une piscine, et affiche son volume et la quantité d'eau nécessaire pour la remplir. Algorithme Piscine Début Ecrire ("Donner les dimensions de la piscine") Lire (LO, LA, PR) V  LO*LA*PR EAU  V*1000 Ecrire ("Le volume = ", V) Ecrire ("Quantité d'eau = ", EAU, " litres") Fin Exercice 6 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui lit les dimensions d'un trapèze et affiche sa surface. Algorithme Aire_Trapeze Début Ecrire ("Donner les dimensions du trapèze ") Lire (H, B1, B2) S H*(B1 + B2) Ecrire ("La surface = ", S) Fin Exercice 7 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui fait la permutation de deux variables A et B. Algorithme Permut Début Lire (A, B) AUX  A A  B B  AUX Ecrire ("La nouvelle valeur de A est : ", A) Ecrire ("La nouvelle valeur de B est : ", B) Fin Exercice 8 Proposer une marche à suivre qui fait, une permutation circulaire à droite, des valeurs de trois variables A, B et C. Par exemple : à partir de (A, B, C) = (10, 25, 4), on passe à (A, B, C) = (4, 10, 25). Algorithme Permut_Circulaire Début Lire (A, B, C) AUX  A A  C C  B B  AUX Ecrire (A, " ", B, " ", C) Fin Exercice 9 Proposer une marche à suivre qui fait la permutation de deux variables numériques X et Y, sans faire appel à aucune variable intermédiaire. Algorithme Permut Début Lire (X, Y) X  X+Y Y  X-Y X  X-Y Ecrire (X, " ", Y) Fin
  • 5. 5 Exercices en Python FENNI SALAH ©® 1992 Exercice 10 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui fait calculer et afficher le quotient et le reste de la division euclidienne de A par B. Algorithme Division Début Ecrire ("A = "), Lire (A) Ecrire ("B = "), Lire (B) Q  A div B R  A mod B Ecrire ("Le quotient est ", Q, " et le reste est ", R) Fin Exercice 11 Ecrire un algorithme puis l’implémentation en Python d'un programme qui lit une température en degrés Celsius et affiche son équivalent en Fahrenheit. Algorithme Temperature Début Ecrire ("Donner une température en °C : "), Lire (D) F  9/5 * D + 32 Ecrire (D, " °C = ", F, " Fahrenheit") Fin Exercice 12 Ecrire un algorithme puis l’implémentation en Python d'un programme permettant de déterminer et d'afficher la conversion en mile marin d'une distance mesurée en kilomètre. Algorithme Mile_marin Début Ecrire ("Donner le nombre de Km : "), Lire (km) Mm  km/1.852 Ecrire (km," km = ", mm," miles marins") Fin Exercice 13 Ecrire un algorithme puis l’implémentation en Python d'un programme qui permet de convertir et d'afficher en octets, kilo octets, méga octets et giga octets un nombre donné en bits. Algorithme Conversion Début Ecrire ("Nombres de bits = "), Lire (bit) Octet  bit/8 Kilo  octet/1024 Mega  kilo/1024 Giga  mega/1024 Ecrire (octet, kilo, mega, giga) Fin Exercice 14 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui convertit en heures, minutes et secondes, une durée T donnée en secondes. Il affiche le résultat sous la forme digitale comme celle d'une montre électronique (hh : mn : ss). Algorithme Temps Début Ecrire ("Donner une durée en secondes "), Lire (T) H  T div 3600 M  (T div 60) mod 60 S  T mod 60 Ecrire (H, " : ", M, " : ", S) Fin Exercice 15 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui conjugue un verbe du premier groupe au futur simple. On ne traite pas les verbes irréguliers. Algorithme Futur Début Ecrire ("Donner un verbe du 1er groupe : ") Lire (verbe) Ecrire ("Je ", verbe, "ai") Ecrire ("Tu ", verbe, "as") Ecrire ("Il ou elle ", verbe, "a") Ecrire ("Nous ", verbe, "ons") Ecrire ("Vous ", verbe, "ez") Ecrire ("Ils ou elles ", verbe, "ont") Fin
  • 6. 6 Exercices en Python FENNI SALAH ©® 1992 Exercice 16 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui calcule et affiche, l'intérêt et la valeur acquise par une somme placée en épargne pendant 5 ans à intérêt simple. Algorithme Interet_Simple Début Ecrire ("Donner la somme initiale : "), Lire (SOM) Ecrire ("Donner le taux d'intérêt : "), Lire (TAUX) INTERET  (SOM * TAUX/100) * 5 VA  SOM + INTERET Ecrire ("Après 5 ans la somme sera = ", VA) Fin Exercice 17 On sait qu'avec un réservoir de L litres, une voiture a parcouru Y km. Ecrire un algorithme puis l’implémentation en Python d'un programme, qui fait lire les données nécessaires et fait calculer et afficher le taux de consommation aux 100 km de cette voiture. Algorithme Consommation Début Ecrire ("Nombre de Km parcouru : "), Lire(Y) Ecrire ("Nombre de litres d'essence : "), Lire (L) TAUX  (L*100)/Y Ecrire ("Taux de consommation est = ", TAUX, "%") Fin Exercice 18 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui affiche la résistance équivalente à trois résistances R1, R2, R3. - si les résistances sont branchées en série: Rser = R1+R2+R3 - si les résistances sont branchées en parallèle: 1/Rpar = 1/R1 + 1/R2 + 1/R3 Algorithme Résistance Début Ecrire ("Donner les trois résistances : ") Lire (R1, R2, R3) Rser  R1 + R2 + R3 Rpar  1/ (1/R1 + 1/R2 + 1/R3) Ecrire ("Résistance résultante sérielle : ", Rser) Ecrire ("Résistance résultante parallèle : ", Rpar) Fin Exercice 19 On se propose de saisir un entier N de trois chiffres non nuls, de déterminer et d'afficher tous les nombres qui peuvent être formés par les chiffres de N. Exemple : pour N=427 Les nombres formés par les chiffres de N sont : 427, 472, 724, 742, 247, 274. Algorithme NBR_3 Début Ecrire ("Saisir un entier formé de 3 chiffres non nuls : ") Lire (n) c  n div 100 d  n mod 100 div 10 u  n mod 10 r1  c*100+u*10+d r2  u*100+d*10+c r3  u*100+c*10+d r4  d*100+c*10+u r5  d*100+u*10+c Ecrire (n, r1, r2, r3, r4, r5) Fin Exercice 20 Ecrire un algorithme puis l’implémentation en Python d'un programme, qui fait entrer deux entiers A et B et fait calculer et afficher leur inf et leur sup. Utiliser une formule mathématique donnant directement le résultat. Algorithme Sup_Inf Début Ecrire ("A = "), Lire (A) Ecrire ("B = "), Lire (B) SUP  (A + B + abs (A - B)) div 2 INF  (A + B - abs (A - B)) div 2 Ecrire ("Valeur sup = ", SUP, " Valeur inf = ", INF) Fin
  • 7. 7 Exercices en Python FENNI SALAH ©® 1992 Exercice 21 On se propose d'écrire un algorithme qui calcule le nombre de pixels et le poids d'une image numérique en méga octet (MO), d'une dimension (hauteur, largeur) exprimées en pouces et d'une résolution en dpi (points par pouce). NB. - La résolution indique le nombre de points sur une unité de longueur de l'image. - Le nombre de pixels dans une image = hauteur * résolution* longueur *résolution - L'image est codée en 24 bits/pixel ou 48 bits/pixel c'est à dire 8 ou 16 bits par canal R (rouge), V (vert) et B (bleu). - Le nombre total d'octets dans l'image (poids) = Nombre de pixels * nombre d'octets par pixel. Algorithme IMAGE Début Ecrire ("Entrer la largeur de l'image: "), Lire(l) Ecrire ("Entrer la hauteur de l'image: "), Lire (h) Ecrire ("Entrer la résolution de l'image: "), Lire(r) Ecrire ("Entrer le codage de l'image: "), Lire(c) n  l*r*h*r p  (n*c) / (1024*1024) Ecrire (n, p) Fin Exercice 22 Ecrire un programme en Python, qui calcule et affiche la distance DIST entre deux points A et B du plan dont les coordonnées (XA, YA) et (XB, YB) sont entrées au clavier comme entiers. #Program Distance ; from math import* print ("Entrez Les Coordonnées Du Point A : Xa,Ya ") Xa=int(input ()) Ya=int(input ()) print ("Entrez Les Coordonnées Du Point B : Xb,Yb ") Xb=int(input ()) Yb=int(input ()) Dist = sqrt ((Xa-Xb)**2+(Ya-Yb)**2) print ("La Distance Entre A Et B Est %.2f" %Dist) Exercice 23 Ecrire un programme en Python qui calcule le prix TTC d'un article à partir du prix net et du pourcentage de TVA à ajouter. Utiliser la formule suivante : #Program Prix_TTC ; print ("Entrez Le Prix Net De L'article : ") Pnet=int(input ()) print ("Entrez Le Taux De La Tva (En %) : " ) Tva=int(input ()) Pttc = Pnet+Pnet*Tva/100 print ("Le Prix Ttc Est %.2f" %Pttc) Exercice 24 Deux trains, distants de 60 km, roulent l'un vers l'autre sur le même itinéraire. • Le train A avance à une vitesse de 70 km/h. • Le train B avance à une vitesse de 55 km/h. Ecrire un programme en Python, qui permet de calculer le temps où les deux trains vont se rencontrer ? t=60/(70+55) print ("le temps de croisement de 2 trains est :",t, "heures") print ("distance parcourue par le train A est :",70*t,"km") print ("distance parcourue par le train B est :",55*t,"km")
  • 8. 8 Exercices en Python FENNI SALAH ©® 1992 LES STRUCTURES CONDITIONNELLES Exercice 1 Ecrire un programme en Python qui affiche le plus petit de deux nombres A et B. #Program Min2 print ("Saisir deux entiers : ") a=int(input ()) b=int(input ()) if a<b : min = a else: min = b print ("La plus petite valeur est : ", min) Exercice 2 Ecrire un programme en Python permettant d'obtenir le maximum de trois nombres donnés. #Program Max3 print ("Saisir trois entiers : ") a=int(input ()) b=int(input ()) c=int(input ()) maxi=a if b>maxi : maxi = b if c>maxi : maxi = c print ("La plus grande valeur est : ", maxi) #Solution 2 Program Max3 print ("Saisir trois entiers : ") a=int(input ()) b=int(input ()) c=int(input ()) if (a>b)and(a>c): maxi=a elif b>c : maxi = b else : maxi = c print ("La plus grande valeur est : ", maxi) Exercice 3 Ecrire un programme en Python qui affiche la racine carrée d'un réel donné. #Program Racine from math import* print ("Saisir un réel :",end=" ") x=float(input ()) if x >= 0 : print ("Racine carrée ", x," = %.2f" %sqrt(x)) else: print ("Donnée incorrecte") Exercice 4 Ecrire un programme en Python qui calcule et affiche l'aire d'un triangle dont il faut donner les longueurs des trois côtés. Utilisez la formule : S2 = P(P-A)(P-B)(P-C) où A, B, C sont les longueurs des trois côtés et P le demi-périmètre du triangle. #Program Aire_Triangle from math import* print ("Donner 3 réels positifs :") a=float(input ()) b=float(input ()) c=float(input ()) if (a+b==c) or (a+c==b) or (b+c==a): print ("Il ne s'agit pas d'un triangle") else: P = (a+b+c)/2 S = sqrt (P*(P-a)*(P-b)*(P-c)) print ("Aire de triangle = %.2f" %S)
  • 9. 9 Exercices en Python FENNI SALAH ©® 1992 Exercice 5 Sans utiliser la fonction prédéfinie ABS, écrire un programme en Python qui détermine et affiche la valeur absolue de (a-b). #Program Abs_diff print ("Donner deux entiers : ") a=int(input ()) b=int(input ()) if (a-b) < 0 : z=b-a else : z=a-b print ("valeur absolue de",a,"-",b, "=", z) Exercice 6 Ecrire un programme en Python qui saisit un nombre entier et détecte si ce nombre est pair ou impair. #Program Parite print ("Donner un entier : ", end="") n=int(input ()) if n % 2 == 0 : print (n,"est pair") else : print (n,"est impair") Exercice 7 Ecrire un programme en Python, permettant de simuler un jeu entre deux joueurs régi par le principe suivant : Deux joueurs A et B se cachent la main droite derrière le dos. Les deux joueurs se montrent la main droite en même temps, en choisissant de tendre un certain nombre de doigts (de 1 à 5). Si la somme des nombres de doigts montrés est paire, le premier joueur a gagné, sinon c'est le second. #Program Chez_la_fourmi print ("Nombre de doigts montrés par le joueur A") a=int(input ()) print (20*"n") print ("Nombre de doigts montrés par le joueur B ") b=int(input ()) if (a+b)%2 == 0 : print ("Le joueur A gagne.") else : print ("Le joueur B gagne.") Exercice 8 Ecrire un programme en Python, qui saisit le prénom d'une personne et son titre (Mr, Mlle ou Mme), puis affiche l'invite suivante : "Titre"foulen", soyez le bienvenu" Ou "Titre"foulena", soyez la bienvenue" #Program Invite print ("Titre = ",end="") ; titre=input () print ("Votre nom = ",end="") ; foulen=input () if titre == "Mr": term1 = "e" term2 = "" elif (titre == "Mlle") or (titre=="Mme"): term1 = "a" term2 = "e" print (titre," ",foulen,", soyez l", term1," bienvenu", term2,sep="") Exercice 9 Ecrire un programme en Python qui saisit deux entiers A et B, teste si A est supérieur, inférieur ou égale à B puis affiche le résultat. #Program Sup_Inf print ("Saisir deux entiers : ") a=int(input ()) b=int(input ()) if a>b : sie = " est supérieur à " elif a<b : sie = " est inférieur à " else : sie = " est égal à " print (a, sie, b)
  • 10. 10 Exercices en Python FENNI SALAH ©® 1992 Exercice 10 Ecrire un programme en Python qui ordonne dans le sens croissant, en échangeant leur valeur si nécessaire, deux entiers saisis au clavier. #Program Ordre print ("Saisir deux entiers : ") e1=int(input ()) e2=int(input ()) petit = e1 grand = e2 if e1>e2 : petit = e2 grand = e1 print (petit, grand) Exercice 11 Ecrire un programme en Python, qui fait lire trois entiers A, B et C, les permute de façon à les classer par ordre croissant puis affiche le résultat. #Program Tri print ("a =",end=" ") ; a=int(input ()) print ("b =",end=" ") ; b=int(input ()) print ("c =",end=" ") ; c=int(input ()) if a>b : aux=a a=b b=aux if b>c : aux=b b=c c=aux if a>b : aux=a a=b b=aux print (a, b, c) Exercice 12 Ecrire un programme en Python, qui fait résoudre dans IR l'équation ax+b=0 pour tout couple de réels (a, b) donné. #Program Equa_1d print ("a =",end=" ") ;a=float(input ()) print ("b =",end=" ") ;b=float(input ()) if a != 0 : print ("x = ", -b/a) elif b == 0 : print ("Toute IR") else : print ("Ensemble vide {}") Exercice 13 Ecrire un programme en Python, qui fait résoudre dans IR l'équation ax2 +bx+c=0 pour tout triplet de réels (a, b, c) donné. #Program Equa_2d from math import* print ("a =",end=" ") ; a=float(input ()) print ("b =",end=" ") ; b=float(input ()) print ("c =",end=" ") ; c=float(input ()) if a == 0 : #équation 1er degré if b == 0 : if c == 0 : print ("Toute IR") else: print ("Ensemble vide {}") else: print ("x = ", -c/b) else: delta = b**2 - 4*a*c if delta == 0 : #solution réelle double print ("x1=x2= ", -b/(2*a)) elif delta > 0: #deux solutions réelles print ("x1= ", (-b-sqrt (delta))/ (2*a)) print ("x2= ", (-b+sqrt (delta))/ (2*a)) else: print ("Deux solutions complexes")
  • 11. 11 Exercices en Python FENNI SALAH ©® 1992 Exercice 14 Ecrire un programme en Python, qui fait résoudre dans IR l'inéquation ax+b<0 pour tout couple de réels (a, b) donné. #Program Inequation from math import* print ("a =",end=" ") ; a=float(input ()) print ("b =",end=" ") ; b=float(input ()) if a > 0 : print ("x <",-b/a) elif a<0: print ("x >",-b/a) elif b<0: print ("Toute IR") else: print ("Impossible") Exercice 15 Ecrire un programme en Python qui affiche selon le cas, la nature du caractère (consonne, voyelle, chiffre ou symbole) correspondant à une touche saisie. #Program Touche version1 print ("Taper sur une touche"); c=input () if ("a"<=c<="z")or("A"<=c<="Z"): if c.upper() in {"A","E","I","U","O","Y"}: nature = "Voyelle" else: nature = "Consonne" elif "0"<=c<="9": nature = "Chiffre" else: nature = "Symbole" print (nature) #Program Touche version2 print ("Taper sur une touche"); c=input () match c: case c if ("a"<=c<="z")or("A"<=c<="Z"): if c.upper() in {"A","E","I","U","O","Y"}: nature = "Voyelle" else: nature = "Consonne" case c if "0"<=c<="9": nature = "Chiffre" case _: nature = "Symbole" print (nature) Exercice 16 Ecrire un programme en Python, qui fait lire dans cet ordre : un réel, un opérateur arithmétique (+, -, *, /) et un autre réel. A chaque opérateur valide correspond une opération arithmétique qu'il faut exécuter et afficher le résultat ou un message d'erreur, le cas échéant. #Program Calculette version1 a=float(input ("a=")) b=float(input ("b=")) op=input ("opérateur=") if op=="+" : print (a,op,b,"=",a+b ) elif op=="-" : print (a,op,b,"=",a-b) elif op=="*" : print (a,op,b,"=",a*b) elif op=="/" : if b == 0: print ("impossible") else: print (a,op,b,"=",a/b) else: print ("Opérateur incorrect")
  • 12. 12 Exercices en Python FENNI SALAH ©® 1992 #Program Calculette version2 a=float(input ("a=")) b=float(input ("b=")) op=input ("opérateur=") match op: case "+" : print (a,op,b,"=",a+b ) case "-" : print (a,op,b,"=",a-b) case "*" : print (a,op,b,"=",a*b) case "/" : if b == 0: print ("impossible") else: print (a,op,b,"=",a/b) case _: print ("Opérateur incorrect") Exercice 17 Ecrire un programme en Python, qui permet de saisir la moyenne annuelle d'un élève et affiche la décision du conseil de classe, la mention adéquate dans le cas où l'élève est admis : 18 ≤ moy Excellent 16 ≤ moy < 18 Très Bien 14 ≤ moy < 16 Bien 12 ≤ moy < 14 Assez Bien 10 ≤ moy < 12 Passable Moy < 10 Redouble #Program Bulletin print ("Donner la moyenne annuelle : ") moy=float(input ()) if moy < 10: dec= "Redouble" me= "" else: dec= "Admis" if moy < 12: me= "Passable" elif moy < 14: me= "Assez bien" elif moy < 16: me= "Bien" elif moy < 18: me= "Très bien" else: me= "Excellent" print ("#Moyenne =", moy,"#Décision =", dec,"#Mention =", me) Exercice 18 Ecrire un programme en Python qui saisit le numéro du mois et affiche le nombre de jours de ce mois. Pour le cas de février, on lit l'année, si l'année est bissextile, le nombre de jours est 29, sinon c'est 28 jours. #Program nbr_jours_mois version1 print ("N° du mois : ") ; m=int(input ()) if m in [1,3,5,7,8,10,12] : print ("31 jours") elif m in [4,6,9,11] : print ("30 jours") elif m==2 : print ("Année : "); a=int(input ()) if ((a%4==0)and(a%100!=0))or(a%400==0): print ("29 jours") else: print ("28 jours") else : print ("numéro du mois incorrect") #Program nbr_jours_mois version2 print ("N° du mois : ") ; m=int(input ()) match m: case 1|3|5|7|8|10|12: print ("31 jours") case 4|6|9|11: print ("30 jours") case 2: print ("Année : "); a=int(input ()) if ((a%4==0)and(a%100!=0))or(a%400==0): print ("29 jours") else: print ("28 jours") case _: print ("numéro du mois incorrect")
  • 13. 13 Exercices en Python FENNI SALAH ©® 1992 Exercice 19 Ecrire un programme en Python, qui saisit une date sous la forme jj/mm/aaaa (chaîne de 10 caractères) et l'affiche décodée (jj Mois aaaa). Exemple : 10/05/2007 donne 10 Mai 2007. #Program Dates print ("Saisir une date sous la forme jj/mm/aaaa") date=input () jj= date[0:2] ; aa = date[6:] ; mm=int(date[3:5]) match mm : case 1 : mois = "Janvier" case 2 : mois = "Février" case 3 : mois = "Mars" case 4 : mois = "Avril" case 5 : mois = "Mai" case 6 : mois = "Juin" case 7 : mois = "Juillet" case 8 : mois = "Août" case 9 : mois = "Septembre" case 10 : mois = "Octobre" case 11 : mois = "Novembre" case 12 : mois = "Décembre" print (jj,mois,aa) Exercice 20 Ecrire un programme en Python, qui fait lire une date initiale JI/MI/AI et une date finale JF/MF/AF et qui fait calculer et afficher la durée (exprimée en années, mois et jours) qui les sépare. #Program Anciennete print ("Donner la date initiale : ") ji=int(input ()) mi=int(input ()) ai=int(input ()) print ("Donner la date finale : ") jf=int(input ()) mf=int(input ()) af=int(input ()) if ji > jf: jf = jf + 30 mf = mf - 1 if mi > mf: mf = mf + 12 af = af - 1 jj = jf - ji mm = mf - mi aa = af - ai print (aa, "années",mm, "mois", jj, "jours") Exercice 21 Ecrire un programme en Python, qui saisit une date quelconque (jj, mm, aa) et affiche la date du lendemain. #Program Lendemain solution1 print ("jour = ",end="");j=int(input ()) print ("mois = ",end="");m=int(input ()) print ("année = ",end="");a=int(input ()) max=30 if m in [1,3,5,7,8,10]: max=31 if m==2: max=28 if a%4==0: max=29 j=j+1 if j>max: j=1 m=m+1 if m>12: m=1 a=a+1 print ("la date du lendemain est la suivante :") print ("*********",j,"/",m,"/",a,"********")
  • 14. 14 Exercices en Python FENNI SALAH ©® 1992 #Program Lendemain solution2 print ("jour = ",end="");j=int(input ()) print ("mois = ",end="");m=int(input ()) print ("année = ",end="");a=int(input ()) match m: case 1|3|5|7|8|10|12: dj=(j==31) case 4|6|9|11: dj=(j==30) case 2: if a%4==0: dj=(j==29) else : dj=(j==28) if dj: j=1 if m==12: m=1 a=a+1 else: m=m+1 else: j=j+1 print ("le jour suivant est :",j,"/",m,"/",a) #Program Lendemain solution3 print ("jour = ",end="");j=int(input ()) print ("mois = ",end="");m=int(input ()) print ("année = ",end="");a=int(input ()) if (j==31) and (m==12): j=1; m=1; a=a+1 elif (m in [1,3,5,7,8,10]) and (j==31) or(m in[4,6,9,11]) and (j==30) or(m==2) and (j==28) and (a % 4!= 0) or(m==2) and (j==29) and (a % 4 == 0): j=1; m=m+1 else: j=j+1 print ("la date du lendemain est la suivante :") print ("*********",j,"/",m,"/",a,"********") Exercice 22 Ecrire un programme en Python, qui traduit en toutes lettres un entier naturel donné entre 0 et 99. Exemples : 10  Dix 21  Vingt et un 85  Quatre vingt cinq #Program T_lettres print ("Donner un entier composé d'au maximum deux chiffres") n=int(input ()) d = n // 10 u = n % 10 message = "" if d==2: message = "vingt" if d==3: message = "trente" if d==4: message = "quarante" if d==5: message = "cinquante" if d==6: message = "soixante" if d==7: message = "soixante" if d==8: message = "quatre-vingt" if d==9: message = "quatre-vingt" if 2<=d<=9: if u==1: message = message+"-et-" elif (u!=0) or (d==7) or (d==9): message = message+"-" if d in [1,7,9]: if u==0: message = message+"dix" if u==1: message = message+"onze"
  • 15. 15 Exercices en Python FENNI SALAH ©® 1992 if u==2: message = message+"douze" if u==3: message = message+"treize" if u==4: message = message+"quatorze" if u==5: message = message+"quinze" if u==6: message = message+"seize" if u==7: message = message+"dix-sept" if u==8: message = message+"dix-huit" if u==9: message = message+"dix-neuf" else: if u==1: message = message+"un" if u==2: message = message+"deux" if u==3: message = message+"trois" if u==4: message = message+"quatre" if u==5: message = message+"cinq" if u==6: message = message+"six" if u==7: message = message+"sept" if u==8: message = message+"huit" if u==9: message = message+"neuf" print (message) Exercice 23 Ecrire un programme en Python, qui permet de déterminer le jour de la semaine correspondant une date donnée. Exemple : le 10/05/2007 est un jeudi. #Program jour_semaine print ("Donner le jour"); day=int(input ()) print ("Donner le mois"); month=int(input ()) print ("Donner l'année"); year=int(input ()) dayyear=(year-1)*365 + ((year-1)//4) daymonth=0 for cm in range (1,month): match cm: case 1|3|5|7|8|10|12 : daymonth=daymonth+31 case 4|6|9|11 : daymonth=daymonth+30 case 2 : if (year%4==0)and((year%100!=0)or(year%400==0)): daymonth=daymonth+29 else: daymonth=daymonth+28 weekday=(dayyear+daymonth+day)%7 match weekday: case 1:jj="Dimanche" case 2:jj="Lundi" case 3:jj="Mardi" case 4:jj="Mercredi" case 5:jj="Jeudi" case 6:jj="Vendredi" case 7:jj="Samedi" print ("Le jour correspondant est ", jj) Exercice 24 Ecrire un programme en Python qui lit deux valeurs entières (A et B) au clavier et qui affiche le signe du produit de A et B sans faire la multiplication. #Program Signe_produit print ("Introduisez deux nombres entiers :") A=int(input ()) B=int(input ()) if (A==0) or (B==0): print ("Le produit",A,"*",B,"est nul") elif ((A>0) and (B>0)) or ((A<0) and (B<0)): print ("Le signe du produit",A,"*",B,"est positif") else: print ("Le signe du produit",A,"*",B,"est négatif")
  • 16. 16 Exercices en Python FENNI SALAH ©® 1992 Exercice 25 Ecrire un programme en Python qui lit deux valeurs entières (A et B) au clavier et qui affiche le signe de la somme de A et B sans faire l'addition. #Program Signe_somme print ("Introduisez deux nombres entiers :") A=int(input ()) B=int(input ()) if (A==0) and (B==0): print ("La somme",A,"+",B,"est zéro") elif ((A>0)and(B>0))or((A<0)and(B>0)and(abs(A)<abs(B)))or((A>0)and(B <0)and(abs(A)>abs(B))): print ("Le signe de la somme",A,"+",B,"est positif") else: print ("Le signe de la somme",A,"+",B,"est négatif") Exercice 26 Considérez la séquence d'instructions suivante: Si (A>B) Alors Ecrire ("premier choix") Sinon Si (A>10) Alors Ecrire ("deuxième choix") Fin Si Si (B<10) Alors Ecrire ("troisième choix") Sinon Ecrire ("quatrième choix") Fin Si Déterminez les réponses sur l’écran pour chacun des couples de nombres suivants :  A=10 et B=5  A=5 et B=5  A=5 et B=10  A=10 et B=10  A=20 et B=10  A=20 et B=20 A=10 et B=5 premier choix troisième choix A=5 et B=5 troisième choix A=5 et B=10 quatrième choix A=10 et B=10 quatrième choix A=20 et B=10 premier choix quatrième choix A=20 et B=20 deuxième choix quatrième choix Exercice 27 Considérez la séquence d'instructions suivante: Si (A>B) Alors Si (A>10) Alors Ecrire ("premier choix") Sinon Si (B<10) Alors Ecrire ("deuxième choix") Sinon Si (A=B) Alors Ecrire ("troisième choix") Sinon Ecrire ("quatrième choix") FinSi Pour quelles valeurs de A et B s’affiche ou non le message : premier choix, deuxième choix, troisième choix, quatrième choix ? "premier choix" apparaît pour (A>B) et (A>10) "deuxième choix" apparaît pour (10 A>B) "troisième choix" apparaît pour (10 A>B 10) et (A=B) 10>10 impossible A>B et A=B impossible => "troisième choix" n'apparaît jamais "quatrième choix" apparaît pour (10 A>B 10) et (A B) 10>10 impossible => "quatrième choix" n'apparaît jamais Exercice 28 Écrire un programme en Python qui permet de saisir un temps (heure et minute) lui ajoute 5 minutes puis l'affiche. Exemples : • heure :10 minute :20 après 5 minutes : 10:25 • heure :10 minute:57 après 5 minutes : 11:02 • heure :23 minute:55 après 5 minutes : 00:00 #Program plus5min print ("Heure : ") ;h=int(input ()) print ("minute : ") ;m=int(input ()) if m<55: m = m+5 elif h!=23: h = h+1 m = m+5-60 else: h = 0 m = m-55
  • 17. 17 Exercices en Python FENNI SALAH ©® 1992 print ("Après 5 min :") if h<10: print ("0",h,sep="",end="") else: print (h,end="") print (":",end="") if m<10: print ("0",m,sep="") else: print (m) Exercice 29 Ecrire un programme en Python, qui demande à l'utilisateur trois valeurs entières et affiche la deuxième plus grande valeur. Exemples : pour 9 ; 5 ; 7 Le programme affiche : la deuxième plus grande valeur est 7 #Program deuxieme_max print ("Introduisez trois nombres entiers :") a=int(input ()) b=int(input ()) c=int(input ()) max1=a max2=b if a<b: max1 = b max2 = a if c>max1 : max2 = max1 elif c>max2: max2 = c print ("la deuxième plus grande valeur :",max2) Exercice 30 Un nombre de Niven est un entier qui est divisible par la somme de ses chiffres. Exemple : 112 est un nombre Niven. En effet 112 est divisible par la somme de ses chiffres qui est 4 (1+1+2=4) Ecrire un programme en Python, qui permet de lire un entier N (<=999), puis de vérifier et d’afficher s’il est un nombre de Niven ou non. #PROGRAM Niven print ("Donner un entier <= 999 : ") n=int(input ()) c = n//100 d = n//10%10 u = n%10 som = c+d+u verif = n%som == 0 print ("Niven : ", verif)
  • 18. 18 Exercices en Python FENNI SALAH ©® 1992 LES STRUCTURES ITERATIVES Exercice 1 Ecrire un programme en Python qui affiche l'alphabet en majuscule, d'abord à l'endroit, puis à l'envers, après un passage à la ligne. #Program Alphabet for c in range(ord("A"),ord("Z")+1): print (chr(c),end=" ") print () for c in range(ord("Z"),ord("A")-1,-1): print (chr(c),end=" ") Exercice 2 Ecrire un programme en Python qui affiche la table de multiplication par 3, pour les entiers de 1 à 10. #Program Table3 n = 10 for i in range(1,n+1): print ("3 *",i,"=",3*i) Exercice 3 Ecrire un programme en Python qui calcule et affiche la somme et le produit, des 20 premiers entiers (de 1 à 20). #Program Somme_Produit s= 0 p= 1 for i in range (1,21): s = s + i p = p * i print ("Somme =", s) print ("Produit = %.2f" %p) Exercice 4 Considérons la suite définie par la relation : Un+1 = Un + 3 et U1 = 2 On veut calculer la somme de 100 premiers termes de cette suite. Donner deux solutions distinctes en utilisant les boucles : POUR et TANT QUE. #Program Suite som = 0 u = 2 for i in range(1,101): som = som + u u = u + 3 print (som) #Program Suite som = 0 u = 2 i = 1 while (i<=100): som = som + u u = u+3 i = i+1 print (som) Exercice 5 Ecrire un programme en Python qui affiche la table de Pythagore (table de multiplication) pour les 9 premiers nombres entiers. #Program Pythagore n=9 for i in range(1,n+1): for j in range(1,n+1): print (i * j,end=" ") print ()
  • 19. 19 Exercices en Python FENNI SALAH ©® 1992 Exercice 6 Ecrire cinq programmes Python permettant d’afficher les triangles d’étoiles suivants : Exemple : (pour nL=5) * ********* * ***** *** ******* ** **** ***** ***** *** *** ******* *** **** ** ********* * ***** * Ecrire deux programmes Python permettant d’afficher les pyramides de nombres suivants : Exemple : (pour nL=6) 1 232 34543 4567654 567898765 67890109876 1 121 12321 1234321 123454321 12345654321 #Program Pyramide1 n=5 for i in range(0,n): for j in range(i+1,n): print (end=" ") for j in range(-i,i+1): print ("*",end="") print () Exercice 7 Ecrire un programme en Python qui permet de calculer et afficher la moyenne de notes fournies au clavier avec un "dialogue" se présentant ainsi : Combien de notes : 4 Note 1 : 12 Note 2 : 15.25 Note 3 : 13.5 Note 4 : 8.5 Moyenne de ces 4 notes : 12.31 #Program Moy_Notes print ("Combien de notes : ") n=int(input ()) s=0 for i in range(1,n+1): print ("Note",i, ":") note=float(input ()) s = s+note print ("Moyenne de ces "+str(n)+" notes : %.2f" %(s/n)) Exercice 8 Ecrire un programme en Python faisant calculer et afficher le factoriel d’un entier naturel N donné. Sachant que (pour N>0) : N ! = N x (N-1) x (N-2) x ...... 3 x 2 x 1. #Program Factoriel print ("Saisir un entier") n=int(input ()) fact = 1 for i in range(2,n+1): fact = fact * i print (n, "!=", fact) Exercice 9 Le "jeu du nombre mystérieux" consiste à jouer contre l'ordinateur comme suit : L'ordinateur choisit, au hasard, un entier entre 1 et 100 et on doit le trouver en 7 essais au maximum grâce aux indices "C'est grand" et "C'est petit". Au moment venu on affichera "Bravo vous avez gagné !!". Si le nombre d'essais est atteint sans trouver le nombre mystérieux, le programme affichera alors "Perdu, le nombre cherché est : ", suivie du nombre à trouver. Ecrire un programme en Python pour s'amuser avec l'ordinateur. #Program Jeu from random import* while True: nc = randint (1,100) ; essai = 0 ; np=0 while (np!=nc)and(essai!=7): essai = essai+1 print ("Essai numéro", essai, "Votre nombre : ") np=int(input ()) if np > nc : print ("C'est grand") elif np < nc: print ("C'est petit") else: print ("Bravo vous avez gagné !!") if np!=nc: print ("Perdu, le nombre cherché est : ", nc) print ("Voulez vous jouer encore ? (o/n)") ; rep=input () if rep!="o": break
  • 20. 20 Exercices en Python FENNI SALAH ©® 1992 Exercice 10 Ecrire un programme en Python qui permet de saisir un entier n, de déterminer et d'afficher tous ses chiffres qui le divisent. Exemple : pour n = 2376 alors les chiffres 2, 3 et 6 seront affichés. Exercice 10 #Program Diviseurs print ("Donner un entier") n=int(input ()) m=n while m!=0: r= m%10 m= m//10 if (n%r == 0): print (r,end=" ") Exercice 11 Ecrire un programme en Python, qui détermine toutes les manières possibles d'obtenir un total de 15 en ajoutant trois entiers choisis entre 1 et 9. #Program Som_15 for i in range(1,10): for j in range(1,10): for k in range(1,10): if (i+j+k==15): print (i, j, k) Exercice 12 On se propose d'afficher un histogramme à l'aide des lettres A, B et C comme celui de l'exemple ci-dessous. Ecrire un programme en Python qui saisit le nombre de A, le nombre de B et le nombre de C puis affiche l'histogramme correspondant. Les nombres sont des entiers naturels inférieurs ou égaux à 15. Exemple d'exécution : Entrer trois nombres entiers compris entre 0 et 15 : 4,7, 2 A A A A B B B B B B B C C #Program Histogramme print ("Entrer trois entiers compris entre 0 et 15") a=int(input ()) b=int(input ()) c=int(input ()) max=a if b>max : max=b if c>max : max=c for i in range(max,0,-1): if i>a : print (end=" ") else: print ("A",end=" ") if i>b: print (end=" ") else: print ("B",end=" ") if i>c : print () # print (end="n") else: print ("C") # print ("C",end="n") Exercice 13 Ecrire un programme en Python, qui permet de déterminer la somme des chiffres d'un nombre entier donné (exemple : pour N= 25418, on aura 2+5+4+1+8 = 20). #Program Som_Chiffres print ("Donner un entier") n=int(input ()) som=0 while n!=0: r = n%10 som = som+r n = n//10 print ("La somme de chiffres est :", som) Exercice 14 Un entier naturel de trois chiffres est dit cubique s'il est égal à la somme des cubes de ses trois chiffres. Exemple : 153 est cubique car 153 = 13 + 53 + 33 Ecrire un programme en Python qui cherche et affiche tous les entiers cubiques de trois chiffres. #Program Nbr_Cube for k in range(100,1000): c = k//100 d = (k//10)%10 u = k%10 if (u*u*u+d*d*d+c*c*c) == k: print (k, "est un nombre cubique")
  • 21. 21 Exercices en Python FENNI SALAH ©® 1992 Exercice 15 Ecrire un programme en Python, qui calcule et affiche les sommes suivantes : • S1 = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n • S2 = 1 + 1/3 + 1/5 + ... + 1/n • S3 = -1/2 - 1/4 - 1/6 - ... - 1/(n-1) Avec n, un entier naturel impair donné. #Program Somme valide=False while valide==False: print ("Saisir un entier impair :") n=int(input ()) valide=(n%2) != 0 s1=0; s2=0; s3=0 for i in range(1,n+1): if i%2 !=0: s2 = s2 + 1/i else: s3 = s3 - 1/i s1= s2 - s3 print ("%.2f"%s1, "%.2f"%s2,"%.2f"%s3) Exercice 16 On donne un entier naturel n strictement positif et on définit la suite de Syracuse par: 0 1 1 2 3 1 k k k k S n S S div S S − − =   =   = +  Ecrire un programme en Python qui fait afficher les termes de cette suite commençant par le terme S0=N jusqu'au premier 1 obtenu. #Program Syracuse n=int(input ("Saisir un entier > 0 : ")) S=n print (S,end=" ") while S!=1: if S%2 == 0: S= S // 2 else: S= 3*S+1 print (S,end=" ") Exercice 17 Si nous lançons 3 dés, le total des points est compris entre 3 et 18. Quelle est la probabilité d'avoir un total de 12 ? Ecrire un programme en Python, qui répond à cette question en simulant 100 lancers successifs. #Program Probabilite from random import* n = 12; essai = 100 cumul = 0 for i in range(1,essai+1): d1 = 1 + randint(1,6) d2 = 1 + randint(1,6) d3 = 1 + randint(1,6) if (d1+d2+d3 == n) : cumul = cumul +1 print ("Probabilité est : %.2f" %(cumul/essai)) Exercice 18 Un nombre réel X et un nombre entier N étant donné, proposer un programme en Python qui fait calculer Xn . Etudier tous les cas possibles (N positive ou négative). #Program Puissance_n x=float(input ("Saisir un nombre réel : ")) n=int(input ("Saisir la puissance n : ")) y = 1 for k in range(1,abs(n)+1): y = y * x if n<0 : y = 1/y print (str(x)+" puissance "+str(n)+" = %.2f" %y) Exercice 19 Ecrire un programme en Python qui saisit deux entiers X et Y, et fait calculer l’expression S=X*Y par additions successives (X*Y=X+X+X+...). Choisir la somme qui fait intervenir le minimum de termes. #Program Multiplication_Addition print ("Donner deux entiers") x=int(input ()) y=int(input ()) print (x, "*", y, "=",end=" ") if abs(y)>abs(x): aux = x x = y y = aux if y<0: y= -y x= -x s = 0 Si est pair Si est impair
  • 22. 22 Exercices en Python FENNI SALAH ©® 1992 for i in range(1,y+1): s = s+x print (s) Exercice 20 Pour un entier naturel N donné. Ecrire un programme en Python qui fait calculer et afficher la suite : ! 1 ..... ! 2 1 ! 1 1 ! 0 1 n S + + + + = #Program Suite print ("Donner un entier");n=int(input ()) s = 1 invfact = 1 for i in range(1,n+1): invfact = invfact/i s = s + invfact print ("%.3f" %s) Exercice 21 On remarque que : 12 x 42 = 21 x 24 12 x 63 = 21 x 36 12 x 84 = 21 x 48 Il y a 14 produits qui vérifient la propriété : (10 a + b) (10 c + d) = (10 b + a) (10 d + c), où a est différent de b et c est différent de d. Ecrire un programme en Python qui fait sortir tous ces entiers. #program produits for a in range(1,10): for c in range(a,10): for b in range(c,a-1,-1): for d in range(c,a-1,-1): if ((10*a+b)*(10*c+d)==(10*b+a)*(10*d+c)) and (a!=b)and(b!=c): print (a,b,"*",c,d,"=",b,a,"*",d,c,sep="") Exercice 22 On se propose de déterminer une valeur approchée de Π par la méthode de Wallis, définie par la formule suivante : π 2 2 4 4 6 6 8 8 = x x x x x x x x.... 2 1 3 3 5 5 7 7 9 Ecrire un programme en Python qui utilise la formule ci- dessus pour déterminer et afficher une valeur approchée de Π à 10-8 prés. #PROGRAM PI_WALLIS p=1 i=0 valide=False while not valide: i=i+2 r=i/(i-1)*i/(i+1) diff=(p*r)-p p=p*r valide=abs(diff)<1e-8 print ("Par la formule de Wallis Pi = %.7f" %(2*p)) Exercice 23 On se propose de déterminer le PGCD (Plus Grand Commun Diviseur) de deux entiers positifs non nuls A et B en utilisant l'algorithme d'Euclide : Sachant que PGCD (A, B) = PGCD(B, R), avec R = A mod B. Tant que le reste R est non nul, on remplace A par B et B par R. Le dernier reste R non nul est alors le PGCD des deux nombres. Exemple : PGCD (32, 12) = PGCD (12, 8) = PGCD (8, 4) = PGCD (4, 0) = 4. #Program PGCD_Euclide valide=False while not valide: print ("Saisir deux entiers > 0") a=int(input ()) b=int(input ()) valide=(a>0) and (b>0) while b!=0 : r= a%b a= b b= r print ("PGCD =",a) Exercice 24 On se propose de déterminer le PGCD (Plus Grand Commun Diviseur) de deux entiers positifs non nuls A et B en utilisant la méthode de la différence : Tant que (a ≠ b) on répète la recherche : PGCD (a, b) = PGCD (a-b, b) si a>b, sinon PGCD (a, b) = PGCD (a, b-a) Exemple : PGCD (10,16) = PGCD (10,6) = PGCD (4,6) = PGCD (4,2) = PGCD (2,2) = 2. #Program PGCD_Différence valide=False while not valide: print ("Saisir deux entiers > 0") a=int(input ()) b=int(input ()) valide=(a>0) and (b>0) while a!=b : if a>b: a= a-b
  • 23. 23 Exercices en Python FENNI SALAH ©® 1992 else: b=b-a print ("PGCD =",a) solution2 # Calcul d'un PGCD par différences successives a=eval(input ("Valeur de a ?")) b=eval(input ("Valeur de b ?")) while a!=b: d=abs(a-b) b=a a=d print ("pgcd=",d) if d==1: print ("Les deux entiers sont premiers entre eux.") Exercice 25 On se propose de déterminer le PPCM (Plus Petit Commun Multiple) de deux entiers positifs non nuls M et N. #Program PPCM1 valide=False while not valide: print ("Saisir deux entiers > 0") a=int(input ()) b=int(input ()) valide=(a>0) and (b>0) if a<b: aux=a a=b b=aux pcm=a while (pcm % b != 0): pcm = pcm + a print ("PPCM =", pcm) #Program PPCM2 valide=False while not valide: print ("Saisir deux entiers > 0") a=int(input ()) b=int(input ()) valide=(a>0) and (b>0) if a<b: aux=a a=b b=aux i=1 while ((a*i) % b) != 0 : i = i + 1 print ("PPCM =", a*i) Exercice 26 Suite de Fibonacci Les nombres de Fibonacci sont donnés par la récurrence : Fn = Fn-2 + Fn-1 avec F0 = F1 = 1. Ecrire un programme en Python qui affiche les 20 premiers nombres de Fibonacci. #Program Fibonacci f0 = 1 f1 = 1 print (f0,f1,end=" ") for k in range(2,20): f2 = f1+f0 f0 = f1 f1 = f2 print (f2,end=" ")
  • 24. 24 Exercices en Python FENNI SALAH ©® 1992 Exercice 27 Un entier supérieur à 1 est dit premier s'il admet exactement deux diviseurs : 1 et lui-même. Ecrire un programme en Python qui cherche et affiche tous les nombres premiers ≤ à 400. #Program Nbre_Premiers for nb in range(2,401): i = 2 while (nb % i != 0) and (i <= nb // 2) : i= i+1 if (i > nb // 2) : print (nb,end=" ") Exercice 28 Un nombre entier naturel est dit parfait s'il est égal à la somme de ses diviseurs sauf lui-même. Ecrire un programme en Python permettant de déterminer et d'afficher tous les nombres parfaits compris entre a et b (2<a<b). #Program Parfait valide=False while not valide: print ("Saisir deux entiers a et b") a=int(input ()) b=int(input ()) valide= (1<a) and (a<b) for nb in range(a,b+1): som=0 for i in range(1,nb//2+1): if (nb%i == 0): som=som+i if nb==som : print (nb, "est parfait") Exercice 29 Deux entiers m et n sont dit amis si et seulement si la somme des diviseurs de m sauf lui-même est égale à n et la somme des diviseurs de n sauf lui-même est égale à m. Ecrire un programme en Python permettant de déterminer et d'afficher tous les nombres amis compris entre 1 et 1000. #Program Amis def diviseurs (x) : sdx=1 for i in range(2,x//2+1): if (x%i) == 0: sdx= sdx+i return sdx #Programme Principal for m in range(1,1001): for n in range (1,1001): sdn = diviseurs (n) sdm = diviseurs (m) if (sdm==n) and (sdn==m): print (n, "et", m, "sont amis") Exercice 30 Ecrire un programme en Python permettant de décomposer un entier N donné (2 ≤ N ≤ 100) en produit de facteurs premiers et d'afficher N et le produit de ses facteurs trouvés. Exemple : Si n = 60 alors on affiche 60 = 2*2*3*5. #Program Facteur_Premier from numpy import array t = array([int()]*100) valide=False while not valide: print ("donner un entier entre 2 et 1000") n=int(input ()) valide=(n>=2) and (n<=1000) print (n, "= ",end="") i=2 ; f=0 while n!=1: if (n%i == 0): n= n // i t[f] = i f=f+1 else : i=i+1 print (t[0],end="") for i in range(1,f): print (" *",t[i],end="")
  • 25. 25 Exercices en Python FENNI SALAH ©® 1992 Exercice 31 Sachant que 3 5 7 9 sin( ) ...... 1! 3! 5! 7! 9! x x x x x x = − + − + − tel que x ∈ [0, 2π]. Ecrire un programme en Python qui permet d'afficher sin(x) en utilisant la formule ci-dessus. Le calcul s'arrête quand la différence entre deux termes consécutifs devient ≤ à 10-4 . La dernière somme calculée est une valeur approchée de sin(x). #Program calcul_sinus def sinus (x) : som=x; term2=x; i=1 valide=False while not valide: i=i+2 term1=term2 term2=term2 *-(x**2)/(i*(i-1)) som=som+term2 valide= abs(term2-term1) <= 0.0001 return som #Programme Principal from math import* valide=False while not valide: print ("donner un réel x ") x=float(input ()) valide=(-pi <= x) and (x <= pi) print ("sin(",x,")= %.5f" %sinus(x),sep="") Exercice 32 Ecrire un programme en Python qui donne une approximation de : ex = 1 + x 1! + x2 2! + x3 3! + ⋯ + xn n! à epsilon près. Le calcul s’arrête lorsque ! n x epsilon n ≤ . X et Epsilon sont des données. #Program Exponentiel epsilon=float(input ("epsilon = ")) x=float(input ("x = ")) s=1 i=1 p=1 f=1 while abs(p/f) > epsilon: p=p*x f=f*i s=s+p/f i=i+1 print ("expn = %.3f" %s) Exercice 33 Soit la somme Sn suivante : 2 3 4 3 5 7 2 1 1 ...... 2 3 4 n n n S n − =+ + + + + Ecrire un programme en Python permettant de calculer et d'afficher la somme Sn pour un entier n positif donné en utilisant la formule ci-dessus. def saisie (): valide=False while not valide: m=int(input ("Donner un entier positif")) valide=m>0 return m def puissance (x): p=1 for j in range(1,x+1): p=p*x return p #Programme Principal n=saisie() s=0 for i in range(1,n+1): s= s + (2*i-1) / puissance (i) print ("la somme = %.2f" %s)
  • 26. 26 Exercices en Python FENNI SALAH ©® 1992 Exercice 34 Ecrire un programme en Python, qui lit deux entiers naturels n et p avec (0<p<n), puis calcule et affiche le nombre de combinaisons de p objets parmi n. On rappelle que : ( ) ! ! ! p n n C p n p = − #Program Combinaison1 def fact (x) : f = 1 for i in range(2,x+1): f = f * i return f def saisie(): valide=False while not valide: p=int(input ("p=")) n=int(input ("n=")) valide=(0<p) and (p<=n) return p,n #Programme Principal p,n=saisie() cnp = fact (n) / (fact (p) * fact (n-p)) print ("Combinaison = %.2f" %cnp) #Program Combinaison2 def calcul (n) : nf =1 pf =1 npf =1 for i in range(2,n+1): nf = nf*i if i<=p : pf = pf*i if i<=n-p: npf = npf*i return nf/(pf*npf) def saisie(): valide=False while not valide: p=int(input ("p=")) n=int(input ("n=")) valide=(0<p) and (p<=n) return p,n #Programme Principal p,n=saisie() cnp = calcul(n) print ("Combinaison = %.2f" %cnp) Exercice 35 Un entier de n chiffres (1<n<9) est dit bien ordonné si ses chiffres forment, de gauche à droite, une suite strictement croissante. Exemples : L'entier de 3 chiffres, 147 est bien ordonné car 1<4<7 L'entier de 4 chiffres, 1265 n'est pas bien ordonné car 6>5 Ecrire un programme en Python qui saisit un entier n (1<n<9) et fait sortir tous les entiers bien ordonnés de n chiffres et le nombre total de ces entiers. #Program Ordered def min_max (m) : min=0 max=0 for i in range(1,m+1): min=10*min + i max=10*max + (9-m+i) return min,max def ordre (m) : valide=False while not valide: c1= m % 10 m= m // 10 c2= m % 10
  • 27. 27 Exercices en Python FENNI SALAH ©® 1992 valide=(c1<=c2)or(m<10) return c1>c2 def saisie (): valide=False while not valide: m=int(input ("Donner un entier n compris entre 2 et 8 : ")) valide= (2<=m)and(m<=8) return m #Programme Principal n=saisie() mn,mx=min_max (n) p=0 for i in range(mn,mx+1): if ordre (i): p=p+1 print (p,"-",i) Exercice 36 Ecrire un programme en Python qui affiche tous les entiers positifs impairs inférieurs à 100, en omettant les nombres divisibles par 7. L'affichage doit être sur 5 colonnes comme l'aspect suivant : 1 3 5 9 11 13 15 17 19 23 25 27 29 31 33 ….. ….. ….. ….. ….. #Program Nbre_Impairs n=0 for i in range(1,100): if (i%2==1)and(i%7!=0): n=n+1 if n%5!=0: print (i,end="t ") else : print (i) Exercice 37 On se propose d’écrire un programme en Python qui permet de déterminer et d’afficher toutes les représentations sous forme de sommes d’entiers consécutifs d’un entier n donné. Exemple d’exécution : Entrer un entier : 45 Les sommes consécutives sont : 45 = 1+2+3+4+5+6+7+8+9 45 = 5+6+7+8+9+10 45 = 7+8+9+10+11 45 = 14+15+16 45 = 22+23 #Program sommes_entiers n=int(input ("Entrer la valeur de N :")) for i in range(1,n//2+1): s= i j= i while s<n: j= j +1 s=s + j if s==n: print (n,"=",i,end="") for k in range(i+1,j+1): print (" +",k,end="") print () Exercice 38 En mathématiques, un entier N est un carré parfait s'il existe un entier k tel que N = k2 . Ecrire un programme en Python permettant de déterminer et d'afficher tous les carrés parfaits compris entre 1 et 9999. #Program carre_parfait from time import sleep for n in range(1,10000): k=0 while (k*k)<n: k=k+1 if (k**2)==n: print (n,"=",k,"*",k) sleep(1)
  • 28. 28 Exercices en Python FENNI SALAH ©® 1992 Exercice 39 Considérons un échiquier classique de 64 cases disposées en un carré de 8 lignes composées de 8 cases. On demande d'écrire un programme REINE permettant de lire les coordonnées (x, y) définissant la position de la reine, d'afficher la lettre R à la position correspondante et une * (astérisque) à chacune case accessible. Exemple : Pour x=2 et y=5 on aura l'affichage : * * * * * * * R * * * * * * * * * * * * * * * * #Program Reine x=int(input ("Les coordonnées de la dame: X = ")) y=int(input (" Y = ")) for i in range(1,9): for j in range(1,9): if (i==x) and (j==y): print ("R",end="") elif (i==x) or (j==y) or (abs(x-i)==abs(y-j)): print ("*",end="") else: print (end=" ") print () Exercice 40 PGCD et PPCM de deux entiers : La méthode la plus simple est de chercher le premier multiple de a qui soit divisible par b, sachant que le produit du pgcd par le ppcm est ab, on a les deux en même temps. #Program ppcm_pgcd def saisie (): valide=False while not valide: print ("Donner deux entiers >0") a=int(input ()) b=int(input ()) valide=(a>0) and (b>0) return a,b def affiche(a,b): k = 1 while (a*k)%b!=0: k = k+1 print ("ppcm de", a, "et", b, "=", a*k) print ("pgcd de", a, "et", b, "=", b // k) #Programme Principal n,m=saisie() affiche(n,m) Exercice 41 Soient A et B deux entiers naturels quelconques non nuls. On a: PGCD (A, B) * PPCM (A, B) = A*B Ecrire un programme en Python qui permet de calculer A*B en utilisant cette propriété. #Program produit_ab def pgcd_ppcm(a,b): k = 1 while (a*k)%b!=0: k = k+1 ppcm=a*k pgcd=b // k return ppcm,pgcd #Programme Principal print ("Donner a et b : ") a=int(input ()) b=int(input ()) ppcm,pgcd=pgcd_ppcm(a,b) print (a,"*",b,"=",pgcd*ppcm)
  • 29. 29 Exercices en Python FENNI SALAH ©® 1992 Exercice 42 Soient a et b deux réels quelconques. Pour tout entier impair n, supérieur ou égal à 3, on a : an + bn = (a+b) (an-1 – an-2 b + … - abn-2 + bn-1 ) Ecrire un programme en Python qui permet de calculer an + bn . #Program Exercice_42 def saisie(): print ("donner a et b") a=float(input ()) b=float(input ()) valide=False while not valide: n=int(input ("donner n ")) valide=(n>=3) and (n%2==1) return a,b,n def power ( x,n): p=1 for k in range(1,n+1): p=p*x return p #Programme Principal a,b,n=saisie() s=0 signe=1 for i in range(0,n): s=s+signe*power(b,i)*power(a,n-i-1) signe=-signe print ("%.2f" %((a+b)*s)) Exercice 43 L’entier naturel X est divisible par 11 si et seulement si la somme de ses chiffres : x0 – x1 + x2 – x3 + … + (-1)n xn est divisible par 11. Exemple : Si X = 6182319 La somme : 9-1+3-2+8-1+6 = 22 Or 22 est divisible par 11, donc 6182319 l’est aussi. Ecrire un programme en Python qui permet de vérifier cette règle de divisibilité. #Program divisible_11 def saisie (): valide=False while not valide: print ("Donner un entier ") x=int(input ()) valide=x>0 return x def divs_11(x): signe=1 som=0 while x!=0: som=som+signe*(x%10) x=x // 10 signe=-signe return som%11 == 0 #Programme Principal x=saisie() if divs_11(x): print ("divisible par 11") else: print ("non divisible par 11") Exercice 45 Un entier naturel est divisible par 7 si la différence entre le nombre de dizaines et 2 fois le chiffre des unités est divisible par 7. Exemple : Pour vérifier si 17381 est divisible par 7, on fait : 1738 – (2 x 1) = 1736 ; 173 – (2 x 6) = 161 ; 16 – (2 x 1) = 14 Or 14 est divisible par 7, donc 17381 l'est aussi ! #Program divis_7_13 def div_7 (n) : while (n>99) : n = (n//10) - 2 * (n%10) return (n%7 == 0) def div_13 (n) : while (n>99): n = (n // 10) + 4 * (n % 10) return (n % 13 ==0)
  • 30. 30 Exercices en Python FENNI SALAH ©® 1992 Un entier naturel est divisible par 13 si l'addition du nombre de dizaines et 4 fois le chiffre des unités est divisible par 13. Exemple : Pour vérifier si 8541 est divisible par 13, on fait : 854 + (4 x 1) = 858 ; 85 + (4 x 8) = 117 ; 11 + (4 x 7) = 39 Or 39 est divisible par 13, donc 8541 l'est aussi ! Ecrire un programme en Python permettant d’afficher sur l'écran : - D’abord, les 100 premiers entiers divisibles par 7 - Ensuite, les 100 premiers entiers divisibles par 13. #Programme Principal print ("les nombres divisibles par 7 :") nb=0;n=0 while nb!=100 : if div_7(n): print (n,end=" ") nb=nb+1 n=n+1 print () print ("les nombres divisibles par 13 :") nb=0; n=0 while nb!=100 : if div_13(n): print (n,end=" ") nb=nb+1 n=n+1 Exercice 46 Un entier positif K à n chiffres est dit nombre de Kaprekar si lorsqu'on élève K au carré, la somme du nombre composé des n chiffres de droite au nombre composé des n ou n-1 chiffres de gauche redonne le nombre d'origine. Exemples : 9, 45 et 297 sont des nombres de Kaprekar : 92 = 81 et 1+8=9 ; 452 = 2025 et 25+20=45 ; 2972 = 88209 et 209+88 = 297 Ecrire un programme en Python qui permet d’afficher tous les nombres de KAPREKAR dans l’intervalle [4,1000] en utilisant la méthode décrite ci-dessus. #Program Nbre_kaprekar def kaprekar(m): ch=str(m**2) l = len(ch) ch1 = ch[0:l//2] ch2 = ch[l//2:l] n1=int(ch1) n2=int(ch2) return m==n1+n2 #Programme Principal for k in range(4,1000): if kaprekar(k): print (k,end=" ") Exercice 47 Un nombre premier N est dit circulaire s’il vérifie la propriété suivante : chacune des rotations de ses chiffres d’un élément vers la droite, forme à son tour un nombre premier. Exemples : - Si N=719, N est un nombre premier circulaire car 719, 971 et 197 sont des nombres premiers, avec : - 971 est le nombre obtenu après une rotation des chiffres de 719 d’un élément vers la droite. - 197 est le nombre obtenu après une rotation des chiffres de 971 d’un élément vers la droite. - Si N=23, N n’est pas un nombre premier circulaire car il est premier mais 32 ne l’est pas. - Si N=6102, N n’est pas un nombre premier circulaire car il n’est premier. On veut chercher tous les nombres circulaires se trouvant dans l’intervalle [p, q] (avec p et q sont deux entiers donnés tels que 10<p<q<20000). #Program premier_circulaire def saisie(): valide=False while not valide: p=int(input ("p = ")) q=int(input ("q = ")) valide=(10<p)and(p<q)and(q<20000) return p,q def premier(x): test=True i=2 while (test==True)and(i<=x//2): if x%i==0: test=False else : i=i+1 return test def circulaire(x): ok=premier(x) if ok: ch=str(x) i=0 while (i!=len(ch)-1) and ok:
  • 31. 31 Exercices en Python FENNI SALAH ©® 1992 ch=ch[len(ch)-1]+ch[0:len(ch)-1] x=int(ch) ok=premier(x) i=i+1 return ok #Programme Principal p,q=saisie() for n in range(p,q+1): if circulaire(n): print (n,end=" ") Exercice 48 Fractions égyptiennes Toute fraction peut s’écrire comme une somme de fractions ayant 1 comme numérateur. Cette décomposition est appelée décomposition en fractions égyptiennes. En voici un exemple : 𝟕𝟕 𝟖𝟖 = 𝟏𝟏 𝟐𝟐 + 𝟏𝟏 𝟑𝟑 + 𝟏𝟏 𝟐𝟐𝟐𝟐 Ecrire un programme en Python prenant en entrée le numérateur N et le dénominateur D d’une fraction et affiche sa décomposition en fraction égyptiennes. #Program frac_egypt n=int(input ("n=")) d=int(input ("d=")) while d%n!=0: i=(d // n)+1 print (1,"/",i,"+",sep="",end="") n=i*n-d d=i*d print (1,"/",d // n,sep="") Exercice 49 Un nombre est dit super premier s'il est premier et si, en supprimant des chiffres à partir de sa droite, le nombre restant est aussi premier. Exemple : Le nombre 59399 est super premier car les nombres 59399,5939, 593,59et 5sonttouspremiers. Ecrire un programme en Python qui permet de : • Saisir un entier n tel que 40000 < n < 100000, • Chercher tous les nombres premiers inférieurs ou égaux à n, les afficher à raison d'un nombre par ligne en mentionnant devant chaque nombre super premier la note « super premier ». #Program super_premier def saisie(): valide=False while not valide: n=int(input ("n = ")) valide=(4<n) and (n<100000) return n def premier(x): test=True i=2 while (test==True)and(i<=x//2): if x%i==0: test=False else : i=i+1 return test def super(x): test=True while (test==True)and(x>=10): x=x // 10 if x!=1 : test=premier(x) return test #Programme Principal n=saisie() for i in range(2,n+1): if premier(i): if super(i): print (i,"super premier") else: print (i)
  • 32. 32 Exercices en Python FENNI SALAH ©® 1992 Exercice 50 On se propose d’écrire un programme en Python conversion permettant de saisir un nombre binaire de longueur minimale 2 puis de le convertir en décimal. Pour ce faire, on multiplie la valeur de chaque bit*2 puissance «le poids du bits (ordre-1)». N.B : On rappelle qu’un nombre binaire est composé uniquement par des 0 et des 1. Exemple : (1001101)2= 1*2 6 +0*25 +0*24 +1*23 +1*22 +0*21 +1*20 = 64+0+0+8+4+0+1 = (77)10. #Program Conversion_base2_base10 def saisir(): valide=False while not valide: print ("Donner un nombre binaire") ch_bin=input () i=0 binaire=True while binaire and (i!=len(ch_bin)): binaire =ch_bin[i] in ["0","1"] i=i+1 valide=binaire return ch_bin def conv_b2_b10(ch_bin): dec=0 puiss=1 for i in range(len(ch_bin)-1,-1,-1): if ch_bin[i]=="1": dec=dec+puiss puiss=puiss*2 return dec #Programme Principal ch_bin=saisir() print ("(",ch_bin,")2","=(",conv_b2_b10(ch_bin),")10") Exercice 51 Jeu « des allumettes » Ecrire un programme en Python permettant de simuler le jeu suivant : Au départ on dispose quelques allumettes sur une table. Chaque joueur peut choisir de prendre 1, 2 ou 3 allumettes en même temps. Le perdant est celui qui retire la dernière allumette. #Program jeux_allumette from random import* j= randint(10,20) print ("Jeu avec ",j," allumettes") while j > 0 : if j > 3 : i= randint(1,3) elif j==3 : i=randint(1,2) else : i=1 j=j-i print ("Je prend ",i," allumette(s). Il en reste ",j) if j==0: print ("Bravo vous avez gagné !") else: valide=False while not valide: print ("Donnez votre jeu: 1 ou 2 ou 3") s=int(input ()) valide= s in {1,2,3} j = j - s if j == 0 : print ("Vous avez perdu !") Exercice 52 Un nombre colombien, ou auto-nombre, est un entier naturel qui, dans une base donnée, ne peut pas s'écrire sous la forme d'un nombre ajouté à la somme des chiffres de ce nombre. Exemples : • 23 n'est pas un nombre colombien, puisqu'il peut être généré par la somme de 16 et de ses chiffres, #Program auto_nombre def verif(n): def somchif(x): sc=0 while x!=0: sc=sc+ x % 10 x=x // 10 return sc y=n-1
  • 33. 33 Exercices en Python FENNI SALAH ©® 1992 c’est-à-dire, 23 = 16 + 1 + 6. • 20 est un nombre colombien car il n'existe pas une telle somme pour 20. Ecrire un programme en Python qui permet d’afficher tous les nombres colombiens < 1000. test=(n==y+somchif(y)) while not((test) or (y<=n // 2)): y=y-1 test=(n==y+somchif(y)) return test #Programme Principal for n in range(1,1000): if verif(n)==False: print (n," est auto nombre") Exercice 53 Un nombre Vampire est un nombre qui est égal à un produit de ses chiffres. Exemple : 126 = 21 x 6 Ecrire un programme en Python qui permet de déterminer tous les nombres Vampires de trois chiffres. #Program vampire def verif(n): c=n // 100 d=n // 10 % 10 u=n % 10 p1=c*(d*10+u) p2=c*(u*10+d) p3=d*(c*10+u) p4=d*(u*10+c) p5=u*(d*10+c) p6=u*(c*10+d) return n in {p1,p2,p3,p4,p5,p6} #Programme Principal for n in range(100,1000): if verif(n): print (n,end=" ") Exercice 54 Le PGCD de deux nombres entiers M et N supérieurs ou égaux à 2 a pour décomposition en facteurs premiers le produit des facteurs premiers apparaissant à la fois dans la décomposition de M et de N munis du plus petit des exposants trouvés dans la décomposition de M et de N. Ainsi, si M = 23 x 34 x 52 x 7 et N = 22 x 35 x 73 x 11 alors pgcd (m, n) = 22 x 34 x 7 #Program PGCD_fact_prem from numpy import array fa=array([int()]*100) fb=array([int()]*100) def saisie (): valide=False while not valide: a=int(input ("a=")) b=int(input ("b=")) valide=(1<=a) and (a<=b) and (b<=10000) return a,b def factprem(n): fp=array([int()]*100) i = 2 ;f=0 while n!=1: if n % i == 0: n= n // i f=f+1 fp[f] = i else: i=i+1 return fp,f def pgcd(fa,fb,na,nb) : t=array([int()]*100) i=1;j=1;k=0 while (i<=na) and (j<=nb): if fa[i]==fb[j]: k=k+1 t[k]=fa[i] i=i+1
  • 34. 34 Exercices en Python FENNI SALAH ©® 1992 j=j+1 elif fa[i]>fb[j]: j=j+1 else: i=i+1 p=1 for i in range(1,k): p=p*t[i] return p #Programme Principal a,b=saisie() fa,na=factprem(a) fb,nb=factprem(b) print("PGCD(",a,",",b,")","= ",pgcd(fa,fb,na,nb)) #Program PGCD_fact_prem Solution2 from numpy import array def saisie (): valide=False while not valide: a=int(input ("a=")) b=int(input ("b=")) valide=(1<=a) and (a<=b) and (b<=10000) return a,b def pgcd( a , b) : fa=array([int()]*100) fb=array([int()]*100) def decfact(n): fp=array([int()]*100) i=2 ;f=0 while n!=1: if n % i == 0: n= n // i f=f+1 fp[f] = i else: i=i+1 return fp,f def nb(x,n,t): s = 0 for j in range(1,n+1): if t[j] == x : s=s+1 return s def puiss(x,y): if y == 0: p= 1 else: p= x * puiss(x,y-1) return p fa,af=decfact(a) #decomposition en facteurs premiers de a dans tableau fa de taille af fb,bf=decfact(b) #decomposition en facteurs premiers de b dans tableau fb de taille bf i = 2; p = 1 while not ((i > fa[af] ) and ( i > fb[bf] )): nba = nb(i,af,fa) nbb = nb(i,bf,fb) if (nba!=0) and (nbb!=0):
  • 35. 35 Exercices en Python FENNI SALAH ©® 1992 if nba < nbb: p = p* puiss(i,nba) else: p = p* puiss(i,nbb) i=i+1 return p #Programme Principal a,b=saisie() print ("PGCD(",a,",",b,")"," = ",pgcd(a,b)) Exercice 55 Le PPCM de deux nombres entiers M et N supérieurs ou égaux à 2 a pour décomposition en facteurs premiers le produit des facteurs premiers apparaissant dans M ou dans N munis du plus grand des exposants trouvés dans la décomposition de M et de N. Ainsi, si M = 23 x 34 x 52 x 7 et N = 22 x 35 x 73 x 11 alors ppcm (m, n) = 23 x 35 x 52 x 73 x 11 #Program PPCM_fact_prem from numpy import array fa=array([int()]*100) fb=array([int()]*100) def saisie (): valide=False while not valide: a=int(input ("a=")) b=int(input ("b=")) valide=(1<=a) and (a<=b) and (b<=10000) return a,b def factprem(n): fp=array([int()]*100) i = 2 ;f=0 while n!=1: if n % i == 0: n= n // i f=f+1 fp[f] = i else: i=i+1 return fp,f def ppcm(fa,fb,na,nb) : t=array([int()]*100) i=1;j=1;k=0;p=1 while (i<=na) and (j<=nb): k=k+1 if fa[i]==fb[j]: p=p*fa[i] i=i+1 j=j+1 elif fa[i]<fb[j]: p=p*fa[i] i=i+1 else: p=p*fb[j] j=j+1 if i>na : for m in range(j,nb+1): k = k+1 p = p*fb[m] else: for m in range(i,na+1): k = k+1 p = p*fa[m] return p #Programme Principal a,b=saisie() fa,na=factprem(a)
  • 36. 36 Exercices en Python FENNI SALAH ©® 1992 fb,nb=factprem(b) print ("PPCM(",a,",",b,")"," = ",ppcm(fa,fb,na,nb)) #Program PPCM_fact_prem solution2 from numpy import array def saisie (): valide=False while not valide: a=int(input ("a=")) b=int(input ("b=")) valide=(1<=a) and (a<=b) and (b<=10000) return a,b def ppcm( a , b) : fa=array([int()]*100) fb=array([int()]*100) def decfact(n): fp=array([int()]*100) i=2 ;f=0 while n!=1: if n % i == 0: n= n // i f=f+1 fp[f] = i else: i=i+1 return fp,f def nb(x,n,t): s = 0 for j in range(1,n+1): if t[j] == x : s=s+1 return s def puiss(x,y): if y == 0: p= 1 else: p= x * puiss(x,y-1) return p fa,af=decfact(a) #decomposition en facteurs premiers de a dans tableau fa de taille af fb,bf=decfact(b) #decomposition en facteurs premiers de b dans tableau fb de taille bf i = 2; p = 1 while not ((i > fa[af] ) and ( i > fb[bf] )): nba = nb(i,af,fa) nbb = nb(i,bf,fb) if nba > nbb: p = p* puiss(i,nba) else: p = p* puiss(i,nbb) i=i+1 return p #Programme Principal a,b=saisie() print ("PPCM(",a,",",b,")"," = ",ppcm(a,b))
  • 37. 37 Exercices en Python FENNI SALAH ©® 1992 Exercice 56 Votre sœur joue avec des perles, des blanches et des noires, et elle souhaite constituer des colliers. Dans un souci d’esthétique, elle désire alterner les couleurs, tout en préservant une certaine périodicité. Elle va donc placer X perles blanches, suivies de Y perles noires et elle répètera ce motif N fois. Exemple : Supposons qu’elle possède X = 12 perles blanches et Y = 6 perles noires. Elle a plusieurs possibilités : • une répétition (12 blanches, 6 noires) • deux répétitions (6 blanches, 3 noires) • trois répétitions (4 blanches, 2 noires) • six répétitions (2 blanches, 1 noire) Écrire un programme en Python qui calcule, étant donné deux entiers strictement positifs X et Y, représentant respectivement les nombres de perles blanches et noires, le nombre maximum de répétitions que votre sœur va pouvoir faire avec ces perles. #Program Perles def Pgcd(A,B) : while B!=0: R=A % B A=B B=R return A valide=False while not valide: X=int(input ("Donner Le nombre de perles blanches (X) : ")) Y=int(input ("Donner Le nombre de perles noires (Y) : ")) valide=(X>0)and(Y>0) print ("Le nombre maximum de répétitions est : ",Pgcd (X,Y)) Exercice 57 Ecrire un programme en Python qui affiche tous les nombres palindromes inférieurs à un entier N donné (N>1) et qui peuvent être écrits sous la forme d’une somme des carrés de nombres successifs. Exemples : 5 est un nombre palindrome et vérifie la propriété car 5 = 12 + 22 595 est un nombre palindrome et vérifie la propriété car 595=62 +72 +82 +92 +102 +112 +122 Remarques : • Un nombre palindrome est un nombre égal à lui-même s’il est lu de gauche à droite ou de droite à gauche. • Vous devez afficher le nombre palindrome suivi de la somme de ses carrés successifs. Exemple d’affichage : 595 = 6^2 + 7^2 + 8^2 + 9^2 + 10^2 + 11^2 + 12^2 #Program Nombres from math import* def Lecture () : valide=False while not valide: N=int(input ("Donner un entier : ")) valide=(N>1) return N def Palindrome (Nb) : Ch=str(Nb) while (len(Ch)>1) and (Ch[0]==Ch[len(Ch)-1]): Ch = Ch[1:len(Ch)-1] return len(Ch)<=1 def Affiche (Nb) : J = 0;Somme=0 while not ((Somme==Nb) or (J>sqrt(Nb))): J=J+1 Somme=0 K=J Ch="" while (Somme<Nb): Somme= Somme + K**2 Ch1=str(K) Ch= Ch + Ch1 + "^2 + " K= K + 1 Ch=Ch[0:len(Ch)-2] if Somme==Nb: print (Nb ,"=",Ch) #Programme Principal N=Lecture()
  • 38. 38 Exercices en Python FENNI SALAH ©® 1992 for I in range(1,N+1): if Palindrome(I): Affiche(I) Exercice 58 Un nombre de SMITH s’il est un nombre dont la somme des chiffres est égale à la somme de tous les chiffres de ses facteurs premiers. Exemple : 4937775 = 3*5*5*65837 => Somme des chiffres : 4+9+3+7+7+7+5 = 42 => Somme des chiffres de sa factorisation : 3+5+5+6+5+8+3+7 = 42 Ecrire un programme en Python qui permet de chercher et d’afficher tous les nombres de smith de l’intervalle [n, m] (avec 10<m<n<100). #Program Smith def Saisie(): valide=False while not valide: print ("Saisir M Et N") M=int(input ()) N=int(input ()) valide=(10<M) and(M<N) and(N<100) return M,N def Som_Chif(Nb): S=0 while Nb!=0: S=S + (Nb % 10) Nb=Nb // 10 return S def Som_Fact(Nb): D=2 S=0 while Nb!=1: if Nb % D ==0: Nb=Nb // D S=S+Som_Chif(D) else: D=D+1 return S #Programme Principal M,N=Saisie() for Nb in range(M,N+1): if Som_Chif(Nb)==Som_Fact(Nb): print (Nb,end=" ") Exercice 59 Un nombre de Zuckerman est un nombre qui est divisible par le produit de ses chiffres. Les nombres contenant un 0 sont naturellement exclus. Alors qu’un nombre de Harshad est divisible par la somme. Ecrire un programme en Python qui permet de chercher et d’afficher tous les nombres qui sont à la fois Zuckerman et Harshad de l’intervalle [n, m] (avec 100≤n<m). #Program Harshad_Zuckerman def Saisir(): valide=False while not valide: N=int(input ("N = ")) M=int(input ("M = ")) valide= (N>=100)and (N<M) return N,M def Harzuc ( Nb) : Ch=str(Nb) Som=0 ;Prod=1 for i in range(len(Ch)): V=int(Ch[i]) Som=Som+V Prod=Prod*V return (Nb % Som == 0) and (Nb % Prod == 0)
  • 39. 39 Exercices en Python FENNI SALAH ©® 1992 #Programme Principal N,M=Saisir() for i in range(N,M+1): Ch=str(i) if Ch.find("0")==-1: if Harzuc(i): print (i,end=" ") Exercice 62 SUITE DE STEINHAUS • On prend un nombre de deux chiffres, au hasard. • On multiplie les deux premiers chiffres. • On place le résultat à la suite des chiffres déjà trouvés. Exemple : 23 ; 2*3=6 ; 236 ; 3*6=18 ; 23618 ; 6*1=6 ; 236186 ; 1*8=8 ; 2361868 ; 8*6= 48 ; 236186848 … Ecrire un programme en Python qui permet de chercher et d’afficher les 100 premiers chiffres de cette suite. #Program STEINHAUS from random import* N=randint(10,99) Ch=str(N) K=0 while len(Ch)!=100: D=int(Ch[K]) U=int(Ch[K+1]) C=str(D*U) Ch=Ch+C K=K+1 print (Ch) Exercice 63 Suite de Padovan Les nombres de Padovan sont donnés par la récurrence : Pn = Pn-3 + Pn-2 avec P0=P1=P2=1. Ecrire un programme en Python qui affiche les 20 premiers nombres de Padovan. #Program Pidovan P0=1 P1=1 P2=1 print (P0,P1,P2,end=" ") for K in range(3,20): Pn = P0+P1 P0 = P1 P1 = P2 P2 = Pn print (Pn,end=" ") Exercice 64 Un nombre est riche si un de ses facteurs au moins est répété deux fois ou plus. Exemples : 4 = 22 90 = 2 x 32 x 5 540 = 22 x 33 x 5 Ecrire un programme en Python qui affiche tous les nombres riches <1000. #Program Nb_Riche def Nbfact(N): K=0 i=2 while not ((N==1) or (K>=2)): if N % i == 0: K= K + 1 N = N // i else : i = i + 1 K=0 return K #Programme Principal for N in range(1,101): if Nbfact(N)>=2: print (N,end=" ") Exercice 65 Un nombre est harshad morphique, s’il est la somme des chiffres d'un nombre de harshad et qui termine aussi ce nombre de harshad. Exemple : 910=9+1+0=10 910 est un nombre de harshad puisqu’il est divisible par la somme de ses chiffres. 10 est harshad morphique. #Program Harshad_Morphique def HM ( Nb) : Ch=str(Nb) Som=0 for i in range(len(Ch)): V=int(Ch[i]) Som=Som+V return (Nb % Som == 0)and(Nb % 100 == Som)
  • 40. 40 Exercices en Python FENNI SALAH ©® 1992 Ecrire un programme en Python qui affiche tous les nombres harshad de l’intervalle [100,9999] et qui intègrent les harshad morphique. #Programme Principal from time import sleep for i in range(100,10000): if HM(i): print (i,end=" ") sleep(1) Exercice 66 Un nombre narcissique est un entier naturel N non nul qui est égal à la somme des puissances p-ièmes de ses chiffres, où p désigne le nombre de chiffres de N. Exemples : 153 = 13 +53 +33 548834 = 56 +46 +86 +86 +36 +46 Ecrire un programme en Python qui affiche tous les nombres narcissiques <10000. #Program narcissiques def Puissance(N,L): P=1 for i in range(L): P=N*P return P #programme principal for Nb in range(1,10000): Ch=str(Nb) L=len(Ch) Som=0 for J in range(L): N=int(Ch[J]) Som=Som+Puissance(N,L) if Nb==Som : print (Nb," Est Un Nombre Narcissique ") Exercice 67 Deux entiers N1 et N2 sont dits frères si chaque chiffre de N1 apparaît au moins une fois dans N2 et inversement. Ecrire un programme en Python qui saisit deux entiers N1 et N2, vérifie et affiche s’ils sont frères ou non. Exemples : - Si N1 = 1164 et N2 = 614 alors le programme affichera : N1 et N2 sont frères - Si N1 = 905 et N2 = 9059 alors le programme affichera : N1 et N2 sont frères - Si N1 = 405 et N2 = 554 alors le programme affichera : N1 et N2 ne sont pas frères #Program Nbr_Freres def Saisie(): N=int(input ()) return N def Frere(N1,N2): Ch1=str(N1) Ch2=str(N2) i=0 V=True while not((i>=len(Ch1)) or (V== False)): V=Ch2.find(Ch1[i])!=-1 i=i+1 return V #Programme Principal print ("N1= ",end="") N1=Saisie() print ("N2= ",end="") N2=Saisie() if Frere(N1,N2) and Frere(N2,N1): print (N1," Et ",N2," Sont Frères") else : print (N1," Et ",N2," Ne Sont Pas Frères") Exercice 68 Si d est un diviseur propre de n et s'il est premier avec n/d (pgcd (d, n/d)=1), c'est un diviseur unitaire de n. Un nombre unitairement parfait est égal à la somme de ses diviseurs unitaires. Exemple : 60 est un nombre unitairement parfait, parce que ses diviseurs unitaires stricts sont 1, 3, 4, 5, 12, 15 et 20, et que 1 + 3 + 4 + 5 + 12 + 15 #Program Unitairement_Parfait def Sdu(Nb): def Pgcd(A,B): while A!=B: if A>B: A= A-B else: B= B-A return A
  • 41. 41 Exercices en Python FENNI SALAH ©® 1992 + 20 = 60. Ecrire un programme en Python qui affiche tous les nombres unitairement parfaits <100000. Som=0 for D in range(1,Nb // 2+1): if (Nb % D ==0) and (Pgcd(D,Nb // D)==1): Som=Som+D; return Som #Programme Principal from time import sleep for N in range(1,100000): if Sdu(N)==N: print (N,end=" ") sleep(1) Exercice 69 Tout entier strictement positif peut s’écrire sous la forme d’une somme de puissance de 2, où les exposants sont distincts. Exemples : 31 = 20 +21 +22 +23 +24 146 = 21 +24 +27 Ecrire un programme en Python qui permet d’afficher la décomposition d’un entier N, en une somme de puissances de 2 distinctes. #Program Affiche_puissance def saisir(): valide=False while not valide: n=int(input ("Donner un entier positif")) valide=(n > 0) return n def decomposer (n): ch = "" p = 0 while n != 0: if (n%2)==1 : pp=str(p) ch = ch+"2^"+pp+"+" p = p+1 n = n//2 ch=ch[0:len(ch)-1] return ch #programme principal n=saisir() print (n," = ",decomposer(n)) Exercice70 On veut afficher à l'écran le calendrier d'un mois donné. On donne le mois, l'année et le jour de la semaine correspondant au premier du mois en question. Écrivez un programme en Python qui réalise cette tâche. Exemple: Donner le n° du mois = 5 Donner le jour de début de mois (lundi=1, mardi=2, ...) = 3 Lundi 6 13 20 27 Mardi 7 14 21 28 Mercredi 1 8 15 22 29 Jeudi 2 9 16 23 30 Vendredi 3 10 17 24 31 Samedi 4 11 18 25 Dimanche 5 12 19 26 #Program Calendrier mois=int(input ("Donner le n° du mois = ")) if mois in {1,3,5,7,8,10,12}: jours = 31 elif mois in {4,6,9,11}: jours = 30 elif mois==2: an=int(input ("Donner l'année = ")) if an % 4== 0: jours = 29 else : jours = 28 print ("Donner le jour de début de mois (lundi=1, mardi=2, ...) = ") x=int(input ()) print () for i in range(1,8): if i==1: jour_semaine = "Lundi " elif i==2: jour_semaine = "Mardi " elif i==3: jour_semaine = "Mercredi " elif i==4: jour_semaine = "Jeudi " elif i==5: jour_semaine = "Vendredi "
  • 42. 42 Exercices en Python FENNI SALAH ©® 1992 elif i==6: jour_semaine = "Samedi " elif i==7: jour_semaine = "Dimanche " print (jour_semaine,end="") j = i-x+1 while (j<=jours): if j>0: print (j,end=" ") else : print (end=" ") j = j+7 print () Exercice 71 Nombre sublime : La quantité de diviseurs et la somme des diviseurs sont deux nombres parfaits. Exemple : 12 est un nombre sublime. Diviseurs : 1, 2, 3, 4, 6 et 12 Quantité : 6 Nombre parfait Somme : 28 Nombre parfait #Program Sublime def som_nb_div(n): Sd = 0 ; nbd = 0 for i in range(1,n+1): if (n % i) == 0: Sd = Sd + i nbd = nbd + 1 return Sd, nbd def parfait (n): Sd = 0 for i in range(1,n//2+1): if (n % i) == 0: Sd = Sd + i return Sd==n #programme principal from time import sleep for n in range(1,100000): sd,nbd=som_nb_div(n) if parfait(sd) and parfait(nbd): print (n,end=" ") sleep(1) Exercice 72 Soit S la somme des diviseurs propres (sauf lui-même) de N. Ecrire un programme en Python NOMBRE, qui permet de saisir un entier N (2 ≤ N ≤ 100) et d’afficher sa nature : • Nombre déficient si S < N • Nombre presque parfait si S = N-1 • Nombre parfait si S = N • Nombre quasi-parfait si S = N+1 • Nombre abondant si S > N Exemple : Pour N=6, la somme S=1+2+3, donc N=S, alors le programme affichera "Nombre parfait" #program nombre for n in range(1,300): s=0 for i in range(1,n//2+1): if n % i ==0: s=s+i if s<n: print (n,' Nombre déficient') elif s==n: print (n,' Nombre parfait') else: print (n,' Nombre abondant') if s==n-1: print (n,' Nombre presque parfait') if s==n+1: print (n,' Nombre quasi parfait') Exercice 73 Un nombre N est dit ondulant s’il est formé de trois chiffres au minimum et qui est de la forme ababab… avec a ≠ b. Exemples : ▪ 101, 2525, 56565 et 1717171 sont des nombres ondulants. ▪ 12345 et 808008 ne sont pas des nombres ondulants Ecrire un programme Python, qui permet de vérifier si un #programme ondulant valide=False while not valide: N=int(input ("Saisir un entier >=100")) valide= N>=100 ch=str(N) i=0 verif=True while (i<=len(ch)-3) and verif :
  • 43. 43 Exercices en Python FENNI SALAH ©® 1992 entier naturel N (N>=100) est un nombre ondulant ou non. if (ch[i]!=ch[i+1]) and (ch[i]==ch[i+2]) : i=i+1 else: verif=False if verif : print (N,"est un nombre ondulant") else: print (N,"n'est pas ondulant") Exercice 74 Un nombre N est dit super-pairplus s’il vérifie les trois conditions suivantes : ▪ Condition1 : N est pair ▪ Condition2 : N est formé uniquement par des chiffres pairs ▪ Condition3 : tous les diviseurs de N autre que 1 sont des entiers pairs. Exemples : - N = 64 est un entier super-pairplus car 64 vérifie les trois conditions : • Condition 1 : 64 est pair • Condition 2 : 64 est formé uniquement par des chiffres pairs (6 et 4) • Condition 3 : les diviseurs de 64 autre que 1 (2, 4, 8, 16, 32 et 64) sont des entiers pairs. - N = 28 n’est pas un entier super-pairplus car une des trois conditions (condition3) n’est pas vérifiée : • Condition 1 : 28 est pair • Condition 2 : 28 est formé uniquement par des chiffres pairs (2 et 8) • Condition 3 : les diviseurs de 28 autre que 1 (2, 4, 7, 14 et 28) ne sont pas tous des entiers pairs. En effet, 7 est impair #programme super pair plus def pariteChiffre(N): verif=True while verif and N!=0: u=N%10 verif=(u%2==0) N=N//10 return verif def pariteDiviseur(N): ok=True i=2 while ok and i<=N: if N%i==0: ok=(i%2==0) i=i+1 return ok #programme principal for N in range(1,10000): if (N%2==0) and pariteChiffre(N) and pariteDiviseur(N): print (N,end=" ") Exercice 75 Un nombre N est dit semi-premier lorsqu’il est égal au produit de deux nombres premiers non nécessairement distincts. C’est-à-dire N = k*k avec k est un nombre premier ou N = k*j avec k et j sont deux nombres premiers. Exemples : ▪ 6 est un nombre semi-premier car 6 = 2 × 3 avec 2 et 3 sont deux nombres premiers. ▪ 25 est un nombre semi-premier car 25 = 5 × 5 avec 5 est un nombre premier. ▪ 831 est un nombre semi-premier car 831= 3 × 277 avec 3 et 277 sont deux nombres premiers ▪ 8 n’est pas un nombre semi-premier, car 8 = 2 × 4 avec 4 n’est pas un nombre premier. #programme semi premier def premier(x): nb=2 for i in range(2,x//2+1): if x%i==0: nb=nb+1 return nb==2 def semipremier(n): d=2 p=1 k=0 x=n while k!=2: if n % d==0: p=p*d n=n//d k=k+1 else: d=d+1 return x==p
  • 44. 44 Exercices en Python FENNI SALAH ©® 1992 #programme principal for n in range(1,1000): if not premier(n): if semipremier(n): print (n,end=" ") Exercice 76 Un nombre N est dit lisse lorsque son plus grand diviseur premier est inférieur ou égal à la racine carrée du nombre N. Exemples : • N = 60, les diviseurs de 60 sont : 1, 2, 3, 4, 5, 6, 10, 12, 15, 30 et 60. Son plus grand diviseur premier est 5 et puisque 5<=√60 = 7.746 …, donc 60 est un nombre lisse. • N = 49, les diviseurs de 49 sont : 1, 7 et 49. Son plus grand diviseur premier est 7 et puisque 7<=√49 = 7 donc 49 est un nombre lisse. • N = 22, les diviseurs de 22 sont : 1, 2, 11 et 22. Son plus grand diviseur premier est 11 et puisque 11 > √22 = 4.690 …, donc 22 n’est pas un nombre lisse. #programme nbr_lisse from math import* def premier(N): i=2 while i<=N//2 and N%i!=0: i=i+1 return i>N//2 def Lisse(N): ok=False if premier(N): pgd=N else: i=N//2 while i>=2 and not ok: if premier(i) and N%i==0: pgd=i ok=True i=i-1 return pgd #programme principal for N in range(1,100): if Lisse(N)<=sqrt(N): print (N,end=" ") Exercice 77 Un nombre N est dit hautement abondant si la somme de ses diviseurs (lui-même inclus) est strictement supérieure à la somme des diviseurs de n’importe quel nombre plus petit que lui (le nombre inclus). Exemples : • 8 est hautement abondant car la somme de ses diviseurs, qui est égale à 15 (1+2+4+8=15), est strictement supérieure à la somme des diviseurs de tout entier plus petit que lui. • 5 n’est pas hautement abondant car la somme de ses diviseurs, qui est égale à 6 (1+5 =6), est inférieure à 7 qui la somme des diviseurs de 4 (1+2+4=7). #programme hautement abondant def SomDiv(N): s=N for i in range(1,N//2 +1): if N%i==0: s=s+i return s def HAbondant(N): ok=True i=N-1 S=SomDiv(N) while i>=1 and ok: if SomDiv(i) > S: ok=False else : i=i-1 return ok #programme principal for i in range(1,100): if HAbondant(i): print (i,end=" ")
  • 45. 45 Exercices en Python FENNI SALAH ©® 1992 LES TABLEAUX Exercice 1 Ecrire un programme en Python, qui fait remplir un tableau T par n (5<n<=10) entiers compris entre 1 et 20. Ensuite, il fait calculer et afficher la somme, le produit et la moyenne arithmétique des éléments de T. Exercice 2 Ecrire un programme en Python, qui fait remplir un tableau T par n lettres (2<n≤20). Ensuite il fait afficher, sans redondance, les éléments de T. Exercice 3 Ecrire un programme en Python qui fait réaliser les tâches suivantes : • Remplir un tableau LET de 35 cases par des lettres majuscules au hasard. On utilisera la fonction prédéfinie Random. • Compter la fréquence d'apparition (le nombre d'occurrence) de chaque lettre majuscule dans le tableau LET et ranger les résultats statistiques dans un tableau FE. Exercice 4 Ecrire un programme en Python qui permet de convertir un entier naturel en son équivalent binaire (conversion de la base10 à la base2). Exercice 5 Ecrire un programme en Python qui permet de convertir un nombre écrit dans une base b1 en son équivalent dans une base b2. Exercice 6 Soit T un tableau contenant N entiers (10 ≤ N ≤ 50). On propose d'écrire un programme en Python qui permet d'éclater T en deux tableaux : TN (contenant les éléments négatifs de T) et TP (contenant les éléments positifs de T). Exercice 7 Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet d'inverser les éléments de T (permuter T[1] et T[n], puis T[2] et T[n-1], …). Exercice 8 Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de regrouper les éléments pairs au début et les éléments impairs à la fin de T, sans modifier l'ordre de saisie des valeurs paires et impaires. Exemple : pour N = 10 4 2 7 8 20 5 11 6 3 30 4 2 8 20 6 30 7 5 11 3 Etat initial de T Etat final de T Exercice 9 Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de déterminer et d'afficher la valeur maximale et la valeur minimale de T. Exercice 10 On se propose d'écrire un programme en Python qui permet de saisir un entier N >1 et pair. Ensuite remplir un tableau T par n entiers égaux deux par deux. Enfin transformer T en un tableau symétrique. Exemple : pour N = 10 4 4 0 0 -5 -5 8 8 3 3 4 0 -5 8 3 3 8 -5 0 4 Etat initial de T Etat final de T
  • 46. 46 Exercices en Python FENNI SALAH ©® 1992 Exercice 11 Soit un tableau de N (5≤N≤20) entiers. On se propose de ranger les éléments de T de façon à mettre les éléments positifs ou nuls au début de T suivis des éléments négatifs. Exemple : T initial T final 2 -3 -9 0 15 -1 6 2 0 15 6 -9 -1 -3 Exercice 12 Soit T un tableau contenant N entiers (10≤N≤50). On propose d'écrire un programme en Python qui permet de chercher l'existence d'un élément V donné, dans la liste de valeurs de T. Exercice 13 Soit le tableau T suivant : 10 7 9 7 10 6 7 4 8 8 Pour chaque élément de T on ne garde que sa première occurrence et on remplace les autres par 0. 10 7 9 0 0 6 0 4 8 0 On regroupe les éléments restant au début du tableau T. 10 7 9 6 4 8 0 0 0 0 Ecrire un programme en Python qui fait le traitement ci-dessus pour un tableau T de n (2 ≤n≤20) entiers positifs non nuls. Exercice 14 Ecrire un programme en Python qui fait remplir un tableau T par les résultats de 20 lancements d'un dé. Le programme doit faire remplir par la suite un tableau fréquence F par le nombre de fois que chaque face est obtenue. Exercice 15 On dispose d'un tableau MOY qui contient la liste des moyennes de N élèves. On propose d'écrire un programme en Python qui permet de déterminer et d'afficher le rang de chaque élève. Exercice 16 On dispose d’un tableau de N_MAX éléments rempli par N caractères (N<N_MAX). Ecrire un programme en Python permettant d’insérer un caractère C donné à la k_ème position (avec K<=N). Exercice 17 Le triangle de Python est obtenu en considérant que pour une ligne donnée : • Le premier élément et le dernier élément sont égaux à 1. • Les autres éléments sont obtenus au moyen de la relation : T[l, c]=T[l-1, c] + T[l-1, c-1] Ecrire un programme en Python permettant de générer et afficher le triangle de Python de taille n. Exemple d'exécution : Taille du triangle : 5 Le triangle correspondant est : Exercice 18 Transposition d’une Matrice carrée Une Matrice carrée est une matrice à n lignes et n colonnes. L’opération de transposition consiste à inverser les lignes et les colonnes en effectuant une symétrie par rapport à la diagonale principale de la matrice. Exemple : La Matrice 1 2 3 Devient 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9 Ecrire un programme en Python qui permet de saisir une Matrice carrée puis il cherche et affiche son transposée. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
  • 47. 47 Exercices en Python FENNI SALAH ©® 1992 Exercice 19 L’algorithme suivant permet de calculer et d’afficher les moyennes des trois notes de n élèves. 0) Début Calcul_moyennes 1) Lire (n) 2) Pour i de 1 à n faire Lire (Note1, Note2, Note3) Moy  (Note1 + 2 x Note2 + 2 x Note3)/5 Ecrire (Moy) FinPour 3) Fin Calcul_moyennes Questions : 1. Traduire cet algorithme en Python. 2. Dans l’action 1, ajouter le contrôle sur la saisie pour assurer la condition suivante 5≤n≤40. 3. Ajouter une fonction e RANG qui permet de chercher le rang de l’élève n°i. 4. Apporter les changements adéquats afin d’afficher pour chaque élève et sur une même ligne : N° Moyenne Rang Exercice 20 On se propose d'utiliser l'algorithme de tri par sélection pour trier un tableau de 20 chaînes de caractères. Exercice 21 Soient deux tableaux T1 et T2 contenant chacun n éléments distincts deux à deux (2<n<100). On appelle intersection de T1 et T2 l'ensemble des éléments communs à ces deux tableaux. On se propose d'écrire un programme en Python, qui range les éléments de l'intersection des deux tableaux dans un tableau T3 puis affiche les trois tableaux T1, T2 et T3. Exercice 22 Ecrire un programme en Python, qui permet de créer un tableau V3 d'entiers croissants à partir de deux tableaux V1 et V2 d'entiers. Exemple : V1 1 3 2 -6 V2 0 4 -5 V3 -6 -5 0 1 2 3 4 Exercice 23 Ecrire, en s'inspirant du tri par sélection, une procédure qui permet de construire à partir d'un tableau T de n entiers un tableau Rang tel que Rang[i] soit l'indice dans T de l’ieme élément dans l'ordre croissant sans modifier le tableau T. Exemple : T 80 50 90 35 20 1 2 3 4 5 Rang 5 4 2 1 3 Exercice 24 Ecrire un programme en Python qui permet de remplir un tableau T par n caractères, de rechercher dans le tableau la première plus longue suite de caractères identiques et d'afficher le caractère concerné ainsi que le nombre de fois qu'il est répété. Exemple : Si on introduit (a a b c c e d e e e e e f f g a a a). Le programme doit afficher (e, 5). Exercice 25 Ecrire un programme en Python permettant de remplir d’une manière automatique et aléatoire, un tableau T par N entiers (de 100 à 999), avec (5 ≤ N ≤ 200), et d’afficher les éléments qui sont symétrique.
  • 48. 48 Exercices en Python FENNI SALAH ©® 1992 Exercice 26 Ecrire un programme en Python permettant de saisir, dans un tableau T, N entiers positifs triés dans l’ordre croissant, puis d'afficher les entiers manquants entre le premier et le dernier élément de ce tableau T ainsi que leur nombre. Exemple : Si N = 7 et si T est le tableau suivant T 5 6 8 9 10 12 15 i 1 2 3 4 5 6 7 Le programme affichera : Les entiers manquants sont : 7 11 13 14 ; leur nombre est : 4 Exercice 27 Écrire un programme en Python Séquence permettant de : - Remplir un tableau T par N (2≤N≤24) entiers non nuls. - Chercher et afficher la première longue séquence d’éléments juxtaposés dont la somme est égale à zéro. Exemple : Si N = 10 et si T est le tableau suivant : T -5 6 -2 -2 -1 -1 4 7 3 -3 1 2 3 4 5 6 7 8 9 10 Le programme affichera : La plus longue séquence est : 6 -2 -2 -1 -1 Exercice 28 Écrire un programme en Python permettant de remplir d’une manière automatique et aléatoire, un tableau T par N (avec 5≤N≤20) entiers (de 0 à 9) et d’afficher l’élément qui apparaît le plus dans le tableau T, ainsi que son nombre d’occurrences. Si plusieurs éléments différents répondent à la condition, le programme doit en fournir le premier. Exercice 29 Écrire un programme en Python permettant de vérifier l’existence d’une chaîne donnée Ch dans un tableau T de n chaînes de caractères (2 ≤ n ≤ 10). Les éléments du tableau T ainsi que la chaîne recherchée sont formés de n caractères. On admet que la chaîne Ch est dans le tableau T si elle est : • l’un des éléments du tableau, • l’inverse d'un élément du tableau. Exemple : Pour n = 4, le tableau T contient 4 chaînes formées chacune de 4 caractères. On veut vérifier l’existence de la chaîne Ch dans le tableau T. Si Ch = ''HOUE’’ Ch est le troisième élément du tableau T. Si Ch = ''DOUE’’ Ch est l’inverse du deuxième élément du tableau T. Si Ch = ''ROUT’’ Ch n’existe pas dans le tableau T. Exercice 30 Soit T un tableau de N chaîne de caractères non vides et dont la taille maximale est 5 caractères. On se propose d'écrire un programme permettant de remplir le tableau T par N chaînes de caractères (2 ≤ N ≤ 30), puis de calculer et d'afficher la somme des nombres extraits des chaînes de chaque élément du tableau T. Le nombre extrait de la chaîne contenue dans la case i du tableau T, est formé par la concaténation de tous les chiffres de la chaîne parcourue de gauche à droite. N.B. : Si une chaîne ne contient pas des chiffres, elle prend la valeur 0 dans le calcul de la somme finale. T VRAI EUOD HOUE ICTB 1 2 3 4 T VRAI EUOD HOUE ICTB 1 2 3 4 T VRAI EUOD HOUE ICTB 1 2 3 4
  • 49. 49 Exercices en Python FENNI SALAH ©® 1992 Exemple : Si N = 9 et que le tableau T contient les éléments suivants : T R4*s2 12hj5 5?7e Ak!r E9Y41 6754 3E-Z2 G(Y U5Kx1 1 2 3 4 5 6 7 8 9 Alors la somme S = 42 + 125 + 57 + 0 + 941 + 6754 + 32 + 0 + 51 = 8002 Exercice 31 Un élément X du tableau T est dit majoritaire si et seulement si T contient strictement plus de (n/2) occurrences de X. Exemple : Pour n=10 et le tableau T suivant : T 25 9 9 9 7 9 12 12 9 9 1 2 3 4 5 6 7 8 9 10 L’entier 9 possède 6 occurrences qui est > n/2 donc 9 est majoritaire. Ecrire un programme en Python qui permet de saisir un entier N (5≤N≤25), puis de remplir un tableau T par N entiers, de vérifier si T contient un élément majoritaire. Exercice 32 Intervalle de plus grande somme Nous avons un tableau T de n entiers relatifs. Nous recherchons un sous-tableau de T dont la somme des éléments adjacents soit maximale. Exemple : Pour n=9 et le tableau T suivant : T 2 5 -8 6 7 1 -9 3 4 1 2 3 4 5 6 7 8 9 La plus grande somme est définie par les valeurs : 6, 7 et 1. Exercice 33 Segmentation d’un tableau La segmentation d’un tableau T de N entiers par rapport à T[1] consiste à placer les éléments inférieurs ou égaux à T[1] à sa gauche et les éléments strictement supérieurs à T[1] à sa droite. Exemple : Soient N=10 et le tableau T suivant : 125 10 34 192 120 1026 22 -365 411 48 1 2 3 4 5 6 7 8 9 10 La segmentation de T par rapport à l’élément numéro 1 donne le tableau suivant : 10 34 120 22 -365 48 125 192 1026 411 1 2 3 4 5 6 7 8 9 10 Eléments ≤ à 125 Eléments > à 125 Ecrire un programme en Python qui permet de saisir un entier N (5≤N≤20), de remplir un tableau T par N entiers, de segmenter le tableau T par rapport à T [1] et d’afficher le tableau T segmenté. Exercice 34 Soit T un tableau de N chaîne de caractères alphabétiques minuscules (2 ≤ N ≤ 10). Ecrire un programme en Python qui permet de saisir les éléments du tableau T et affiche les lettres communes à toutes les chaînes sans redondance. Exemple : Si N=4 et le tableau T suivant : T palindrome amour amirale marron 1 2 3 4 Le programme affichera : Les caractères communs sont : a, m, r