Forum Programmation.python Débutant - Besoin d'aide sur un exercice

Posté par . Licence CC by-sa
Tags : aucun
1
18
avr.
2017

Bonjour,

Je viens vers vous car je viens de débuter avec Python et je n'arrive pas à faire la suite de l'exercice :

_ Ecrire un programme en Python dont l'objectif du programme consiste à saisir une suite de mots et
à les stocker dans une liste, à afficher ces mots en sens inverses et à les manipuler.

• La première fonction du programme devra faire saisir la liste de mots à l'utilisateur et les stocker
dans une liste. L'utilisateur tapera "fin" pour arrêter la saisie. Le mot "fin" ne sera, bien entendu,
pas stocké dans la liste

• La seconde fonction du programme affichera à l'écran les mots à l'envers.

• La troisième fonction du programme recopiera un mot sur deux de cette liste dans une nouvelle
liste, en commençant par recopier le premier. Les mots qui seront "sautés" seront remplacés par la
chaine de caractères "XXX". Afficher le résultat _

J'ai réussi à faire la première fonction :

## Définition des variables
mot = str()
Liste=list()

while mot.lower() != "fin":
mot= input("Rentrer un mot ou tapper 'Fin' pour arrêter: ")
Liste.append(mot)
Liste.remove("fin")
print("Votre liste de mot est : ",Liste)

Mais je bloque pour la deuxième et troisième fonction, quelqu'un pourrait t-il m'aider ??

Merci d'avance pour vos réponses ! :)

  • # Conseils

    Posté par . Évalué à 5. Dernière modification le 18/04/17 à 14:33.

    C'est des trucs simples qui se font en deux lignes, mais l'idée c'est pas de te le faire mais de t'aider.

    Commence par jeter un oeil aux méthodes proposées par l'objet list pour voir s'il y a des choses qui pourraient te servir : https://docs.python.org/2/tutorial/datastructures.html

    2/ Tu peux faire à la main une fonction qui lit la liste en partant de la fin et stocke les éléments dans un autre autre liste. Pour ça, je pense que tu as tout ce qu'il faut.

    Ou mieux, tu cherches une fonction Python ou une méthode de list qui renvoie une liste avec les éléments à l'envers (attention, cette méthode renvoie une nouvelle liste ou modifie la liste existante ?).

    3/ Je vois pas la difficulté. Tu parcours les éléments un par un et si l'index est impair tu fais la substitution. Après en Python, il y a des façons plus sympas et plus efficaces de procéder, mais si déjà tu as la façon simple c'est pas mal.

    Tu devrais indiquer ce que tu as fait ou cherché jusque là et ce qui bloque.

    Edit: à la réflexion, les méthodes proposées par list ou Python, c'est des spécificités Python et si l'objet du cours c'est de faire de l'algorithmie, alors peut-être que tu peux commencer par essayer de résoudre le problème sans ça. Une fois que tu as ces bases, alors ça reste une bonne démarche dans la vraie vie d'un développeur que de lire la doc (ou le code…) des objets que tu utilises pour savoir ce qu'ils proposent.

    • [^] # Re: Conseils

      Posté par . Évalué à 1.

      Merci Jihele,

      Je vais me pencher dessus et essayer de trouver la solution, c'est juste que j'étais un peu perdu dans tous ce que peut offrir la langage.

    • [^] # Re: Conseils

      Posté par . Évalué à 1.

      Maintenant je n'arrive pas à inverser mes mots et les mettre dans une liste … Ca me renvoie une seule et même chaine de caractère..

      _### Fonction 1 ###
      def liste_mot() :
      mot = str()
      Liste=list()
      while mot.lower() != "fin":
      mot= input("Rentrer un mot ou tapper 'Fin' pour arrêter: ")
      Liste.append(mot)
      Liste.remove("fin")
      return Liste

      ### Fonction 2 ###
      def liste_inverse(Liste) :
      liste_inv = list()
      liste_retire = list()
      liste_retire = len(Liste) - 1
      liste_inv = Liste[liste_retire]
      while liste_retire :
      liste_retire -= 1
      liste_inv += Liste[liste_retire]

       return liste_inv[::-1]
      

      Liste = liste_mot()
      print("Votre liste de mot est : ",Liste)

      liste_inv=liste_inverse(Liste)
      print("La liste inversé est : ", liste_inv)_

      • [^] # Re: Conseils

        Posté par . Évalué à 3. Dernière modification le 19/04/17 à 12:53.

        Ca sert à quoi list_retire ?

        Au départ tu en fais une liste, puis un int ?

        Enfin, c'est normal que tu aies toujours le même mot parce que ton index se base toujours sur la longueur de ta liste source que tu ne modifies jamais.

        Ecris une description de ce que tu veux faire de façon claire, et ensuite transcris-le en python. Ce sera plus simple.

  • # Quelques indices

    Posté par . Évalué à 1.

    Salut !

    Pour la deuxième fonction, je te suggère de regarder ici, la documentation de la fonction range.

    range() retourne une liste, à toi de lire la doc pour comprendre comment ça pourrait te servir.
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    Pour la dernière fonction, tu peux utiliser les modulos (%) et range() (encore).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.