def compte_caractere(chaine, caractere) :
"""
chaine -- chaîne de caractères
caractere -- un caractère
renvoie un entier égal au nombre
d'occurrences du caractère caractere dans la chaîne chaine.
>>> compte_caractere("coucou", 'c')
2
>>> compte_caractere("abracadabra", 'e')
0
"""
compteur = 0
for caract in chaine:
if caract == caractere:
compteur += 1
return compteur
compte_caractere("coucou", 'c')
compte_caractere("abracadabra", 'e')
def ligne_suivante(chaine) :
"""
chaine -- chaine de caractères (constituée de chiffres)
renvoie la chaîne de caractères construite suivant la logique de
l'exercice précédent.
>>> ligne_suivante('0')
'10'
>>> ligne_suivante('43325455222')
'35242342'
"""
ligne_suiv = ''
for caractere in '9876543210' :
if caractere in chaine:
ligne_suiv += str(compte_caractere(chaine, caractere)) + caractere
return ligne_suiv
ligne_suivante('0')
ligne_suivante('43325455222')
def triangleRobinson(chaine, nombre_lignes) :
"""
chaine -- chaine de caractères
nombre_lignes -- entier > 0
renvoie une chaîne de caractères,
constituée de nombre_lignes lignes,
chaque ligne étant construite à partir de la précédente
par le principe de Robinson précédent.
"""
triangle = ''
ligne = chaine
for i in range(nombre_lignes) :
triangle += ligne + '\n'
ligne = ligne_suivante(ligne)
return triangle
print(triangleRobinson('0', 8))
def arret(chaine):
"""
chaine -- chaine de caractères
renvoie une chaîne de caractères constituée des lignes
de la suite de Robinson partant de chaîne.
Cette chaîne s'arrête dès que deux lignes sont identiques
ou dès que le nombre de lignes est égal à 20.
"""
ligne = chaine
triangle = ligne + '\n'
nb_lignes = 1
while nb_lignes <= 20:
ligne_suiv = ligne_suivante(ligne)
triangle += ligne_suiv + '\n'
nb_lignes += 1
if ligne_suiv == ligne:
break # permet d'interrompre la boucle
else:
ligne = ligne_suiv
return triangle
print(arret('0'))
print(arret('1'))
print(arret('42'))
print(arret('666'))