Problème extension de liste
Remonter à Forum général Python
-
Voilà, j'essaie de programmer un petit programme permettant de pouvoir retourner un mot entré.
Voilà mon code :
----------------------------------------------------------------
#!/usr/bin/env python
def main():
pass
if __name__ == '__main__':
main()
print("Retourneur de mots")
texteUtilisateur = "a"
texteUtilisateur = input("Rentrez un mot")
longueurTexteUtilisateur = len(texteUtilisateur)
print("Longueur du mot = ", longueurTexteUtilisateur)
letter = []
nb = 0
incrementCreateList = 0
bn = longueurTexteUtilisateur
decrement = longueurTexteUtilisateur
while decrement != 0:
letter[incrementCreateList] = 0
incrementCreateList = incrementCreateList + 1
decrement = decrement - 1
while longueurTexteUtilisateur != 0:
letter[nb] = texteUtilisateur[nb:nb+1]
nb = nb + 1
longueurTexteUtilisateur = longueurTexteUtilisateur - 1
while nb != -1:
print(letter[bn])
bn = bn - 1
nb = nb - 1
--------------------------------------------------------------
Seulement voilà la boucle qui est censée étendre la liste ne fonctionne pas, enfin je l'ai mal programmée...
Je recherche donc une fonction me permettant d'étendre la liste car faire letter = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] fait très brouillon et de plus on est jamais sûr de la longueur du texte de l'utilisateur (peut-être voudrait-il inverser un roman entier ?)
De plus en voulant tester le résultat quand même (avec la fonction letter = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) il m'affiche les lettres en sautant une ligne
j'aimerais aussi les aligner, comment faire ?
Merci d'avance !-
Pour le problème de l'extension de liste, je l'ai résolu avec la fonction : letter.append(0)
Il me reste le problème de l'alignement des lettres, merci
-
pour inverser un mot, tu peux utiliser la notation s[ i:j:k]
voir
-théorie: http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange
-exemple pratique: http://docs.python.org/whatsnew/2.3.html#extended-slices
>>> mot='bonjour'
>>> mot[::-1]
ruojnob
Autre méthode
en utilisant le générateur "reversed" si tu as besoin de faire un traitement sur les lettres,
"join" permet de joindre les éléments d'une liste
>>> mot='bonjour'
>>> for lettre in reversed(mot):
... print lettre
...
r
u
o
j
n
o
b
>>> ''.join([ lettre for lettre in reversed(mot)])
'ruojnob'
-
Rendu par Ploneboard
