Advertisement
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
Advertisement
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
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
Upcoming SlideShare
resume algo 2023.pdfresume algo 2023.pdf
Loading in ... 3
1 of 86
Advertisement

More Related Content

Advertisement
Advertisement

Exercices_Python_Fenni_2023 -corrigé.pdf

  1. 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.
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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")
  7. 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)
  8. 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)
  9. 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")
  10. 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")
  11. 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")
  12. 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,"********")
  13. 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"
  14. 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")
  15. 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
  16. 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)
  17. 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 ()
  18. 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
  19. 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")
  20. 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
  21. 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
  22. 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=" ")
  23. 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="")
  24. 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)
  25. 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
  26. 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)
  27. 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)
  28. 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)
  29. 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:
  30. 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)
  31. 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
  32. 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
  33. 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):
  34. 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)
  35. 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))
  36. 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()
  37. 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)
  38. 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)
  39. 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
  40. 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 "
  41. 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 :
  42. 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
  43. 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=" ")
  44. 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
  45. 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
  46. 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.
  47. 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
  48. 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
Advertisement