Problème de boucle

d0wnhill_Skateur -  
 d0wnhill_Skateur -
Bonjour,
J'ai écrit un programme pour générer un mot aléatoirement en fonction de paramètres renseignés, pour 1 mot à générer, ça marche nickel, mais pour plusieurs mots, ça crash. Je ne comprend pas :

import os
import random

def CMot():
 mot = ""
 List = Lettres
 N = 0
 while i < Taille:
  lettre = random.choice(List)
  mot += lettre
  List.remove(lettre)
  N += 1
 return mot

Lettres = input("Entrez les lettres en mettant des virgules: ")
Lettres = Lettres.split(",")
Taille = input("Entrez le nombre de lettres du mot: ")
Taille = int(Taille)
lent = input("Entrer le nombre de mots: ")
lent = int(lent)
i = 0

while i < lent:
 mot = CMot()
 print(mot)
 i += 1
os.system("pause")

2 réponses

  1. nbulomatic
     
    Bonjour.

    Lorsque tu fais
    List = Lettres
    , List et Lettres pointent tous deux vers le même objet, ce qui fait que les opérations de suppression, ajout, etc, affecteront ces deux variables.

    >>> a = [1, 2, 3]
    >>> b = a
    >>> a.pop()
    3
    >>> b
    [1, 2]


    Pour contrer cela, il faut travailler sur une copie de ta liste, via la méthode copy de list. Et attention, dans la condition du while de ta fonction, i n'existe pas, c'est N.
    2
  2. d0wnhill_Skateur
     
    Merci beaucoup de ta réponse rapide.
    Bonne journée
    0