2017-10-15 4 views
1

les gars. Merci d'avoir pris le temps de regarder ça. J'ai eu quelques difficultés à essayer de comprendre comment exactement Python crée cette nouvelle variable de chaîne. Le code initial est avec un tuple plein de mots aléatoires. Un module aléatoire a été importé et a utilisé la méthode de choix pour extraire un mot aléatoire. Ensuite, une boucle while a été créée à partir de cette variable donnée qui contenait le mot aléatoire qui vient d'être tiré. L'objectif était de rendre complètement aléatoire le lettrage du mot. Après les mots, il imprime la variable qui contient le mot indexé randomisé. Voici le code dont je parleComment exactement cette nouvelle variable chaîne est-elle créée à partir de cet algorithme de boucle while en python?

import random 

# create a sequence of words to choose from 
WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone") 
# pick one word randomly from the sequence 
word = random.choice(WORDS) 
# create a variable to use later to see if the guess is correct 
correct = word 

# create a jumbled version of the word 
jumble ="" 
while word: 
    position = random.randrange(len(word)) 
    jumble += word[position] 
    word = word[:position] + word[(position + 1):] 

print(jumble) 

Ma question est la suivante: comment Python crée-t-il un tout nouveau mot? Je comprends le code et ce qui se passe jusqu'à ce qu'il atteigne cette partie donnée qui me rend confus sur ce qui se passe.

jumble += word[position] 
word = word[:position] + word[(position + 1):] 
+0

Ne connaissez pas le code Python, mais divisez le problème: 1. Choisissez un mot au hasard. 2. Mélangez le mot lui-même, en mathématiques que l'on appelle une permutation, vous voulez probablement une permutation aléatoire. – Elmex80s

Répondre

3

Au cours de chaque itération, vous « déplacer » un caractère du mot original à celui pêle-mêle. C'est actuellement assez simple quand vous comprenez la syntaxe:

jumble += word[position] - Ajouter au mot pêle-mêle le caractère à la position aléatoire

word = word[:position] + word[(position + 1):] - Retirez le caractère à la position position du mot d'origine word

Si Si vous ajoutez print word, jumble comme première ligne dans votre boucle while, vous pouvez voir les mots prendre vie :)

+0

ahhhh je l'ai compris. Donc, dans le cas de cette boucle while ... est-il sûr de dire qu'elle agit comme une boucle for en ce que la condition de boucle while spécifiée traverse toute la longueur de la variable mot elle-même? –

+1

@KennethStevenMcAuslandJr. tu pourrais dire ça. 'pour x dans xrange (len (mot)):' aurait travaillé ici aussi –

+0

bien merci, Daniel! Si cela ne vous dérange pas, pourrais-je vous parler un peu plus tard cette semaine pour des exercices de boucle que je construis pour moi? –