2017-02-17 5 views
-1

Was bedeutet die Syntax in einer for-Schleife in einfachem Englisch?Warum diese Syntax für Python für Schleife

bin ich besonders verwirrt durch das, was von

for X 

Im Beispiel unten gemeint ist, warum ich ‚für den Buchstaben‘ verwenden? Liegt es daran, dass "Buchstabe" die einzelne Komponente der Sache ist, die ich zurückgeben möchte, wenn die Funktion ausgeführt wurde?

Ich habe Stunden gebraucht, um die Position der Wörter 'Buchstabe', 'Zeile', 'Zeile' und 'Zeilenindex' innerhalb der Funktion zu ändern, um etwas zu finden, das funktioniert.

Jede Funktion muss ich als eine Aufgabe schreiben, ich habe die gleiche Verwirrung.

def make_str_from_row(board, row_index): 
""" (list of list of str, int) -> str 

Return the characters from the row of the board with index row_index 
as a single string. 

>>> make_str_from_row([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 0) 
'ANTT' 
""" 

line = '' 

for letter in board[row_index]: 
     line = line + letter 

return line 
+0

für jeden Buchstaben im Alphabet, Druckbuchstaben. 'für Buchstaben in" abcdef ... ": print (Buchstabe)' – Li357

+0

https://opentechschool.github.io/python-beginners/de/loops.html – Alexander

+0

Sie können 'line + = letter' als kurze Hand verwenden für "Linie = Linie + Buchstabe". Ich denke auch, es ist erwähnenswert, dass diese ganze Methode als ''' .join (board [row_index])' ausgeführt werden kann. Es fügt jeden Buchstaben von 'board [row_index]' hinzu und setzt '' '' (nichts) zwischen jeden Buchstaben. – Alexander

Antwort

0

Versuchen Sie, an "for x in letter" zu denken als „für jeden x in Buchstaben“ zum Beispiel, wenn Sie den Code unten in Python ausführen:

small_list = ["A","B","C","D"] 
for x in small_list: 
    print x 

You will get the output: 
A 
B 
C 
D 
None 

der knapp über Code jedes Element in der Liste ‚small_list‘ geprüft und erstellt die entsprechenden Werte.

1

Die Syntax ist die gleiche wie die, die für die Existenz Tests verwendet wird;

letter = 'a' 
mystring = 'Hello World' 
if letter in mystring: 
    print("Letter "+letter+" in "+mystring) 
else: 
    print("Letter "+letter+" not in "+mystring) 

In diesem Beispiel stellen Sie dem Interpreter eine Frage; wenn letter (ist) in mystring dann print "der Buchstabe ist in meiner Zeichenfolge", andernfalls print "der Buchstabe ist nicht in meiner Zeichenfolge."

Ein for Schleife fragt die gleiche Frage außer alle Brief in der Liste/Zeichenfolge/Container; für (alle) letter in board[row_index] verketten Sie die Zeile und den Buchstaben.

Die Art, wie ich das gelernt habe, stammt aus meiner Erfahrung mit boost.foreach-Schleifen. Wenn Sie sie jemals benutzt haben, werden Sie verstehen, dass die Schleife automatisch jedes Objekt im Container durchlaufen wird, wenn ein Container und ein Puffer für die Objekte im Container vorhanden sind.

Wie Sie sehen können, sind die boost.foreach-Schleife und die for-Schleife von Python funktional gleichwertig. (Nebenbei bemerkt, Pythons for-Schleifen sind viel flexibler. Die for-Schleifen von Python entpacken Tupel-Listen und unterstützen Verzweigungen, falls die Schleife nicht unterbrochen wird.)

+0

Was ist die Sprache im zweiten Code verwendet – kouty

+0

@ kouty - Das ist C++. – TigerhawkT3