J'essaie actuellement de créer un jeu du pendu, dans lequel vous pouvez choisir le nombre de lettres dans un mot.
hLetters = int(input("How many letters? (4-16)\n"))
def word(letters):
if letters == 4:
random.choice(list4)
if letters == 5:
random.choice(list5)
# etc, etc
word(hLetters)
De toute évidence, c'est inefficace - existe-t-il une méthode pour obtenir le valeur des hLetters à placer après "list", pour qu'il choisisse automatiquement "list4" lorsque l'entrée est 4, ou "list8" lorsque l'entrée est 8?
3 Réponses :
Vous pouvez placer toutes vos listes dans un dictionnaire -
random.choice(words_lists[letters])
Et choisir au hasard parmi ces valeurs de dict -
words_lists = {4 : list4, 5: list5}
Une liste serait légèrement plus efficace à la fois en termes de stockage et de vitesse d'accès. [* ((None,) * 4), list4, list5, ...] vous permet d'utiliser words_list [lettres] sans soustraction, mais [list4, list5, ...] fonctionnerait bien aussi à condition que vous soustrayiez 4 de lettres pour en faire un index valide.
C'est une liste de listes. Tout comme vous avez une liste pour plusieurs lettres, au lieu de les référencer comme lettre1, lettre2, faites une liste de vos listes multiples
random.choice(outer_list[letter - 1])
puis
outer_list = [list1, list2, ...]
Pensez que vous manquez une partie du deuxième bloc. random.choice (external_list [letter-1]) , à part ça une bonne solution :)
Vous pouvez utiliser une liste de liste pour ce
letter = 4 listoflist=[list4,list5,list6,..list16] print(random.choice(listoflist[letter-4]))