AlgoPy

Sujets corrigés de programmation Python description programmation python🐍

Choisissez un sujet, relevez le défi et testez vos compétences en Python avant de découvrir la solution !
Convention
 

CONVENTION PYTHON

Importer un module

from nom_du module import *

# commentaire

Afficher A

print(A)

Affecter à A une valeur

A= valeur

Saisir un entier A

A=int(input(« Saisir un entier : « )

Saisir un réel X

X=float(input(« Saisir un réel : « )

Saisir une chaîne S

S=input(« Saisir une chaîne : « )

Structure conditionnelle

if condition1 :

       traitement1

elif condition2 :

       traitement2

else :

       traitement3

Boucle non bornée

while condition :

       traitement

Boucle bornée

for i in range (vi,vf+1,Pas) :

       Traitement

 

Définition d’une fonction

def f (pf1, pf2, …) :

         y = …..

         return y

Racine carré de x

sqrt(x)

Tester si une chaîne S est numérique

S.isnumeric()

 

Reste de la division A par B

% B

Quotient de la division de A par B

A//B

A=B (égalité)

A==B

A ≠ B

!= B

Nombre aléatoire compris entre a et b

randint(a,b)

Nombre de caractères dans une chaîne S

len(s)

Cherche l’existance d’une chaîne S1 dans une chaîne S2

S2.find(S1)  

Code ASCII d’un caractère

chr( )

Caractère d’un code ASCII

ord( )

La partie entière d’un réel x

int(x)

Copier des caractères d’une chaîne S

S[début :fin]

Effacer des caractères d’une chaîne S

S[:début]    S[fin:  

Mettre la châine en majuscule S

S.upper( )

Convertir le type d’une variable

Int( )     float( )      str( )

Déclarer un tableau numpy T

from numpy import*

T=np.array([type( )]*n

Edit Template

Enoncé :

Le terme Bigramme désigne la combinaison de deux lettres consécutives et distinctes dans un mot.
On se propose d’écrire un code Python qui permet d’afficher le nombre d’occurrences de chaque Bigramme d’une chaîne de caractères Ch non vide et formée uniquement de lettres minuscules.
Pour cela, on donne l’algorithme du programme principal suivant :

ALGORITHME Bigramme
DEBUT
      Répéter
             Ecrire (« Donner une chaîne: »)
             Lire (Ch)
      Jusqu’à (FN Valide(Ch))
      Afficher(Ch)
FIN

Exemple :
Pour Ch = « mamapappacma »
Le programme affiche :
Le nombre d’occurrences de ma est 3
Le nombre d’occurrences de am est 1
Le nombre d’occurrences de ap est 2
Le nombre d’occurrences de pa est 2
Le nombre d’occurrences de ac est 1
Le nombre d’occurrences de cm est 1

Travail demandé :

  1. Implémenter l’algorithme « Bigramme » ci-dessus, en  Python .
  2. Transformer la séquence n°1 en un module et apporter les modifications nécessaires.
  3. Développer le module Valide qui permet de vérifier si la chaîne Ch est non vide et formée uniquement de lettres minuscules.
  4. Développer le module Afficher qui permet de déterminer et d’afficher le nombre d’occurrences de chaque Bigramme de la chaîne Ch.

Besoin de revoir les bases ? Consultez notre référence Python 

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

#Code Solution Bigramme:

def valide(ch):

nb=0
for i in range(len(ch)):
if ord(ch[i]) in range(ord(‘a’),ord(‘z’)+1):
nb=nb+1
return (nb==len(ch))

def saisie():

ch=input(‘Donner une chaîne: ‘)
while valide(ch)==False:
ch=input(‘Donner une chaîne: ‘)
return ch

def Affiche(ch):

n = len(ch)
for i in range(0,n-1):
if ch[i]!=ch[i+1] :
j = 1
trv = 0
while (j<i) and (trv==0) :
if (ch[j]==ch[i]) and (ch[j+1]==ch[i+1]):
trv = 1
j = j+1
if trv==0 :
occ =1
for j in range(i+2, n-1):
if (ch[j]==ch[i]) and (ch[j+1]==ch[i+1]) and (ch[:i].find(ch[i]+ch[i+1])==-1) :
occ = occ+1
print(‘le nombre d »occurrence de ‘,ch[i]+ch[i+1],’ est ‘,occ);

#Programme Principal
ch=saisie()
Affiche(ch)
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Le jeu Numbermind est un jeu à deux qui consiste à deviner un numéro de téléphone.
Le principe du jeu est le suivant :

  • Le premier joueur propose une combinaison de 8 chiffres représentant le numéro à deviner.
  • Le deuxième joueur annonce une proposition de 8 chiffres, si cette proposition correspond au numéro à deviner, ce joueur est gagnant sinon on lui affiche sa proposition à laquelle on garde tous les chiffres bien placés et on remplace le reste par des tirets tout en mentionnant les chiffres corrects mais mal placés dans la proposition.
  • On répète l’étape précédente jusqu’à trouver le numéro cherché ou atteindre un nombre d’essais égal à 8.

Pour simuler ce jeu, on donne l’algorithme du programme principal suivant :

NB : Efface_ecran est une procédure prédéfinie qui permet d’effacer l’écran. Son équivalent en Python est:
import os
os.system(« cls »)

Algorithme  Numbermind
   DEBUT
     Répéter
        Ecrire ( » Saisir le numéro de téléphone à deviner : »)
        Lire (num)
      Jusqu’à ( FN Verif (num))
     Efface_ecran ( )
     Deviner (num)
   Fin

Travail demandé :

  1. Implémenter l’algorithme Numbermind en un programme Python.
  2. Développer le module Verif qui permet de vérifier si le numéro de téléphone proposé est composé uniquement par 8 chiffres.
  3. Développer le module Deviner qui consiste à :
    • vérifier chaque numéro proposé par le deuxième joueur, en gardant les chiffres bien placés et en remplaçant le reste par des tirets tout en mentionnant ceux qui sont correctes mais mal placés dans la proposition et le nombre d’essai qui lui reste.
    • arrêter le jeu une fois que le deuxième joueur propose un numéro identique au numéro à deviner ou bien on atteint un nombre d’essai égal à 8.
    • afficher le message  » Bravo, vous avez gagné » si le joueur 2 réussit à deviner le numéro et le message « Désolé, vous avez perdu  » s’il ne devine pas le numéro après 8 essais.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

#Code Solution Numbermind:

def verif(n):

i =0
test=False
while (test==False) or (i>=len(n)):
i = i+1
if (‘0’ <= n[i] <= ‘9’):
test = True
else:
test = False
return (test and (len(n)==8))

def saisie():

num =input(‘Saisir le numéro de telephone: ‘)
while not(verif(num)):
num =input(‘Saisir le numéro de telephone: ‘)
return num

def deviner(n):

i=8
print(‘vous avez ‘,i,’ essais’)
ch=input(‘proposer un numéro de téléphone :’)
while not (verif(ch)):
ch=input(‘proposer un numéro de téléphone :’)
while (n!=ch) and (i>1):
if ch!=n :
j=0
while j<(len(ch)-1):
j=j+1
k=0
if ch[j]!=n[j] :
while (k<len(n)) and ((n[k]!=ch[j]) or (j==k)):
k=k+1
if (n[k]==ch[j]) and (j!=k) :
print(ch[j], »qui est à la position « ,j, »dans la proposition n’est pas à sa bonne position »)
i = i-1
if  i!=1 :
print(‘il vous reste ‘,i,’ essais’)
ch=input(‘proposer un numéro de téléphone :’)
while not (verif(ch)):
ch=input(‘proposer un numéro de téléphone :’)
for j in range(0, len(ch)):
if ch[j]==n[j] :
print(ch[j],end= »)
else:
print(‘-‘,end= »)
print(‘\n’)
if ch==n:
print (‘bravo, vous avez gagné’)
else:
print(‘désolé, vous avez perdu’)

#Programme Principal
num=saisie()
deviner(num)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Une chaîne dorée est une chaîne infinie non répétitive de ‘1’ et ‘0’ elle est construite de la manière suivante :

S0=’0’S1=’1’Sn = la concaténation de Sn-1 et de Sn-2Valeurs de la chaine dorée0
1
10
101
101 10
10110101
1011010110110
101101011011010110101

La division du nombre de ‘1’ par le nombre de ‘0’ de la chaîne dorée donne le nombre d’or

Travail demandé:

    1.   Éditer le module « Dorée » dans un EDI Python tout en complétant les pointillés pour qu’il permet de former la chaîne dorée dont la longueur ne dépasse pas 25 caractères à partir de S0 et S1.

      def Doree(…………….. ) :
              sd = S1 + S0
              while   …………………… :
                                ………………………………
                                sd = S1 + S0
               return ……………

    2. Développer une fonction occurrence qui retourne le nombre d’occurrence d’un caractère x dans une chaîne ch.
    3. Compléter le code en faisant appel aux deux modules précédemment édités pour afficher une valeur approchée du nombre d’or.  
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

#Code Solution Nombre d’or:

def dorée(s0,s1):
      sd=s1+s0
      while len(sd)<150:
                s0=s1
                s1=sd
               sd=s1+s0
return sd

#Occurrence d’un caractère dans une chaîne
def occ(c,ch):
          nb=0
          for i in range(len(ch)):
                   if c == ch[i]:
                       nb+=1
          return nb

#Calcul du nombre d’or
def calcul():
             nu=occ(‘1’,dorée(s0,s1))
             nz=occ(‘0’,dorée(s0,s1))
             return nu/nz

#Programme principal
s0=’0′
s1=’1′
print(« La chaîne dorée: »,dorée(s0,s1))
print(« Le nombre d’or = », »%.5f »%calcul())

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

On désire Développer un script Python qui permet d’afficher un tableau tFusion résulte d’une fusion trié, de deux tableaux t1 et t2 contenants respectivement n et m entiers positifs de 2 chiffres. La taille de chaque tableau varie entre 3 et 12, et les éléments sont triés dans l’ordre croissant.

Exemple:   pour n=5  et  m=4

t11223444687
t226355866
tFusion122326354446586687

👁 La fusion se fait selon l’ordre de tri

Avant de plonger dans ce problème, assurez-vous de bien comprendre la gestion des tableaux numpy en Python. Consultez notre fiche mémo sur les  tableaux !« 

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

#Fusion tableaux triés

def saisir():

n=int(input(« saisir la taille du tableau »))
while n<=0 :
n=int(input(« saisir la taille du tableau »))
return n

def remplir(t,n) : #Remplissage de tableau tré

t[0]=int(input(« T[1]= »))
for i in range(1,n) :
t[i]=int(input(« T[« +str(i+1)+ »]= »))
while t[i]<t[i-1] :
t[i]=int(input(« T[« +str(i+1)+ »]= »))

def fusion_trié(a,b,n,m):  # Fusionner les 2 tableaux en respectant le tri

i,j,k=0,0,0
while (i<(n+m))and(j<n) and(k<m):
if a[j] < b[k] :
c[i]=a[j]
i=i+1
j=j+1
else:
c[i]=b[k]
i=i+1
k=k+1
x=i
if  j==n:
for i in range(x,n+m):
c[i]=b[i-n]
elif  k==m:
for i in range(x,n+m):
c[i]=a[i-m]
return c

########################### Programme principal

from numpy import*
n=saisir()
m=saisir()
#Declaration des 3 tableaux
a=array([int()]*n)
b=array([int()]*m)
c=array([int()]*(n+m))

remplir(a,n)
remplir(b,m)
print(fusion_trié(a,b,n,m))

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Dans un tableau d’entiers, l’existence d’au minimum de deux éléments pairs d’une façon consécutive forme ce qu’on appelle une séquence paire.
On se propose d’écrire un code python, intitulé Occ_Pair qui permet de remplir un tableau T par N entiers (avec 3≤N≤20) et d’afficher le nombre de séquences paires de ce tableau, ainsi que les entiers de chacune de ces séquences.
Exemple : Pour N=15 et le tableau T suivant :

3186534328912510218

Le programme affiche :
Le nombre de séquences paires est 3.
Les séquences d’entiers pairs sont : 18 , 6 4, 32, 8 10 , 2
Pour cela, on donne l’algorithme du programme principal suivant :

ALGORITHME Occ-Pair
DEBUT
  Ecrire (« Donner la taille du tableau : ») , Lire(N)
  Remplir(T,N)
  Afficher(T,N)
Fin

Travail demandé :
  1. Implémenter l’algorithme Occ_Pair en Python.
  2. Transformer la séquence n°1 en un module en ajoutant les contraintes nécessaires et apporter les modifications nécessaires dans le programme principal.
  3. Développer le module Remplir qui permet de remplir le tableau T par N entiers strictement positifs.
  4. Développer le module Afficher qui permet d’afficher le nombre de séquences d’entiers pairs du tableau T ainsi que les entiers de chacune de ces séquences.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

#Séquence pairs

def premier(a):

n_div=0
 for i in range(2,a//2):
   if a%i==0:
    n_div=n_div+1
 return n_div==0

def successives(x,y):
 nb=0
 for i in range(x+1,y):
  if premier(i):
    nb+=1
 return nb==0

def jumeaux(a,b):

if premier(a) and premier(b) and successives(a,b):
  return True
else:
  return False
for a in range(1,101):
  for b in range(a+1,101):
   if jumeaux(a,b):
     print(‘(‘,a,b,’)’)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Un nombre est dit oblong s’il est le produit de deux entiers naturels consécutifs.

Exemples :
12 est un nombre oblong car 12 = 3 * 4
272 est un nombre oblong car 272 = 16 * 17

1640 est un nombre oblong car 1 640 40 * 41

On se propose d’écrire un code Python permettant de remplir un tableau T par N entiers positifs de quatre chiffres (avec 2 N 10) et d’afficher tous les nombres oblongs figurants dans le tableau T.

Pour cela, on donne l’algorithme du programme principal suivant:
ALGORITHME OBLONGS
DEBUT
Répéter
Ecrire (« Donner la taille du tableau :
Lire (N)
Jusqu’à  2<=N<=10
Pour i de 0 à N-1 Faire
Ecrire (« T[« , i, « ] : « )
Lire (T[i])
Fin Pour
Afficher (T, N)

FIN

Travail demandé :

      1. Implémenter l’algorithme Oblongs en Python et ajouter les bibliothèques nécessaires.
      2. Transformer la séquence de saisie de N, en un module et apporter les modifications nécessaires dans le programme principal.
      3. Ajouter le contrôle de saisie sur les éléments du tableau et transformer la séquence de remplissage du tableau en un module en apportant les modifications nécessaires dans le programme principal.
      4. Développer le module Affiche qui permet d’afficher les nombres oblongs figurant dans le tableau T

Exemple :   Pour N = 6 et le tableau T suivant

1056

3061

4512

1260

2724

5835

0

1

2

3

4

5

Le programme affichera : Les nombres oblongs sont : 1056 , 1260
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# NOMBRES OBLONGS

def saisie():

n=int(input(‘Saisir la taille du tableau: ‘))
while not ( 2 <= n <= 10):
n=int(input(‘Saisir la taille du tableau: ‘))
return n
 

def remplir(t,n):

for i in range(n):
t[i]=int(input(‘Saisir t[‘+str(i)+’]:’))
while (t[i]<100) or (t[i]>9999):
t[i]=int(input(‘Saisir t[‘+str(i)+’]:’))

def oblong(x):

j=1
verif= j*(j+1)==x
while (verif== False) and (j*(j+1)<x):
j=j+1
verif=j*(j+1)==x
return verif
 

def Affiche():

for i in range(n):
if oblong(t[i]):
print(t[i],end=’ ‘)
 

# PROGRAMME PRINCIPAL 
n=saisie()
from numpy import array
t=array([int()]*n)
remplir(t,n)
print(« Les nombres blogons sont: « )
Affiche()

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

On désire remplir un tableau « Occ » par l’occurrence de chaque caractère composant une chaîne de caractères, sans redondance.

Dans ce but, ci-après  un algorithme de la fonction occurrence, qui permet de renvoyer l’occurrence d’un caractère c dans une chaîne ch.

Travail demandé:
  1. Implémenter la fonction occurrence en python
  2. Développer un module saisie, qui permet de saisir une chaîne d’aux maximum 15 caractères alphabétique minuscules
  3.  Remplir le tableau « Occ » par l’occurrence de chaque caractère composant la chaîne saisie
  4. Exploiter les modules développer dans un programme principal.
l’ occurrence d’une lettre signifie le nombre d’apparitions
ALGORITHME OCCURRENCE
Fonction Occurrence (c : caractère, ch: chaîne):entier
DEBUT
          occ ← 0
pour i de 0 à long(ch)-1 faire
           si ch[i]= c alors  occ ← occ+1 finsi
fin pour
retourne occ 

                               FIN

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# Occurrences des lettres

def verif(ch):

i=0
while (‘a'<=ch[i]<=’z’) and (i<len(ch)-1):
i=i+1
return ‘a'<=ch[i] <=’z’
 

def saisie():

ch=input(‘Saisir une chaîne: ‘)
while verif(ch)==False:
ch=input(‘Saisir une chaîne: ‘)
return ch

#Nombre d’occurrences de chaque caractères sans redondance dans la chaîne

def occurrence(x,ch):

occ=0
for i in range(len(ch)):
if ch[i]==x:
occ=occ+1
return occ
 

def Existe(x,ch,i):

nb=0
for j in range(i):
if ch[j]==ch[i]:
nb=nb+1
return nb>0

def remplir(t,ch):

j,i=0, 0
for i in range(len(ch)):
if Existe(ch[i],ch,i)==False:
t[j]=occurrence(ch[i],ch)
print(str(t[j])+ch[i],end=’ – ‘)
j=j+1
 

#PROGRAMME PRINCIPAL 

mot=saisie()
print(« Tableau d’occurrences: « )
«  » »Importation de la bibliothèque numpy et declaration du tableau » » »
from numpy import array
t=array([int()]*len(mot))
remplir(t,mot)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Soit un tableau «Lettre» contenant n lettres majuscules (de A à Z). n étant un entier compris entre 5 et 20.

   On désire trier en ordre croissant et sans redondance, les éléments du tableau «Lettre» et les ranger dans un tableau «Tri_Lettre», en utilisant le principe suivant :

      1. Chercher la lettre qui a le plus petit code ASCII dans «Lettre»
      2. Ranger cette lettre dans «Tri_Lettre»
      3. Remplacer cette lettre par « * » dans le tableau «Lettre»
      4. Répéter n fois les étapes 1 et 2.

Travail demandé:

Développer un script Python, qui répond au besoin de l’énoncé, composé des modules suivants :
          • Saisie de la taille du tableau
          • Remplissage du tableau «Lettre»
          • Chargement du tableau «Tri_Lettre»
          • Affichage du tableau «Tri_Lettre»

Consultez les métodes de Tri fréquents dans notre page Référence.

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# TRI LETTRES

def saisie():

n=int(input(‘Saisir la taille du tableau: ‘))
while not ( 5 <= n <= 20):
n=int(input(‘Saisir la taille du tableau: ‘))

return n

#Remplissage du tableau Lettre
def remplir(t,n):

for i in range(n):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
while (t[i]<‘A’) or (t[i]>’Z’):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
 

def MinASCII(t,n):

posmin=0
for i in range(n):
if (t[i]<t[posmin]) and (t[i]!=’*’):
posmin=i
min= t[posmin]
for i in range(n):
if t[i]==min:
t[i]=’*’
return min
 

#Tri du tableau Lettre
def Tri(t,n):

for i in range(0,n):
TriLettre[i]= MinASCII(Lettre,n)
if TriLettre[i]!=’*’:
print(TriLettre[i])
 

# PROGRAMME PRINCIPAL 
n=saisie()
from numpy import array
Lettre=array([str()]*n)
TriLettre=array([str()]*n)
remplir(Lettre,n)
print(« Le tableau à trier: « ,Lettre)
Tri(Lettre,n)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Une station de radio privé lance chaque début de chaque semaine un concours hebdomadaire intitulé : Hitparade, pour classer k titres de chansons qu’elle propose à ses éditeurs afin d’afficher le résultat du classement le samedi et diffuse la chanson la plus demandée par les auditeurs.

Tout au long de la semaine, un responsable de la station reçoit par téléphone les propositions des participants au concours parmi ses auditeurs qui sont appelés à choisir le titre préféré afin d’ajouter à son score 3 points.

Pour obtenir le classement final des cinq chansons suite à la participation d’un nombre donné des auditeurs de la station, on se propose d’écrire un programme qui permet de :

  • Remplir un tableau Tl par les cinq titres des chansons, sachant qu’un titre est composé uniquement par des lettres alphabétiques et des espaces.
  • Saisir le nombre N de participants avec 5 ≤ N ≤ 100.
  • Générer un tableau T2 représentant les scores des cinq chansons en ajoutant 3 points au score de chacune si le numéro qui lui correspond a été choisi par un participant. Ce numéro est un chiffre allant de 1 à 5, représentant l’emplacement de la chanson dans le tableau Tl.
  • Afficher le classement des chansons, comme indiqué dans l’exemple ci-après, en commençant par le titre de la chanson ayant le plus grand score. 11 est à noter que les chansons ayant un même score auront un même rang dans le classement.

Exemple : pour le tableau suivant :

T1HappySorryMe QuemoRosaHello

Et un nombre de participants N =11 ayant fait les choix suivants :

Choix du participant n°1 : 5

Choix du participant n°2 : 4

Choix du participant n°3 : 5

Choix du participant n°4 : 1

Choix du participant n°5 : 2

Choix du participant n°6 : 5

Choix du participant n°7 : 1

Choix du participant n°8 : 2

Choix du participant n°9 : 4

Choix du participant n°10 : 1

Choix du participant n°11 : 5

On aura :

T2960612

Le programme affiche : Le classement est :

Rang 1 : Hello

Rang 2 : Happy

Rang 3 :Sorry, Rosa

Rang 4 : Me Quemo

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# Hitparade

def saisie():

n=int(input(‘Saisir la taille du tableau: ‘))
while not ( 5 <= n <= 20):
n=int(input(‘Saisir la taille du tableau: ‘))

return n

#Remplissage du tableau Lettre
def remplir(t,n):

for i in range(n):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
while (t[i]<‘A’) or (t[i]>’Z’):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
 
 

# PROGRAMME PRINCIPAL 
n=saisie()
from numpy import array
Lettre=array([str()]*n)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Un nombre N est dit premier 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

Exemple :

Si N=719 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 pas premier.

Ecrire un programme modulaire en Python permettant de chercher tous les nombres premiers circulaire se trouvant dans un intervalle [p, q] fournis par l’utilisateur. (0≤ p< q)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# Hitparade

def saisie():

n=int(input(‘Saisir la taille du tableau: ‘))
while not ( 5 <= n <= 20):
n=int(input(‘Saisir la taille du tableau: ‘))

return n

#Remplissage du tableau Lettre
def remplir(t,n):

for i in range(n):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
while (t[i]<‘A’) or (t[i]>’Z’):
t[i]=input(‘Saisir t[‘+str(i)+’]:’)
 
 

# PROGRAMME PRINCIPAL 
n=saisie()
from numpy import array
Lettre=array([str()]*n)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Enoncé :

Un nombre palindrome est un entier naturel qui reste le même qu’on le lise de droite à gauche ou de gauche à droite.

Exemples : 47374, 101, 6 et 9449 sont des nombres palirxirornes.

Pour déterminer la suite palindromique associée à un entier naturel N, on procède comme suit:

• On inverse l’ordre des chiffres de N et on ajoute N à ce nombre inversé.

• On recommence l’opération avec le nouveau nombre jusqu’ à obtenir un palirdrome.

Exemples :

• pour N=64, on inverse les chiffres on obtient 46 auquel on ajoute 64, on obtient 110.

   Comme 110 n’est pas palindrome alors on continue le même traitement avec IIO. On inverse les chiffres de

     110 on obtient 11 auquel on ajoute 110 on obtient 121 Comme 121 est palirdrome alors on arrête le traitement;

     Et la suite palindromique de 64 est : 64. 1 10, 121.

• Pour N= 1048, on inverse les chiffres on obtient 8401 auquel on ajoute 1048, on obtien: 9449.

Comme 9449 est palindrome alors on arrête le traitement et la suite palindlomique de 1048 est : 1048, 9449

• Pour N = 196, aprés 11 itérations on obtient,196, 196 , 887 , 1675 , 7436 , 13783 , 52514 , 94039 , 187088 , 1067869 , 10755470 , 18211171 , 35322452 , le calcul de 11 termes ne donne pas une suite palindromique pour ce nombre

 
Travail demandé:

 Ecrire un programme Python qui, à partir d’un entier naturel N donné (avec N ≥10), détermine et affche sa suite palindromique.

• Le programme affiche les termes de la suite palindromique suivi du message « Cette suite est palindromique » si le nombre de ses termes est inférieur ou égal 10.

• Dans le cas où on arrive à 11 termes sans trouver une palindrome le programme affiche le message: « le calcul  ne donne pas une suite palindromique pour ce nombre »

      • Une solution modulaire au problème est exigée.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

# Suite Palindromique

def saisir():
        n = input(‘donner un entier: ‘)
        while n.isnumeric()==False:
                  n = input(‘donner un entier: ‘)
         return n

def palindrome(n):
        ch=str(n)
         i = 0
         while (i < len(ch) // 2) and (ch[i] == ch[len(ch) – i – 1]):
                  i += 1
         return i==len(ch)//2

def inverse(ch):
       ch_inv= » »
       for i in range(len(ch)):
               ch_inv=ch[i]+ch_inv
       return ch_inv

def affiche(n):
       nb = 0
       print(n, ‘, ‘, end= »)
        while (palindrome(n)==False) and (nb != 11):
           nb += 1
           ch = inverse(str(n))
           x = int(str(n))
           y = int(ch)
           z = x + y
           n = str(z)
           print(n, ‘, ‘, end= »)

          if   palindrome(n)==True :
                print(‘cette suite est palindromique’)
          else:
                print(‘le calcul de 11 termes ne donne pas une suite palindromique pour ce nombre’)

#Programme Principal

n = saisir()
affiche(n)

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }
Retour en haut