2017-04-12 3 views
0

Ich habe hier ein Python-Programm, das ein Wort entschlüsselt, aber ich bin mir nicht sicher, was in einem bestimmten Abschnitt passiert.Python Word Scramble/Jumble - wie kann das ein Wort verwirren?

In dem Abschnitt, der blockquoted und durch Header unten getrennt ist, verstehe ich nicht, warum das "scrambling" des Wortes in eine while-Schleife gelegt wird - könnte es ohne die Schleife nicht funktionieren? Kann jemand erklären, was in dieser While-Schleife passiert (während Word :)?

import random 
words = ('coffee', 'phone', 'chair', 'alarm') 
word = random.choice(words) 

correct = word 
scramble = "" 

while word: 
    position = random.randrange(len(word)) 
    scramble += word[position] 
    word = word[:position] + word[(position + 1):] 

print("The scrambled word is: ", scramble) 
answer = input("What's your guess?: ") 

def unscramble(answer): 
    while answer != correct and answer != "": 
     print("Sorry, incorrect.") 
     answer = input("Try again: ") 
    if answer == correct: 
     print("Good job, that is correct!") 

unscramble(answer) 
+1

Ich schlage vor, 'print (word)' (zweimal), 'print (position)', 'print (scramble)' innerhalb Ihrer 'while word'-Schleife hinzuzufügen. Eine gute Möglichkeit, herauszufinden, was in den Code-Blöcken vor sich geht, ist, sie mit print-Anweisungen zu versehen und dann den Code auszuführen. –

+0

Danke, aber wo würde ich diese Druckanweisungen in den Code einfügen? Entschuldigung, ich bin sehr neu. –

+0

Wenn Sie für jede Zeile in der while-Schleife nicht herausfinden können, was die relevanten Werte Ihrer Variablen sind, drucken Sie sie aus. –

Antwort

0

die zu einem Zeitpunkt, an der while-Schleife eine Zeile sehen lassen.

while word: 

Dies ist nur eine Kurzform für das Sagen while len(word) > 0. Dies bedeutet, dass die Schleife fortgesetzt wird, bis word leer ist.

position = random.randrange(len(word)) 

Diese Zeile verwendet die Standardbibliothek random.randrange Funktion eine (Pseudo-) Zufallszahl zwischen 0 und len(word) - 1 inklusive zu erhalten.

Hier wird das Zeichen an der zufälligen Position im Wort zum verschlüsselten Wort hinzugefügt.

Schließlich löscht diese Zeile das zufällig ausgewählte Zeichen aus dem ursprünglichen Wort mit Slicing. Der Ausdruck word[:position] bedeutet "die Teilzeichenfolge von word bis zu (aber nicht einschließlich) dem Index position". Wenn also position 3 ist, dann wären word[:position] die ersten drei Zeichen des Wortes als Zeichenfolge. In ähnlicher Weise bedeutet word[(position + 1):] "die Teilzeichenfolge von word beginnend bei Index position + 1". Sein „word mit Ausnahme der Zeichen bei Index position

Der ganze Ausdruck endet, weil die Wahl des word bis zu position mit dem Teil von word sind verketten bei position + 1 beginnen. Leider ist dies die eleganteste Möglichkeit, ein Zeichen aus einer Zeichenfolge in Python zu löschen.

Zusammenfassend: Die while-Schleife wählt ein zufälliges Zeichen des ursprünglichen Wortes, fügt es dem verschlüsselten Wort hinzu und löscht es aus dem Original. Dies wird fortgesetzt, bis keine Zeichen mehr im Original vorhanden sind.

Verwandte Themen