Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:sbt:informatik-glf2-23:pythonwhilefor [2023/10/28 12:42] – created Karlheinz Schubert | lehrkraefte:sbt:informatik-glf2-23:pythonwhilefor [2023/12/10 22:57] (current) – Karlheinz Schubert | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Schleifenkonstruktionen und logische Ausdrücke ====== | ||
| + | |||
| + | Source: [[https:// | ||
| + | --- // | ||
| + | |||
| + | ===== Die while Schleife ===== | ||
| + | |||
| + | Mit **Schleifen** kann man Programmteile (beliebig oft) wiederholen. | ||
| + | |||
| + | Wir könnten zum Beispiel einen Linienblatt ausgeben, indem wir 30 mal '' | ||
| + | |||
| + | Besser ist aber eine Schleife zu verwenden. Dafür benötigen wir eine Hilfsvariable die wir hoch zählen (inkrementieren) werden. Diese Variable nennen wir '' | ||
| + | |||
| + | <code python> | ||
| + | AnzahlLinien = 30 | ||
| + | ZeilenNr = 0 | ||
| + | while ZeilenNr < AnzahlLinien: | ||
| + | ZeilenNr += 1 | ||
| + | print(' | ||
| + | </ | ||
| + | |||
| + | Nachdem wir die Variablen definiert und gesetzt haben, benutzen wir das **KeyWord** '' | ||
| + | |||
| + | Wir fragen, ob '' | ||
| + | |||
| + | Im **Block** selbst geben wir unsere Zeile '' | ||
| + | |||
| + | ===== Die for Schleife und die range() Funktion ===== | ||
| + | |||
| + | Wollen wir eine Aktion n-mal wiederholen, | ||
| + | |||
| + | Also anstatt unserer Hilfsvariable '' | ||
| + | |||
| + | <code python> | ||
| + | for ZeilenNr in range(30): | ||
| + | print(' | ||
| + | </ | ||
| + | |||
| + | Achtung die '' | ||
| + | |||
| + | ===== Sprünge in Schleifen: break und continue ===== | ||
| + | |||
| + | Es kann vorkommen das wir aus einer **Schleife** springen wollen und diese abrechen. Dafür verwenden wir das **break** statement. | ||
| + | |||
| + | <code python> | ||
| + | for iIndex in range(10): | ||
| + | if Index == 5: | ||
| + | break | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | In diesem Beispiel wird nur 5 mal, statt 10 mal “Hallo Welt” ausgegeben. Da sobald '' | ||
| + | |||
| + | <code python> | ||
| + | for Index in range(10): | ||
| + | print(Index) | ||
| + | if Index % 2 == 0: | ||
| + | continue | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | In diesem Beispiel geben wir die Zahlen von 0 bis 9 aus. Sollte i nicht ganzzahlig durch 2 geteilt werden können, geben wir “Hallo Welt” aus. Wenn i durch 2 glatt teilbar ist springen wir wieder zum Anfang der **Schleife** und überspringen somit das Ausgeben von “Hallo Welt”. | ||
| + | |||
| + | ===== Der Modulo Operator % ===== | ||
| + | |||
| + | Das '' | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Der Datentyp boolean ===== | ||
| + | |||
| + | Sowohl bei den '' | ||
| + | |||
| + | <code python> | ||
| + | print(42==42) | ||
| + | </ | ||
| + | |||
| + | So gibt dieses '' | ||
| + | |||
| + | Die beiden boolschen Werte '' | ||
| + | |||
| + | <code python> | ||
| + | Variable1 = False | ||
| + | Vairable2 = True | ||
| + | </ | ||
| + | |||
| + | Ein boolscher Wert aber auch aus anderen Datentypen durch s.g. **casten** erzeugt werden: | ||
| + | |||
| + | <code python> | ||
| + | bool(0) | ||
| + | bool(1) | ||
| + | bool(2) | ||
| + | bool(" | ||
| + | bool("" | ||
| + | bool(1==2) | ||
| + | bool(1==1) | ||
| + | bool(1< | ||
| + | </ | ||
| + | |||
| + | Dieses **casten** erfolgt in **Schleifen** und **if** Abfragen oft implizit. Daher können wir eine endlos Schleife so schreiben: | ||
| + | |||
| + | <code python> | ||
| + | while 1: | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Diese Schleife läuft unendlich lange, da '' | ||
| + | |||
| + | Im Terminal (Unix) bzw. im Command Fenster (Windows) kann man eine solche Endlosschleife mit '' | ||
| + | |||
| + | ==== Boolsche Werte umkehren ==== | ||
| + | |||
| + | Wenn wir überprüfen wollen ob etwas nicht der Fall ist können wir den **boolean** auch invertieren. Das machen wir indem wir ein '' | ||
| + | |||
| + | <code python> | ||
| + | b = False | ||
| + | |||
| + | if not b: | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Das funktioniert natürlich auch mit den bereits bekannten Vergleichen. | ||
| + | |||
| + | <code python> | ||
| + | Zahl = 42 | ||
| + | |||
| + | if not Zahl == 43: | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | ==== Und und Oder ==== | ||
| + | |||
| + | Es kommt durchaus mal vor das wir mehrere Bedingungen zusammen hängen wollen. Zum Beispiel das wir prüfen wollen ob die Zahl in einem gewissen Bereich ist. | ||
| + | |||
| + | <code python> | ||
| + | for Index in range(100): | ||
| + | if Index > 50 and Index < 60: | ||
| + | print(Index) | ||
| + | </ | ||
| + | |||
| + | Die **Schleife** selbst ist relativ trivial, sie zählt von '' | ||
| + | |||
| + | Das Gleiche gibt es auch noch mit oder hier ist das **Keyword** '' | ||
| + | |||
| + | <code python> | ||
| + | Zahl = 1 | ||
| + | if Zahl == 1 or Zahl == 42: | ||
| + | print(" | ||
| + | |||
| + | Zahl = 42 | ||
| + | if Zahl == 1 or Zahli == 42: | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | In beiden Fällen haben wir die gleiche Abfrage und beide sind **Wahr** ('' | ||
| + | |||
| + | ==== Boolean und Vergleichsperatoren ==== | ||
| + | |||
| + | Verschiedene Operatoren die einen **booleschen** Wert zurückgeben: | ||
| + | |||
| + | <code python> | ||
| + | print(True == True) # True | ||
| + | print(not True == True) # False | ||
| + | print(True == True and True == False) # False | ||
| + | print(True == True or True == False) | ||
| + | print(42 > 1) # True | ||
| + | print(42 < 1) # False | ||
| + | print(42 >= 1) # True | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | ===== Beispiel Python Taschenrechner ===== | ||
| + | |||
| + | Jetzt kann man mit '' | ||
| + | |||
| + | <code python> | ||
| + | print(" | ||
| + | |||
| + | while True: | ||
| + | Operator = input(' | ||
| + | Zahl1 = float(input(' | ||
| + | Zahl2 = float(input(' | ||
| + | Ergebnis = '' | ||
| + | | ||
| + | if Operator == ' | ||
| + | Ergebnis = Zahl1 + Zahl2 | ||
| + | elif Operator == ' | ||
| + | Ergebnis = Zahl1 - Zahl2 | ||
| + | elif Operator == '/': | ||
| + | Ergebnis = Zahl1 / Zahl2 | ||
| + | elif Operator == ' | ||
| + | Ergebnis = Zahl1 * Zahl2 | ||
| + | elif Operator == ' | ||
| + | break | ||
| + | else: | ||
| + | print(" | ||
| + | |||
| + | print(f' | ||
| + | | ||
| + | print(' | ||
| + | </ | ||
| + | |||
| + | Wir fügen eine **nochmal** Variabel hinzu und geben ihr den Wert '' | ||