Python >> Python Tutorial >  >> Python

Einführung in die Programmierung:Was sind For-Schleifen in Python?

Willkommen zurück zum neusten Artikel in meiner Reihe „Einführung in die Programmierung“. In diesem Artikel werde ich beginnen, über eine andere Kontrollflussstruktur zu sprechen. Nämlich die for-Schleife .

Was ist Kontrollfluss in der Programmierung?

In früheren Artikeln habe ich angefangen, über Kontrollfluss zu sprechen . Im Allgemeinen bezieht sich der Kontrollfluss auf die Reihenfolge, in der Zeilen in einem Computerprogramm ausgeführt werden, sowie darauf, wie oft jede Codezeile ausgeführt wird. Es mag ein etwas seltsamer Begriff sein, wenn Sie ihm noch nie begegnet sind, aber vielleicht hilft es Ihnen, wenn Sie so darüber nachdenken:

  • Kontrolle bezieht sich auf Computercode, da Computercode steuert, was der Computer tut.
  • Fluss so wird dieser Computercode ausgeführt.

Ähnlich wie bei einem Fluss, der fließt und unterschiedliche Zuflüsse oder Verzweigungen haben kann, erlauben uns if-Anweisungen, Verzweigungen in unserem Computercode anzugeben.

    Um mit der Flussanalogie fortzufahren, Flüsse können gelegentlich auch Strudel haben, Bereiche, in denen das Wasser einfach im Kreis wirbelt, bis es aus dem Strudel entweicht und seinen normalen Fluss fortsetzt. Ich habe ein kleines Diagramm erstellt, um diesen Punkt zu wiederholen:

    Dies wird als „logisches Flussdiagramm“ bezeichnet. Sie können sich jede Box hier als eine Codezeile vorstellen, die ein Programm ausmacht. Es spielt keine Rolle, was das Programm tut, ich schaue nur auf die Reihenfolge, in der die Zeilen ausgeführt werden.

    Der Code fließt normalerweise in einer geraden Linie von oben nach unten, den grünen Pfeilen folgend, beginnend mit der ersten Zeile oben – dem blauen Kästchen. Auf Codezeile 1 folgt Codezeile 2. Aber irgendwann stoße ich auf eine if-Anweisung, eine Bedingung, die unsere Ausführung verzweigt.

    Was ist eine Codeschleife?

    Wenn die Bedingung wahr ist, mache ich in diesem Fall mit den Zeilen 4, 5 und 6 weiter und dann endet das Programm. Aber wenn die Bedingung falsch ist, führe ich Codezeile 3 aus und folge dem roten Pfeil. Nachdem ich diese Zeile ausgeführt habe, frage ich erneut if die Bedingung ist wahr. Vielleicht ist es diesmal wahr und ich beende das Programm. Vielleicht ist es das nicht, und ich muss über die roten Pfeile zurück zu Codezeile 3.

    Der in diesem Diagramm durch den roten Pfeil gekennzeichnete Codepfad stellt eine Schleife dar . Es sieht auch ein bisschen wie eine Schleife aus. Wie Sie sehen können, ist die Schleife eine Kontrollflussstruktur, die es mir ermöglicht, eine Codezeile mehr als einmal auszuführen. In diesem Fall wird Codezeile 3 ausgeführt, solange die Bedingung, die ich überprüfe, False ist. Wie oft können wir dieselbe Codezeile ausführen? Nun, eine Million Mal, wenn Sie müssen. Oder mehr. Es spielt keine Rolle. Die Schleife wird normalerweise ausgeführt, solange eine Bedingung wahr oder falsch ist.

    Was ist eine Endlosschleife im Code?

    Die Schleife kann sich auf jedem Zweig der Bedingung befinden. In meinem Beispiel befindet es sich im False-Zweig, aber ich könnte es auch im True-Zweig platzieren.

    Sie fragen sich vielleicht, was passiert, wenn in diesem Diagramm die Bedingung niemals wahr ist? Nun, in diesem Fall stecke ich in der Schleife fest. Ich habe eine sogenannte Endlosschleife . In diesem Fall wird unser Programm einfach nie enden. Manchmal möchten Sie vielleicht absichtlich ein Programm schreiben, das niemals endet, weil es jedes Mal, wenn es die Schleife durchläuft, tatsächlich etwas Nützliches tut, und Sie möchten, dass es dies bis zum Ende der Zeit tut. Aber meistens ist eine Endlosschleife ein Hinweis auf ein Problem mit unserer Logik.

    Jeder Programmierer schreibt irgendwann versehentlich eine Endlosschleife, daher ist es unter Programmierern ein kleiner Insider-Witz. Das ist vielleicht der Grund, warum Apple seine Adresse am neuen Hauptsitz 1 Infinite Loop, Cupertino, Kalifornien, genannt hat.

    Wie verwenden Sie Schleifen in Python-Code?

    Ich möchte, dass Sie sich ein Bild davon machen, worum es bei Schleifen geht. Während if / elif / else-Anweisungen etwas natürlicher sind, weil Sie sie immer verwenden werden, um Vorlieben oder Bedingungen auszudrücken, sind Schleifen etwas, das Sie im täglichen Leben nicht sehr oft verwenden oder antreffen. Außer vielleicht für die Gelegenheiten, in denen Sie einen Song, den Sie wirklich mögen, immer und immer wieder wiederholen. Das ist auch eine Schleife.

    So sieht also eine Schleife im Allgemeinen aus. Das Konzept ist universell für Computerprogramme, aber der Teufel steckt immer im Detail, wie man sagt, also werde ich mich als Nächstes darauf konzentrieren, wie Python Schleifen speziell implementiert.

    Es gibt tatsächlich mehrere Möglichkeiten, aber im Moment werde ich mich nur auf eine konzentrieren:die for-Schleife.

    Was sind iterierbare Objekte in Python-Code?

    Bevor ich auf die Syntaxdetails und Codebeispiele eingehe, müssen wir noch ein weiteres Konzept vorstellen, und das ist das Konzept eines iterierbaren Objekts:

    Beginnen wir mit einem einfachen Beispiel:

    Wenn Sie eine Schachtel voller Schokoladentrüffel haben, können Sie die Trüffel aufzählen. Mit anderen Worten, Sie können den Inhalt dieser Box durchlaufen. Ein Beispiel für Iteration , oder Zählung, ist der Prozess, einen Trüffel nach dem anderen herauszunehmen und ihn zu zählen.

    Ein weiteres Beispiel ist eine Gruppe von Personen.

    Die Gruppe besteht aus einzelnen Personen und ich kann sie aufzählen, oder anders ausgedrückt, ich kann wiederholen durch die Gruppe.

    Wie For-Schleifen mit iterierbaren Objekten erstellt werden

    Vielleicht denken Sie jetzt, was hat das mit Schleifen zu tun? Am besten zeige ich es Ihnen anhand eines größeren Beispiels:

    Elemente als iterierbare Objekte verwenden

    Lass uns ein Spiel spielen.

    Nehmen wir an, ich habe wieder meine Schachtel mit Schokoladentrüffeln und für jede Trüffel in der Schachtel nehme ich die Trüffel heraus und denke mir eine Zahl zwischen 1-10 aus und bitte meinen besten Freund, die Zahl zu erraten. Wenn sie richtig geraten haben, bekommen sie den Trüffel. Wenn nicht, esse ich den Trüffel.

    Die Chancen stehen gut, dass ich wahrscheinlich die meisten Trüffel essen werde, aber das ist ok.

    Hast du bemerkt, was ich hier gemacht habe? Ich habe eine Schleife erstellt .

    Die Schritte, einen Trüffel aus der Schachtel zu nehmen, an eine Zahl zu denken, meinen Freund bitten zu raten – das sind alles Schritte, die immer wieder wiederholt werden, bis mir die Trüffel ausgehen.

    Die Bedingung, die die Schleife beendet, ist, dass mir die Trüffel ausgegangen sind. Wenn Sie also keinen Zugang zu unendlichen Vorräten an Schokoladentrüffeln haben, was mich sehr eifersüchtig machen würde, werde ich irgendwann ausgehen und das Spiel wird enden. Dies ist natürlich nicht eine Endlosschleife .

    Eine andere Sache, die zu beachten ist, ist, dass diese Trüffelschleife möglich ist, weil ich durch die Schachtel mit Schokoladentrüffeln iterieren kann. Mit anderen Worten, es ist möglich, weil ich die einzelnen Elemente aufzählen kann, aus denen ein größeres Objekt besteht, und einige Aktionen für jedes Element ausführen kann.

    Buchstaben als iterierbare Objekte verwenden

    Es ist sehr wichtig, dass Sie dies intuitiv verstehen, bevor Sie abstraktere Codebeispiele schreiben, also gehen wir ein anderes Beispiel durch.

    Lass uns ein anderes Spiel spielen. Nehmen wir den aktuellen Wochentag - sagen wir Dienstag:

    Nicht mein Favorit, aber für den Moment reicht es.

    Wie gehen Sie vor?

    Ich beginne mit dem ersten Brief und ich werde versuchen, an ein Tier zu denken. Dann gehe ich zum nächsten Buchstaben über usw. Während ich dies tue, muss ich den aktuellen Buchstaben im Auge behalten, damit ich Folgendes aufschreiben kann:

    Nur zur zusätzlichen Übung werde ich dies in Python-Syntax tun, also sage ich current_letter ='t'. Beachten Sie hier die Anführungszeichen, da 't' eine Zeichenfolge ist .

    Was ist ein Tier, das mit t beginnt? Sagen wir Tasmanischer Teufel.

    So können wir drucken (Tasmanischer Teufel).

    Jetzt gehen wir zum nächsten Buchstaben über.

    Das ist u, also können wir current_letter ='u' setzen.

    Das einzige, was mir einfällt, ist urchin, also drucken wir ('urchin').

    Und so weiter und so fort. Ich werde die restlichen Buchstaben nicht durchgehen, aber Sie verstehen, worauf es ankommt.

    Objekte als iterierbare Objekte in Python verwenden

    Um auf unseren Hauptpunkt zurückzukommen, iterierbare Objekte sind Objekte, die aus Teilen oder Gegenständen bestehen, die sein können aufgezählt .

    In diesem Fall sagen Sie, dass das Objekt durchlaufen werden kann. Wie Sie gerade gesehen haben, ermöglichen es iterierbare Objekte außerdem, Schleifen zu erstellen, bei denen Sie konzeptionell für jedes Element, das Teil des iterierbaren Objekts ist, einige Aktionen ausführen können.

    Was sind also einige iterierbare Objekte, die wir in Python kennengelernt haben?

    Nun, zum Beispiel sind alle Objekte, die Sequenzen sind, iterierbar:

    • Strings sind Zeichenfolgen, sodass Sie für jedes Zeichen in einer Zeichenfolge einige Aktionen ausführen können.> In die Programmierung:Was sind Strings in Python?>
    • Listen sind geordnete Abfolgen von Elementen, und für jedes Element in einer Liste können Sie einige Aktionen ausführen> Einführung in die Programmierung:Was sind Listen in Python?>
    • Tupel sind auch geordnete Sequenzen von Elementen, und auch hier können Sie für jedes Element in einem Tupel einige Aktionen ausführen.> Einführung in die Programmierung:Was sind Tupel in Python?>
    • Wörterbücher sind Folgen von Paaren, die aus einem Schlüssel und einem passenden Wert bestehen, und für jedes Paar in einem Wörterbuch können wir wieder einige Aktionen ausführen.> In die Programmierung:Was sind Wörterbücher in Python?>

    Jetzt, da Sie ein gewisses Gespür für for-Schleifen entwickelt haben, können Sie etwas programmieren. Lassen Sie uns die Anatomie einer for-Schleife in Python durchgehen und einige ihrer häufigsten Anwendungsfälle untersuchen.

    Was sind For-Schleifen im Python-Code?

    Lassen Sie uns die Anatomie einer for-Schleife in Python untersuchen:

    Eine for-Schleife ist eigentlich nur eine Art Schleife in Python, die erstellt wird, indem die Elemente durchlaufen werden, aus denen ein iterierbares Objekt besteht.

    In diesem Beispiel habe ich eine for-Schleife, die eine Liste durchläuft, die die Ganzzahlen 1, 2, 3 und 4 enthält, und für jede Ganzzahl die Aktion ausführt, diese Zahl auszugeben.

    Nehmen wir das auseinander und schauen uns die Komponenten an, aus denen die Schleife besteht:

    Beachten Sie zunächst die grün hervorgehobenen Schlüsselwörter „for“ und „in“. Diese sind erforderlich, um die Schleife zu bauen, und Sie sind ihnen natürlich in Ihren früheren Beispielen begegnet:

    Eine Sache, die Anfänger oft verwirrt, ist die Variable current_item dort. Das ist eine Variable, die sich auf das aktuelle Element bezieht, aber Sie können es beliebig benennen.

    Wenn Sie beispielsweise über Trüffel in einer Pralinenschachtel sprechen, können Sie sie current_truffle nennen. Wie bei allen Variablennamen sollten Sie ihn so aussagekräftig wie möglich gestalten.

    Diese Variable wird automatisch von Python gesetzt. Python führt also den Akt durch, jedes Element im iterierbaren Objekt zu durchlaufen, das in diesem Fall die Liste 1, 2, 3, 4 ist, und speichert dann bei jedem Schritt das aktuelle Element in dieser Variablen. Dies ist wichtig, da es Ihnen dadurch das aktuelle Element zur Verfügung stellt:

    Als nächstes habe ich das iterierbare Objekt. Ich habe das bereits ausführlich behandelt, also gehe ich nicht noch einmal darauf ein, aber das soll Ihnen nur sagen, wo Sie es in der for-Schleifenstruktur platzieren müssen.

    Und schließlich beende ich diese Zeile mit einem Doppelpunkt, ähnlich wie ich es mit if / elif / else-Anweisungen getan habe. Der Doppelpunkt ist sehr wichtig, also vergiss ihn nicht.

    Unten haben Sie den Satz von Codezeilen, die Sie für jedes Element in der Sammlung oder Sequenz ausführen möchten, die wir durchlaufen. In diesem Fall tun Sie nur eine einzige Sache. Sie drucken das aktuelle_Element. Wenn Sie also diesen Code ausführen, wird zuerst 1 gedruckt, dann 2, dann 3 und schließlich 4.

    Beachten Sie die Vier-Leerzeichen-Einrückung . Es kann auch eine Registerkarte sein, wie ich bereits erwähnt habe. Dies teilt dem Python-Interpreter wiederum mit, welcher Code sich innerhalb der Schleife oder außerhalb der Schleife befindet.

    Das ist alles für die Anatomie einer Python-for-Schleife. Ziemlich einfach, oder?

    Lassen Sie uns als Nächstes in das Schreiben von Code mit for-Schleifen eintauchen.

    So schreiben Sie Code für For-Schleifen in Python

    Beginnen wir damit, das Codebeispiel zu schreiben, das ich zuvor besprochen habe:for current_item in [1,2,3,4]:print(current_item). Wenn ich diesen Code ausführe, sehen Sie, dass die Zahlen 1, 2, 3 und 4 der Reihe nach gedruckt werden.

    Lassen Sie uns diesen Code ändern, um etwas vor der eigentlichen Zahl auszugeben. Sagen wir für aktuelles_Element in [1,2,3,4]:print('aktuelles Element ist') print(aktuelles_Element). Sie sehen, dass jede der beiden Druckzeilen für jede der Ganzzahlen in der Liste ausgeführt wird, wie hier in Jupyter Notebook gezeigt:

    # Let's create our for loop
    for current_item in [1,2,3,4]:
        print(current_item)
    # Our output will be 1, 2, 3, 4
    
    # If we change our code just a bit:
    for current_item in [1,2,3,4]:
        print('current item is')
        print(current_item)
    # Our output changes to include two lines:
    #current item is, 1, current item is, 2, current item is, 3,
    #current item is, 4

      Nur um die Tatsache zu verdeutlichen, dass Sie hier einen beliebigen Namen für den Variablennamen auswählen können, ändern wir dies in for boo in [1,2,3,4]:print(boo). Und Sie sehen, dass es wieder alle Zahlen druckt. Bei jedem Schritt der Schleife wird diese Variable also aktualisiert, um das aktuelle Element in unserer Sequenz zu speichern. Es beginnt mit 1, dann wird es 2 usw.

      # Let's pick another name for our variable here
      for boo in [1,2,3,4]
          print(boo)
      # Our output is 1, 2, 3, 4

      So verwenden Sie For-Schleifen mit Variablen für Listen

      Eine andere Sache, die ich erwähnen möchte, ist, dass Sie anstelle der eigentlichen Liste eine Variable verwenden können, die eine Liste speichert.

      Nehmen wir also an, Sie haben eine Variable namens truffles, die die Liste [1,2,3,4,5] speichert. Stellen Sie sich vor, dass auf jedem Trüffel in der Schachtel eine Zahl steht, so würden Sie ihn im Computercode darstellen. Sagen Sie, dass Sie jeden Trüffel in der Schachtel durchgehen möchten, und drucken Sie einfach seine Nummer aus. Sie können einfach für some_truffle in truffles schreiben:print(some_truffle).

      Ich habe mein aktuelles Objekt some_truffle genannt, aber auch hier können Sie es so benennen, wie es im jeweiligen Kontext angemessen ist.

      Beachten Sie, dass Sie anstelle der expliziten Liste jetzt den Namen der Variablen verwenden, die die Liste speichert, was in unserem Fall diese Truffles-Variable ist.

      # Let's create our list:
      truffles = [1,2,3,4,5]
      
      # and our for loop
      for some_truffle in truffles:
          print(some_truffles)
      # Our output will be 1, 2, 3, 4, 5

      Beachten Sie auch, dass Sie dieses aktuelle Element nicht wirklich in unserer Logik verwenden müssen.

      Sie können zum Beispiel einfach truffles =[1,2,3,4,5] for some_truffle in truffles schreiben:print('Raten Sie, welche Zahl ich im Sinn habe!'). Und Sie sehen, dass das Ergebnis ist, dass Sie "Raten Sie mal, welche Zahl ich im Kopf habe!" 5 Mal.

      Warum 5 mal? Nun, weil diese Druckanweisung jedes Mal ausgeführt wird, wenn Sie einen Trüffel aus der Kiste pflücken, und Sie 5 Trüffel zum Pflücken haben.

      # Let's use our list
      truffles = [1,2,3,4,5]
      # to create our for loop
      for some_truffle in truffles:
          print('Guess what number I have in mind!')
      # Our output will be Guess what number I have in mind!, Guess what number I have in mind!,
      #Guess what number I have in mind!, Guess what number I have in mind!,
      #Guess what number I have in mind!

      Nun könnten Sie sagen, dass Sie dasselbe Ergebnis erzielen könnten, indem Sie "Raten Sie mal, welche Zahl ich im Sinn habe!" 5 Mal, indem Sie nur 5 Druckanweisungen schreiben, und das ist richtig.

      Aber es gibt zwei Probleme mit diesem Ansatz. Die erste ist, dass Sie statt 5 vielleicht 100 Schokoladentrüffel haben, oder vielleicht sogar 1000. Es ist ein schlechter Stil, ganz zu schweigen von ziemlich langweilig, ein Programm zu schreiben, das 1000 wiederholte Druckzeilen hat.

      Das zweite Problem ist, dass, wenn Sie diese Liste aus einer Datei oder als Eingabe eines Benutzers unseres Programms lesen, es keine Möglichkeit gibt, im Voraus zu wissen, wie viele Elemente diese Liste enthalten wird.

      Deshalb sind For-Schleifen unerlässlich. Sie ermöglichen es uns, eine Sequenz von Elementen zu durchlaufen und für jedes Element Code auszuführen, unabhängig davon, wie klein oder groß diese Sequenz ist. Als Programmierer müssen wir nicht darüber nachdenken. Wir müssen uns nur um den Teil kümmern, der in jeder Schleife wiederholt wird.

      So verwenden Sie For-Schleifen mit Gleichungen

      Lassen Sie uns das folgende Problem lösen.

      Jemand gibt Ihnen eine Liste mit Zahlen und bittet Sie, das Ergebnis der Multiplikation jedes Elements in dieser Liste auszudrucken. Wenn sie Ihnen die Liste mit den Nummern 1, 2, 3 geben, möchten sie, dass Sie 2, 4 und 6 drucken. Wie würden wir das machen?

      Nun, Sie wissen noch nicht, wie Sie Eingaben von Benutzern lesen sollen – darauf werde ich in einem der nächsten Artikel eingehen – aber nehmen wir an, Sie lesen diese Liste irgendwie und sagen wir, sie besteht aus den Zahlen 1, 2, 3, 4 , 5. Sie können also eine Variable namens input_nums kurz für Eingabezahlen definieren und sie auf die Liste [1,2,3,4,5] setzen.

      Als Nächstes schreiben Sie eine for-Schleife, die jedes Element in dieser Liste durchläuft und das Ergebnis der Multiplikation mit 2 ausgibt. Dazu schreiben Sie for num in input_nums:print(num*2). Auch hier nimmt diese num-Variable wiederum die Werte 1, dann 2, dann 3, dann 4 und schließlich 5 an.

      In jedem der Schritte der Schleife nehmen Sie diesen Wert, multiplizieren ihn mit 2 und drucken das Ergebnis. Wenn Sie diesen Code ausführen, sehen wir, dass die Ausgabe 2, 4, 6, 8, 10 ist, was tatsächlich das ist, was Sie wollten:

      # Let's create our list
      input_nums = [1,2,3,4,5]
      # and create our for loop
      for num in input_nums:
          print(num * 2)
      # Our output will be 2, 4, 6, 8, 10

      Hier ist ein noch interessanteres Problem. Geben Sie bei einer Liste mit Zahlen nur diejenigen aus, die ein Vielfaches von 5 sind. Beispielsweise ist 5 ein Vielfaches von 5, ebenso 10, 15, 20 usw.

      Bisher haben Sie hauptsächlich Code für Probleme geschrieben, die wir Menschen in unserem Kopf lösen können, aber dies beginnt, in den Bereich von Problemen einzudringen, die Sie zwar immer noch in Ihrem Kopf lösen können, aber nicht annähernd so schnell als Computer.

      Lassen Sie uns also Code schreiben, wie Sie dies lösen würden:

      Betrachten wir zunächst die Liste der Zahlen, die Sie überprüfen möchten, und nehmen wir an, dass die Liste input_nums =[1,2,3,5,12,15,17,20] ist. Sie beginnen damit, jedes Element in dieser Liste durchzugehen, also für num in input_nums:.

      Nun, was machst du als nächstes? Zuerst müssen Sie die Bedingung ausdrücken:wenn die Zahl ein Vielfaches von 5 ist. Das klingt definitiv wie eine if-Anweisung, aber wie drückt man eigentlich "Vielfaches von 5" aus?

      Erinnern Sie sich an den Modulo-Operator? Dasjenige, das als Prozentzeichen geschrieben wird. Dieser Operator gibt Ihnen den Rest einer Division. Eine Zahl ist ein Vielfaches von 5, wenn man beim Teilen durch 5 den Rest 0 erhält. Man kann das also schreiben als ob num % 5 ==0:. Dies besagt, wenn der Rest der Division des aktuellen Eintrags in der Liste durch 5 0 ist, dann drucken wir ihn aus:print(num).

      Lassen Sie uns diesen Code ausführen, und Sie erhalten 5, 15 und 20, die in der obigen Liste tatsächlich die einzigen Zahlen sind, die ein Vielfaches von 5 sind:

      # Let's define our list
      input_nums = [1,2,3,5,12,15,17,20]
      
      # Now let's create our for loop with our if statement
      for num in input_nums:
          if num % 5 == 0:
              print(num)
      # Our output is: 5, 15, 20

      So verwenden Sie For-Schleifen mit Zeichenfolgen

      Lassen Sie uns ein anderes Problem lösen.

      Geben Sie aus einer Liste mit Namen diejenigen aus, die mit dem Buchstaben a beginnen. Speichern wir diese Liste in einer Variablen, nennen wir sie Namen und setzen wir sie auf:names =['Andrea', 'Jim', 'Beyonce', 'Batman'].

      Völlig zufällig. Lassen Sie uns nun jeden Namen in dieser Liste durchgehen:for name in names:. Sie möchten nur die Namen drucken, die mit a beginnen. Vielleicht erinnern Sie sich, dass Sie bei Strings das erste Zeichen anhand seiner Indexposition erhalten können. Was Sie also tun möchten, ist, das Zeichen bei Index 0, das das erste Zeichen in der Zeichenfolge ist, mit 'A' zu vergleichen, und wenn sie gleich sind, möchten Sie den Namen drucken.

      Dazu schreiben Sie:if name[0] =='A':print(name). Wenn Sie diesen Code ausführen, erhalten Sie Andrea, was in dieser Liste tatsächlich der einzige Name ist, der mit einem „A“ beginnt:

      # Let's define our list
      names = ['Andrea', 'Jim', 'Beyonce', 'Batman']
      
      # Now let's write our code
      for name in names:
          if name[0] == 'A':
              print(name)
      # Our output is: Andrea

      Lassen Sie uns dieses Problem etwas interessanter machen.

      Nehmen wir an, wenn der Name nicht mit einem „A“ beginnt, möchten Sie nur den Buchstaben drucken, mit dem er beginnt. Das sollte ziemlich einfach sein. Sie nehmen die gesamte Logik, die Sie bisher haben, und fügen Ihrem if einen else-Zweig hinzu. Dieser Else-Zweig wird nur ausgeführt, wenn die Bedingung des If-Zweigs nicht wahr ist.

      Das heißt, es wird nur ausgeführt, wenn der Name nicht mit „A“ beginnt. In diesem Fall geben Sie also einfach (name[0]) aus, weil name[0] das erste Zeichen im aktuellen Namen ist.

      Lassen Sie uns das ausführen, und Sie erhalten den vollständigen Namen Andrea, weil er mit einem „A“ beginnt, und dann erhalten Sie J für Jim, B für Beyonce und B für Batman, weil Jim, Beyonce und Batman nicht mit einem beginnen 'A', also gibst du nur ihr erstes Zeichen aus.

      # We'll keep our list
      names = ['Andrea', 'Jim', 'Beyonce', 'Batman']
      
      # Now, we'll update our code
      for name in names: 
          if name[0] == 'A':
              print(name)
          else:
              print(name[0])
      # Our output is Andrea, J, B, B

      Sie sehen also, hier erhalten Sie mehr Leistung und können komplexere Programme schreiben. Ich denke, hier wird es Übungssache. Je mehr Code Sie schreiben, desto einfacher wird es für Sie, ein Problem zu nehmen, das in einfachem Englisch ausgedrückt ist, und herauszufinden, welche Bausteine ​​Sie benötigen, um es in Code auszudrücken. Diese Fähigkeit kommt nur mit Übung, je mehr Sie also programmieren, desto einfacher wird es.

      So verwenden Sie For-Schleifen mit laufenden Summen

      Lassen Sie uns weitere praktische Übungen mit for-Schleifen und Listen durchgehen.

      Angenommen, Sie haben einen Stapel Rechnungen zu bezahlen, und Sie möchten sie zusammenfassen, um herauszufinden, wie hoch unsere Gesamtrechnungen für den Monat sind. Nehmen wir der Einfachheit halber an, dass Sie bereits die Beträge haben, die Sie für jede Rechnung schulden, und diese in einer Listenvariablen speichern.

      Nennen wir diese bills_list und sagen, dass Sie 70 Dollar für Internet, 100 für unsere Telefonrechnung, 1000 für Miete haben – letzteres kann entweder ein wirklich gutes oder ein wirklich schlechtes Geschäft sein, je nachdem, in welcher Stadt wir uns befinden Natürlich - und sagen wir, Sie haben auch ungefähr 600 Dollar für Essen ausgegeben.

      Jetzt möchten Sie diese zusammenzählen, um herauszufinden, wie viel Sie für diese lebensnotwendigen Dinge schulden.

      Nehmen wir an, Sie speichern diese Summe in einer Variablen namens total und setzen diese Summe zunächst auf 0. Als Nächstes gehen Sie jede Rechnung in Ihrer Rechnungsliste durch und fügen diese Rechnung zu Ihrer laufenden Summe hinzu. Sie können also für bill in bills_list schreiben:total =die aktuelle Summe plus diese Rechnung, oder total + bill.

      Sobald also die gesamte for-Schleife beendet ist, sollte die Variable namens total die Summe aller Rechnungen in bills_list speichern. Sie können es drucken, also print(total), und wenn Sie diesen Code ausführen, erhalten Sie 1770. Das scheint ungefähr richtig zu sein:1000 + 100 + 600 + 70 ist tatsächlich 1770.

      # Let's define our list and our variable
      bills_total = [70, 100, 1000, 600]
      total = 0
      
      # and create our for loop
      for bill in bills_list:
          total = total + bill
      
      print(total)
      # Our output is: 1770

      Lassen Sie uns das noch einmal durchgehen und sicherstellen, dass alles Sinn macht. bills_list ist also nur die Liste der Rechnungen. Total ist die Variable, in der Sie den endgültigen Gesamtbetrag speichern. Sie setzen es auf 0, weil Sie es definieren und ihm zuerst einen Anfangswert geben müssen, bevor Sie es verwenden können. Das liegt daran, dass Sie in Python keine Variable verwenden können, bevor sie definiert ist. Sie setzen es auf 0, weil 0 für die Addition neutral ist. Sie können 0 zu jeder Zahl hinzufügen und das Ergebnis ändert sich nicht.

      Als nächstes sollte die for-Schleife hoffentlich ziemlich selbsterklärend sein:Sie iterieren einfach über jede der Rechnungen in bills_list und verwenden die Variable namens bill, um auf jede der Rechnungen in der Liste zu verweisen.

      Im ersten Schritt der Schleife wird dieser variablen Rechnung die Ganzzahl 70 zugewiesen, die unsere erste Rechnung ist.

      Als nächstes wird total, das derzeit 0 ist, zu 70 addiert, also ist total jetzt 70. Nach dem ersten Schritt in der for-Schleife ist total gleich 70.

      Im zweiten Schritt der Schleife wird bill der nächste Wert in der Liste bills zugewiesen, der 100 ist. Als nächstes wird total, das im vorherigen Schritt aktualisiert wurde, um den Wert 70 zu speichern, zu 100 addiert und Sie erhalten 170. Dies Der neue Wert wird dann der Gesamtsumme wieder zugewiesen. Nach dem zweiten Schritt beträgt der von Ihnen gespeicherte Gesamtwert nun 170.

      Im dritten Schritt der Schleife wird der Variable bill der nächste Wert in der Liste bills zugewiesen, der 1000 ist. Als nächstes wird total, der im vorherigen Schritt aktualisiert wurde, um den Wert 170 zu speichern, zu dieser neuen Rechnung hinzugefügt, which ist 1000, und Sie erhalten 1170. Dieser neue Wert wird dann wieder der Summe zugewiesen. Nach der dritten Ausführung der Schleife ist der gespeicherte Wert also insgesamt 1170.

      Schließlich wird im vierten Schritt der Schleife der Variable bill der letzte Wert in der Liste bills zugewiesen, der 600 ist. Als nächstes wird die Summe, die an diesem Punkt 1170 ist, zu dieser Rechnung addiert, die 600 ist, und Sie erhalten Sie 1770. Dieser neue Wert wird dann der Summe wieder zugewiesen. Nach der vierten Ausführung der Schleife speichern wir also insgesamt 1770.

      An diesem Punkt endet die Schleife, was ein anderer Begriff ist, den Sie verwenden, um zu sagen, dass die Schleife endet. Die nächste Zeile in Ihrem Programm gibt den aktuellen und endgültigen Gesamtwert aus, der 1770 ist.

      Ich möchte noch einmal betonen, wie wichtig die Einrückung ist. Da die print-Funktion nicht eingerückt ist, wird sie nicht als Teil der for-Schleife angesehen und wird daher nicht bei jedem Schritt der Schleife ausgeführt. Stattdessen wird es nur einmal ausgeführt, wenn die Schleife endet.

      Vergleichen Sie das damit. In diesem Fall hat print den gleichen Einzug wie total =total + bill. Was wird also passieren? Der Wert, den wir insgesamt speichern, wird aktualisiert, wie ich bereits erwähnt habe, aber zusätzlich wird diese print-Anweisung bei jedem Schritt der Schleife ausgeführt. Wenn Sie diesen Code ausführen, erhalten Sie 70, 170, 1170 und 1770. Das liegt daran, dass Sie jedes Mal, wenn Sie den insgesamt gespeicherten Wert aktualisieren, ihn auch drucken. Diese Werte stimmen mit denen überein, die Sie zuvor abgeleitet haben.

      # Let's define our list and our variable
      bills_total = [70, 100, 1000, 600]
      total = 0
      
      # and create our for loop
      for bill in bills_list:
          total = total + bill
      # but this time, let's indent our print function
          print(total)
      # Our output is 70, 170, 1170, 1770

      In Ihren Programmen werden Sie häufig beide Strategien anwenden. Manchmal möchten Sie die laufende Summe drucken, wenn sie erhöht wird. Manchmal möchten Sie am Ende einfach die Summe ausdrucken, wenn alles zusammengezählt wurde. Zwei ziemlich unterschiedliche Ergebnisse, die durch eine einfache Einrückung getrennt sind. Achte also auf diese Leerzeichen.

      Als Nächstes gehe ich auf das Konzept einer verschachtelten for-Schleife ein, also einer Schleife innerhalb einer Schleife.

      So verwenden Sie For-Schleifen in verschachtelten Schleifen

      Bei dieser Gelegenheit werden Sie auch über andere Arten von iterierbaren Objekten iterieren. Sie haben zum Beispiel erwähnt, dass Strings auch iterierbar sind, weil sie nichts anderes als Folgen von Zeichen sind. Nehmen wir also eine Zeichenfolge, sagen wir name ='James Bond'. Angenommen, Sie möchten jeden Buchstaben des Namens dreimal drucken. Wie machen wir das? Nun, wann immer Sie Wörter wie „jeder“ hören, wissen Sie, dass eine Schleife benötigt wird.

      Sie beginnen also mit dem Buchstaben im Namen:. Diese Variable mit dem Namen Buchstabe wird wiederum jedem der Zeichen in der Zeichenfolge „James Bond“ zugewiesen.

      Wie druckt man einen Brief dreimal? Vielleicht erinnerst du dich, dass ich erwähnt habe, als ich über Strings gesprochen habe, dass wir den Operator (*) verwenden können, denselben Operator, der für die Multiplikation von Zahlen verwendet wird. Da die Variable letter in diesem Fall eine Zeichenfolge speichert, führt sie keine Zahlenmultiplikation durch, aber Sie können sie verwenden, um die Buchstabenfolge so oft zu drucken, wie Sie möchten. Also schreibst du hier einfach print(letter * 3).

      Und wenn Sie dies ausführen, erhalten Sie das gewünschte Ergebnis. Sie können hier 3 durch 5 ersetzen, und jetzt sehen Sie jeden Buchstaben 5 Mal gedruckt. Beachten Sie, dass sogar das Leerzeichen fünfmal gedruckt wird, aber da es sich um ein Leerzeichen handelt, können Sie es nicht sehen. Es ist aber da, vertrau mir.

      # Let's create our string
      name = 'James Bond'
      
      # and our for loop
      for letter in name:
          print(letter * 3)
      # Our output is JJJ, aaa, mmm, eee,
      #sss,    , BBB, ooo, nnn, ddd

      Hier ist ein interessanteres Problem. Was ist, wenn Sie anstelle eines einzelnen Namens eine Liste mit Namen haben und wiederum jeden Buchstaben von JEDEM Namen dreimal drucken möchten?

      Das ist ein bisschen kniffliger, aber ertrage es mit mir. Beginnen wir mit dem Code, den Sie zuvor hatten.

      Zuerst definieren wir anstelle von name eine Variable namens names_list und setzen sie auf die Liste ['James', 'Batman', 'Marie']. Wenn Sie jetzt zur for-Schleife gehen und name durch names_list ersetzen und sie erneut ausführen, erhalten Sie JamesJamesJames, gefolgt von BatmanBatmanBatman, gefolgt von MarieMarieMarie.

      # Let's  try adjusting our string
      names_list = ['James', 'Batman', 'Marie']
      # and adjust our for loop
      for letter in names_list:
          print(letter * 3)
      # Our output is JamesJamesJames, 
      #BatmanBatmanBatman, MarieMarieMarie

      So not quite what you want. Remember, you want each letter printed 3 times for each of these names, not the names themselves printed three times. So, how do you do that?

      Here's a silly way of doing it. You can just copy-paste the loop you had before and, instead of name, replace it in each instance with each of the names. So you end up having three loops that pretty much look the same, except that in each case you're iterating through a different name.

      For instance, this works:each letter in the name James is printed 3 times, and underneath each letter in the name Batman gets printed 3 times, and finally, each letter in the name Marie gets printed 3 times.

      What's the problem with it though?

      # Let's use our same list
      names_list = ['James', 'Batman', 'Marie']
      
      #and create the 3 for loops
      for letter in 'James':
          print(letter * 3)
      
      for letter in 'Batman':
          print(letter * 3)
      
      for letter in 'Marie':
          print(letter * 3)
      # Our output will be a long list: JJJ, aaa, mmm, eee, sss,
      # BBB, aaa, ttt, mmm, aaa, nnn, MMM, aaa, rrr, iii, eee

      Perhaps you're thinking I'm too lazy and I don't want to type that much, and that's actually a good instinct. When you program, in most cases, it pays off to write as little code as you can get away with. Less code written means less code that needs to be read, less code that needs to be updated, fewer opportunities for typos or other bugs. Besides, what if we had a list of 100 names instead of 3? I'm definitely not typing that.

      So what's a different way to get this result? Well, look at these three for loops. What you're doing here is basically the same thing three times. You're just doing that thing to a different item. Doesn't that look like - a loop? If that was your guess, you are correct. Every time you repeat very similar steps like these, you can wrap what you're doing in a loop.

      So you can solve this problem with a loop nested inside another loop .

      In the outer loop, you go over each of the names in our names_list and assign it, in turn, to a name variable. Then, inside that loop, you have another loop that goes over each letter in the name and prints it 3 times. So let's write that and see what it looks like.

      Let's delete these for loops and write for name in name_list:print(name). If you run this, you see that you print each name, as you'd expect. Now, instead of print(name), let's copy the loop you had before, so you replace it with for letter in name:print(letter * 3). Notice that the second for is indented 4 spaces, or 1 tab character, just like the print statement before.

      Also, the print statement inside the second for loop is indented 4 spaces or 1 tab relative to the second for keyword.

      # Let's keep our list 
      names_list = ['James',  'Batman', 'Marie']
      # and adjust our for loop
      for name in names_list:
          for letter in name:
              print(letter * 3)
      # Now, our output is JJJ, aaa, mmm, eee, sss,
      # BBB, aaa, ttt, mmm, aaa, nnn, MMM, aaa, rrr, iii, eee

      Das ist verrückt! You have a loop inside a loop. This whole second loop gets executed for EACH name in the names list. If you run this, you'll get what you want:each letter in the name James is printed 3 times, and underneath, each letter in the name Batman gets printed 3 times and finally, each letter in the name Marie gets printed 3 times.

      You will often need to use these nested loops, so I wanted to show you an example of how you can use them. You can nest as many loops as you need, but I've rarely seen them nested more than 3 or 4 times because beyond that level of nesting, it becomes very hard to reason through them. However, this single nesting is very common, so definitely spend some time and make sure you understand it fully.

      How to Use Nested For Loops with Nested Lists

      Here's another very common use for nested loops. Let's say we have a list called nums_list, short for numbers list, and it consists of three nested list. Each one of those nested lists has numbers inside it:nums_list =[[1,2,3], [4,5,6], [7,8,9]]. We can certainly do this because lists are very flexible and can hold other lists inside them. The tricky question is, how do you print each of the numbers you have here, on a separate line?

      Perhaps your first approach is to write something like for list_item in num_lists:print(list_item). However, if you run this, you see that the output is not what you want it to be. Why is that?

      # Let's set our list
      nums_list = [[1,2,3], [4,5,6], [7,8,9]]
      # and create our for loop
      for list_item in nums_list:
          print(list_item)
      # Our output is [1, 2, 3], [4, 5, 6], [7, 8, 9]

      Well, the code does indeed do what you tell it to do. It goes over each item in the list and prints it out. But each of those items is itself a list, not a number. That's because nums_list has only 3 items:the list [1,2,3] is the first item, followed by a comma, followed by the list [4,5,6], which is the second item, followed by another comma and, finally, followed by the list [7,8,9], which is the third item.

      Python looks at our code and says, ah, you want me to print the items in your nums_list, here they are. It's these three lists. And this can be a bit tricky perhaps to see at first:Python only looks at the top level when iterating through an object, it does not iterate INSIDE the nested objects by default.

      But how do you get to the numbers inside the nested lists? It looks like for each one of those nested lists, you further need to iterate and print their own items. So you can change that code and write for list_item in nums_list:for num in list_item:print(num). Notice again the indentation. The second loop is inside the first loop, so you need the tab there (or 4 spaces if you don't like tab). If you run this code, you get what we want.

      How does that work though?

      # We'll keep the same list
      nums_list = [[1,2,3], [4,5,6], [7,8,9]]
      # and use our nested for loop
      for list_item in nums_list:
          for num in list_item:
              print(num)
      # Our output here is 1, 2, 3, 4, 5, 6, 7, 8, 9

      Well, you saw earlier that the variable list_item in turn gets assigned to the list [1,2,3], then the list [4,5,6], and finally the list [7,8,9] in the outer loop. Now, in the inner loop, you iterate over each one of these items and you print each of THEIR elements. So the outer loop begins by assigning the variable item_list to be the list [1,2,3], which is the first item in our nums_list. Then you execute the inner loop, and if you iterate over that, you'll get the integer 1, then the integer 2, then the integer 3, because those are the elements that are in it.

      Then, the inner loop ends and you're back in the outer loop. Now, item_list gets assigned the next value, which is the list [4,5,6] and then you again enter the inner loop and you iterate over each of the elements in [4,5,6]. When you print each of them, you get the integer 4, then the integer 5 and then the integer 6. And then the inner loop again ends and you're back in the outer loop. At this point, the outer loop assigns item_list to be the list [7,8,9], which is the last item in our nums_list. Finally, you enter the inner loop for the third time, and you iterate through the list [7,8,9] and print each item to finally get the integers 7, 8, and 9.

      Play with these for a while. They might seem a bit difficult at times, and perhaps they remind you a bit of the movie Inception. It's indeed a bit like that. A loop inside a loop. As I said, it can get a bit more complex, and you can have a loop inside a loop inside a loop. I won't go over those examples right now, but the idea is exactly the same.

      Now, I'll look at how you can use for loops with two other Python iterables. Namely, tuples and dictionaries.

      How to Use For Loops with Tuples

      Let's talk about tuples. I won't go into as much detail with tuples, because everything that I talked about when I discussed lists or strings also applies to tuples. Let's just write an example.

      Let's say I have a tuple called coins_list =(1,5,10,25). So that's a tuple that stores the coin values that are in wide circulation in the United States. Let's quickly iterate through that list and, to make it more interesting, let's print out how many of each kind of coin you need to get to 1 dollar. So you can write for coin in coins_list:print(100/coin) print(coin). That works because 1 dollar is 100 cents, so, for example, if you want to know how many 5-cent coins you need to make a dollar, you just divide 100 by 5 and you'd get 20.

      So, if you run this code, you see that we need 100 1-cent coins to make a dollar, 20 5-cent coins, 10 10-cent coins, and finally, only 4 25-cent coins.

      # Let's create our tuple
      coins_list = (1, 5, 10, 25)
      
      # Now let's create our for loop
      for coin in coins_list:
          print(100/coin)
          print(coin)
      # Our output is: 100.0, 1, 20.0, 5, 10.0, 10, 4.0, 25

      How to Use For Loops with Dictionaries

      Finally, let's iterate over some dictionaries also.

      Let's say you have a dictionary that gives us fruit prices:market_prices ={'apples':2.99, 'oranges':3.99, 'avocados':4.99}. Now, you can write:for item in market_prices:print(item). If you run this code, you get apples, oranges, and avocados.

      Warum ist das so? That's because, by default, when it comes to dictionaries, Python iterates through the list of keys, not through the list of pairs. It can be a bit confusing, but that's just how it works. If you want to iterate through the list of pairs, you need to change the loop to be for item in market_prices.items():print(item). When you run this, you get the pairs indeed.

      # Let's create our dictionary
      market_prices = {'apples': 2.99, 'oranges': 3,99, 'avocados': 4.99}
      # and create a for loop
      for item in market_prices:
          print(item)
      # Our output is apples, oranges, avocados
      
      # Let's adjust our for loop
      for item in market_prices.items():
          print(item)
      # Now our output is: ('apples, 2.99), ('oranges', 3.99), ('avocados', 4.99)

      You can also iterate through the list of values by changing the code to be for item in market_prices.values():print(item).

      You learned about these functions item() and values() in earlier articles where I reviewed the dictionary data type.

      # Let's keep our dictionary
      market_prices = {'apples': 2.99, 'oranges': 3.99, 'avocados': 4.99}
      
      # and adjust our loop to show the values
      for item in market_prices.values(): 
          print(item)
      # Now our output is 2.99, 3.99, 4.99

      I want to show you one more thing.

      You might think that it's a bit silly that, by default, iterating through Python dictionaries iterates through the keys, but it actually makes sense. Remember that, in a dictionary, you access values using their keys. So, let's go back to the first loop you wrote here, for item in market_prices:print(item). You run that again, and you see that it prints the keys.

      Well, how can you access the values that correspond to each of the key? Einfach. Instead of print(item) here, you can write print(market_prices[item]). If you run this, you see that you actually get the values. This works because in each step of the loop, this variable named item is assigned to some key in the dictionary, and, below, you use market_prices[item] to access the value that corresponds to that key.

      # Our dictionary
      market_prices = {'apples': 2.99, 'oranges': 3.99, 'avocados': 4.99}
      # and our for loop that shows the keys
      for item in market_prices:
          print(item)
      # This returns apples, oranges, avocados
      
      # Another way to see our values
      for item in market_prices:
          print(market_prices[item])
      # This will return 2.99, 3.99, 4.99

      Remember, you need to be careful with dictionaries. Because they are unsorted sequences, the order in which you get the keys is not guaranteed. But you'll definitely get all of them.

      While you can use for loops with just about every type of iterable in Python, they are most commonly used with lists, and particularly with lists of numbers. Now, let’s explore a more convenient way to generate a list of numbers:the range function.

      How to Use For Loops and the Range Function

      You'll talk more about functions in a bit, so I won't go into too much detail about what a function is just now. Instead, I just want to show you how you can use range with loops. Primarily, let's consider this use case:

      I want to write the text 'hello' 5 times. How do I do this? Well, as you've seen before, you could just write print('hello') five times, but that would be silly because you actually know how to use loops. So instead, you can write this:for i in [0,1,2,3,4]:print('hello').

      And this works. If I run it, I see the word 'hello' printed 5 times. I started counting at 0 here, but there are 5 elements in that list and the word 'hello' is printed for each of them, so it's printed 5 times.

      # Let's create our for loop
      for i in [0,1,2,3,4]:
          print('hello')
      # Our output is hello, hello, hello, hello, hello

      Ok, but what if I now have to print the word 'hello' 10 times, or 100 times? I guess I could just write all the numbers from 0 to 9, or to 99, but there has to be a better way to do that. And indeed there is.

      You can just use the range function like so:for i in range(9):print('hello'). If you run this, you see that the word 'hello' was printed 9 times. Wie funktioniert das? Well, the range function returns a list of numbers - in our case, it generates 9 numbers, starting at 0 and ending at 8. You can also replace our earlier code with:for i in range(5):print('hello'). And if you run it again, you see the word 'hello' printed 5 times. There are more advanced uses of the range function too, but for now, remember that you can just use it like this, to repeat an action a number of times.

      # Let's use the range function
      for i in range(9):
          print('hello')
      # Our output here is hello, hello, hello, hello,
      #hello, hello, hello, hello, hello
      
      # Let's try it again
      for i in range(5):
          print('hello')
      # And now we get hello, hello, hello, hello, hello

      This concludes our foray into Python for loops. It's quite a bit of material if you're new to it, so take your time, re-read these segments if you need to, and practice, practice, practice, to get comfortable with loops. Now that you know if statements and for loops, and you covered the main data types in Python, you can write programs that solve much more complex problems, as you've seen.