Problème de boucle

Fermé
d0wnhill_Skateur - Modifié le 6 nov. 2018 à 06:26
 d0wnhill_Skateur - 6 nov. 2018 à 11:29
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

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
d0wnhill_Skateur
6 nov. 2018 à 11:29
Merci beaucoup de ta réponse rapide.
Bonne journée
0