""" tranforme_chiffre(x) tranforme un chiffre x en un autre. Le tranforme_chiffre ci-dessous transforme un chiffre en son carré. On peut également utiliser une fonction {{lambda }} : tranforme_chiffre = lambda x: x**2 """ def tranforme_chiffre(x): return x**3 """ nombre_en_tableau(N) tranforme un entier N comme 3456 en la liste [6,5,4,3] """ def nombre_en_tableau(N): liste=[] while N != 0: liste.append(N % 10) comme le montre cette copie d'écran statique # reste division N par 10 N=N//10 # quotient division N par 10 return liste """ sommespeciale(liste) renvoie la somme des chiffres, ou la somme des carrés des chiffres, ..., selon la fonction tranforme_chiffre """ def sommespeciale(liste): somme=0 for i in range(0,len(liste)): somme=somme+tranforme_chiffre(liste[i]) return somme """ A un entier donné, on applique la fonction sommespeciale autant de fois que nécessaire pour tomber sur 1 ou pour tomber sur un cycle. sommefinale renvoie alors le cycle obtenu. Par exemple avec tranforme_chiffre(x)=x^2 """ def sommefinale(unentier): suite=[] while (unentier>1) and not(unentier in suite): suite.append(unentier) unentier=sommespeciale(nombre_en_tableau(unentier)) suite.append(unentier) return suite """ Cette fonction appelle simplement la fonction sommefinale en vérifiant auparavant que le premier terme est positif. Son intérêt est essentiellement pédagogique : gestion des erreurs. """ def cycle(u0): if (u0<=0): return return sommefinale(u0) """ Cette fonction affiche tous les cycles pour u0 inférieur ou égal au paramètre max """ def touslescycles(max): for entier in range(1,max+1): print(entier," ==> ",cycle(entier))