Oui, l-1 au lieu de l.
Mais honnêtement, ton programme est très mal conçu.
D'abord, on passera sur le fait que tu utilises Python 2.X plutôt que Python 3.X ( sûrement car tes professeurs t'ont imposé ce choix, ce qui est dommage... étant donné que passer à la dernière version ne coûte rien )... C'est pas si grave.
Mais ce qui l'est plus, c'est ton choix de boucle :
En algorithmique, on distingue généralement deux types de boucles : les boucles " Pour " ( = for en anglais ), qu'on utilise lorsque l'on connait le nombre d'itérations ( = tour de boucle ) qu'il faut réaliser, et les boucles " Tant Que " ( = while en anglais ) qui tourneront tant qu'une certaine condition est valide... On les utilise que lorsque nous ne pouvons pas savoir à l'avance le nombre de tours maximum que l'on va réaliser.
Or, là, tu connais le nombre de tours que l'on va réaliser : c'est la longueur de ta chaine.
Du coup, l'utilisation d'une boucle Tant Que est inappropriée.
Et d'un point de vue plus pythonique, les boucles Pour en Python sont des boucles for ... in ..., c'est à dire qu'elles parcourent un objet dit " itérable ". En l’occurrence, elles peuvent parcourir une chaine de caractères ( caractère par caractère )... Ce qui est exactement ce que tu veux.
Ton programme s'écrirait donc plus de la forme :
for i in chaine: #A chaque tour de boucle, i prend la valeur du caractère suivant de la boucle
#Les actions que tu veux réaliser
#La boucle se termine quand le parcours de la chaine est terminé...
Bref, tu n'avais peut-être pas vu ça en cours, mais ça me semblait nécessaire de préciser que l'usage d'une boucle Tant Que est inapproprié... Tu as déjà probablement vu la nuance entre les deux boucles en cours....
( et dernier point je sais pas si c'est un mauvais C/C, mais ta condition doit être à l'intérieur de ta boucle hein... Tu veux qu'elle s'exécute pour chaque caractère... Pas seulement pour le dernier ( de toute façon ça ne marcherait pas
) )