|
1 | 1 | # Level 2 |
2 | 2 |
|
3 | | -## Der Programmfluss |
4 | | -Bisher hat unser Programm einen Schritt nach den anderen ausgeführt. Man kann also sagen, |
5 | | -dass unsere Programme sehr linear aufgebaut waren. Damit waren die bisherigen Programme sehr primitiv, |
6 | | -da sie noch nicht auf verschiedene Eingaben mit verschiedenen Aktionen |
7 | | -reagieren konnten. Um dies zu ändern gibt es in den meisten Programmiersprachen sogenannte |
8 | | -Kontrollstrukturen. Diese dienen einerseits dazu, dem Benutzer das Programmieren zu erleichtern, |
9 | | -andererseits ermöglichen diese Kontrollstrukturen aber auch erst die Formulierung komplexer |
10 | | -Programme, denn sie es ermöglichen den Programmablauf nonlinear zu gestalten. |
| 3 | +In Level 1 hast du gelernt Konsoleneingaben vom Benutzer entgegen zu nehmen und, diese EIngaben zu verarbeiten und die Ergebnisse dieser Verarbeitung in der Konsole auszugeben. |
11 | 4 |
|
12 | | -## Boolean |
13 | | -Der Boolean-Typ ist ein Datentyp, der einen Wahrheitswert enthält. Er kann entweder `True` |
14 | | -oder `False` sein. |
| 5 | +In Level 2 wirst die `if`-Bedingung kennenlernen, die es dir ermöglicht Bedingungen zu prüfen, die erfüllt sein müssen, damit ein Codeabschnitt ausgeführt werden kann. |
| 6 | +Desweiteren wirst du die `while`-Schleife kennenlernen, welche einen Codeabschnitt wiederholt ausführt, solange eine Bedingung erfüllt ist. |
| 7 | +Im Zusammenhang mit der `if`-Bedingung und der `while`-Schleife wirst du den Datentypen `boolean` kennenlernen. Dieser Datentyp beinhaltet Wahrheitswerte. |
| 8 | +Am Ende des Levels wirst bereits in der Lage sein komplexere Programme umzusetzen. |
15 | 9 |
|
16 | | - >>> a = True |
17 | | - >>> b = False |
18 | | - >>> print(a, b) |
19 | | - (True, False) |
| 10 | +Um mit diesem Level zu starten navigiere zur [Level2.ipynb](https://github.com/pythonfoo/pythonfooLite/blob/master/Level_02/Level_2.ipynb) Datei im Code Repository. |
20 | 11 |
|
21 | | -Die aus der Mathematik bekannten Vergleichsoperatoren geben Booleanwerte zurück: |
| 12 | +## Aufgaben |
22 | 13 |
|
23 | | - >>> print(5 > 6) |
24 | | - False |
25 | | - >>> print(3 == 4) # WIchtig "==" entspricht dem mathematischen Operator "=" |
26 | | - False |
27 | | - >>> print (not True) |
28 | | - False |
29 | | - >>> print (True != False) # a != b entspricht not(a == b) |
30 | | - True |
| 14 | +Die folgenden Aufgaben sollen dir helfen, die in diesem Level erlangten Kenntnisse unter die Probe zu stellen. Wie immer kannst du dich bei Fragen oder Problemen gerne an uns wenden. |
31 | 15 |
|
32 | | -Die Vergleichsoperatoren "==", "!=", "<", ">", sowie die Kombinationen "<=" und ">=" heißen |
33 | | -binäre Operatoren, da sie zwei Elemente bearbeiten. Das `not` ist, ähnlich zu dem `-` in der |
34 | | -Mathematik ein unärer Operator, da es nur ein Element benötigt. |
35 | | -Mit dem Befehl `bool()`kann man Werte in einen Boolean umwandeln lassen, dabei ist zu |
36 | | -beachten, dass dies nur in Ausnahmefällen sinnvoll ist. |
| 16 | +### 2.1 password.py |
37 | 17 |
|
38 | | - >>> print(bool(0)) |
39 | | - False |
40 | | - >>> print(bool("")) |
41 | | - False |
42 | | - >>> print(bool(1)) |
43 | | - True |
44 | | - >>> print(bool("a")) |
45 | | - False |
| 18 | +* Schreibe ein Programm, das ein Passwort entgegennimmt, es mit einem intern |
| 19 | + gespeicherten Passwort vergleicht und eine Begrüßungsnachricht ausgibt, falls das |
| 20 | + Passwort richtig war. |
| 21 | +* Ändere dein Programm so ab, dass der Benutzer auch eine Nachricht bekommt, wenn |
| 22 | + das Passwort falsch war. |
| 23 | +* Ändere dein Programm so ab, dass der Benutzer 3 Versuche hat, das Passwort richtig |
| 24 | + einzugeben. |
46 | 25 |
|
47 | | -So ist ein String immer als Boolean True, solange er nicht leer ist und ein Integer immer True, |
48 | | -solange er nicht `0` ist. |
| 26 | +### 2.2 diamond.py |
49 | 27 |
|
50 | | -## Die if-Bedingung |
51 | | -Man stelle sich eine Passwortabfrage vor: Das Programm soll nur weiterlaufen, wenn |
52 | | -der Benutzer ein richtiges Passwort eingegeben hat. Dies war uns bisher nicht möglich, da wir |
53 | | -noch keine Möglichkeit hatten zwei Werte miteinander zu vergleichen. Die if-Abfrage ist eine |
54 | | -Kontrollstruktur, die einen boolschen Ausdruck entgegen nimmt und einen Block Code nur |
55 | | -ausführt, wenn der boolsche Ausdruck `True` ist. |
| 28 | +* Schreibe ein Programm, das die unten abgebildete ASCII-Art im Terminal darstellt. |
| 29 | +* Ändere dein Programm so ab, dass die maximale Breite der Raute vom Benutzer angegeben werden kann. |
| 30 | +* Ändere dein Programm so ab, dass das Zeichen, aus dem die Raute gebildet wird, vom Benutzer eingegeben werden kann. |
56 | 31 |
|
57 | | - >>> x = int(input("'Geben Sie eine Zahl ein: '")) |
58 | | - >>> if x == 3: |
59 | | - >>> print(3) |
60 | | - 'Geben Sie eine Zahl ein:' 3 |
61 | | - 3 |
| 32 | +``` |
| 33 | + # |
| 34 | + ### |
| 35 | + ##### |
| 36 | + ### |
| 37 | + # |
| 38 | +``` |
62 | 39 |
|
63 | | -Allein mit einer if-Bedingung ist schon vieles möglich, allerdings möchte der Programmierer |
64 | | -manchmal mehrere Fälle voneinander unterscheiden und verschieden darauf reagieren. |
65 | | -Dafür gibt es das Schlüsselwort `else`, das immer am Ende einer if-Bedingung steht und nur |
66 | | -dann ausgeführt wird, wenn alle vorherigen Abfragen gescheitert sind. |
| 40 | +Nach erfolgreicher Bearbeitung der Aufgabe sollte das Programm wie folgt ablaufen: |
67 | 41 |
|
68 | | - >>> password = input("Bitte das Passwort eingeben: ") |
69 | | - >>> if password == "Geheim": |
70 | | - >>> print("Willkommen") |
71 | | - >>> else: |
72 | | - >>> print("Zutritt verweigert") |
73 | | - |
74 | | -Zu beachten sind bei der if-Bedingung und allgemein auch bei anderen Kontrollstrukturen die |
75 | | -Einrückung und die Syntax. Die Definition einer if-Bedingung ist allgemein ausgedrückt: |
76 | | - |
77 | | - if boolscher Ausdruck : |
78 | | - Anweisungen |
79 | | - else: |
80 | | - Anweisungen |
81 | | - |
82 | | -Bei der Tiefe der Einrückung liegt eine häufige Fehlerquelle, deshalb hat man sich auf 4 |
83 | | -Leerzeichen oder einen Tab derselben Länge geeinigt. PEP8, ein Styleguide für die |
84 | | -Programmierung mit Python, legt 4 Leerzeichen als Einrückungstiefe fest. Egal wie viele |
85 | | -Leerzeichen oder Tabs du benutzt, ist es wichtig im gesamten Programm oder noch besser |
86 | | -in allen deinen Programmen einheitlich zu bleiben, da dies Fehler vermeidet. |
87 | | -Viele Texteditoren bieten zudem an, Tabs in Leerzeichen umzuwandeln, was den Vorteil hat, |
88 | | -dass man sich Schreibarbeit spart aber trotzdem PEP8 kompatibel bleibt. Zu PEP8 kommen |
89 | | -wir in späteren Leveln nochmal. |
90 | | - |
91 | | -Zu zu `if` und `else`gibt es noch die Verknüpfung von |
92 | | -beiden, nämlich `elif`, was für `else if ` steht. |
93 | | - |
94 | | - if Bedingung1 : |
95 | | - Anweisungen1 |
96 | | - elif Bedingung2 : |
97 | | - Anweisungen2 |
98 | | - else: |
99 | | - Anweisungen |
100 | | - |
101 | | -Eine if-Bedingung kann beliebig viele `elif`Blöcke haben, aber jeweils nur ein `if`und nur ein |
102 | | -`else`. `if`, `elif` und `else` sind Schlüsselwörter, was bedeutet, dass sie für if-Abfragen |
103 | | -reserviert sind, weshalb keine Variable if, elif oder else heißen kann. |
| 42 | +* Der Benutzer gibt eine maximale Breite an Zeichen ein. |
| 43 | +* Der Benutzer gibt ein Zeichen ein. |
| 44 | +* Das Programm erstellt eine Raute entsprechend der maximalen Breite mit dem angegebenen Zeichen und gibt diese Raute aus. |
0 commit comments