Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:python_zusammenfassung [2023-09-25 06:01] – hof | gf_informatik:python_zusammenfassung [2023-09-25 07:14] (aktuell) – [Operationen mit Zahlen] hof | ||
|---|---|---|---|
| Zeile 4: | Zeile 4: | ||
| ## The Big Six | ## The Big Six | ||
| - | |||
| ### Variablen | ### Variablen | ||
| + | In **Variablen** werden Werte gespeichert, | ||
| + | |||
| + | Variablen kannst du ganz einfach deklarieren: | ||
| + | |||
| + | Variablen haben jeweils einen **Typ**: | ||
| + | |||
| + | * **Zahlen**: Mit Zahlen kann man rechnen. | ||
| + | * Ein Text wird in der Informatik als **String** bezeichnet. In Python müssen Strings immer in Anführungs- und Schlusszeichen geschrieben werden. Zahlen sind keine Strings und benötigen deshalb keine Anführungs- und Schlusszeichen. Natürlich kann man mit Strings nicht rechnen. | ||
| + | |||
| + | **Beispiele: | ||
| + | |||
| + | <code python> | ||
| + | x = 7 # Zahl | ||
| + | |||
| + | a = " | ||
| + | </ | ||
| + | #### Operationen mit Zahlen | ||
| + | Betrachte als Beispiel den folgenden Code: | ||
| + | |||
| + | <code python> | ||
| + | x = 7 | ||
| + | |||
| + | y = x*x | ||
| + | |||
| + | print(y) | ||
| + | </ | ||
| + | |||
| + | Im ersten Schritte legen wir eine Variable mit Namen `x` fest und weisen ihr den Wert 7 zu. Danach quadrieren wir die Zahl und speichern diesen Wert in einer zweiten Variable mit Namen `y`. Nun geben wir in der Konsole den Wert der Variable `y` (also 49) aus. Die **Konsole** (auch **Terminal**) ist das Fenster unterhalb des Code-Fensters. | ||
| + | Um etwas in der Konsole auszugeben, schreiben wir dies in die `print(...)` Funktion. | ||
| + | |||
| + | Führe diesen Code (selber schreiben, nicht copy-paste!) nun selbst aus. Weise der Variablen `x` nun einen anderen Wert zu. Damit wird dann auch der Wert der Variablen `y` verändert und dementsprechend sieht die Ausgabe im Terminal anders aus. | ||
| + | |||
| + | Einige wichtige **mathematischen Operatoren** sind: | ||
| + | |||
| + | ^ Funktion ^ Python-Code ^ Resultat ^ | ||
| + | | Addition | `7+3` | `10` | | ||
| + | | Subtraktion | `7-3` | `4` | | ||
| + | | Multiplikation | `7*3` | `21` | | ||
| + | | Division (Nachkommastellen) | `7/3` | `2.3333333333...` | | ||
| + | | Ganzzahldivision | `7//3` | `2` | | ||
| + | | Hoch (z.B. 2 hoch 5) | `2**5` | `32` | | ||
| + | | Wurzel (z.B. Wurzel von 2, sqrt für square-root) | `sqrt(2)` | `1.4142135...` | | ||
| + | | Modulo (Rest der Ganzzahl-Division) | `7%3`| `1` | | ||
| + | |||
| + | #### Operationen mit Strings | ||
| + | |||
| + | ^ Funktion | ||
| + | | Länge | ||
| + | | Buchstabe auslesen | ||
| + | | Aneinanderreihen | ||
| + | | _Multiplikation_ | ||
| Zeile 31: | Zeile 81: | ||
| </ | </ | ||
| - | Gibt es aber **drei oder mehr Fälle**, muss man `if`-`else`-Verzweigungen ineinander verschachteln. Dadurch wird der Code unübersichtlich und fehleranfällig. Es ist dann besser, mit `elif` die weiteren | + | Gibt es aber **drei oder mehr Fälle**, muss man `if`-`else`-Verzweigungen ineinander verschachteln. Dadurch wird der Code unübersichtlich und fehleranfällig. Es ist dann besser, mit `elif` die weiteren |
| <code python> | <code python> | ||
| if < | if < | ||
| Zeile 44: | Zeile 94: | ||
| * Es gibt genau eine `if`-Anweisung! | * Es gibt genau eine `if`-Anweisung! | ||
| - | * Man kann **beliebig viele** (auch null) `elif`-Anweisungegn | + | * Man kann **beliebig viele** (auch null) `elif`-Anweisungen |
| * Es gibt keine oder eine `else`-Anweisung. | * Es gibt keine oder eine `else`-Anweisung. | ||
| * Falls die Bedingung bei `if` oder einem `elif` erfüllt ist, werden alle darauffolgenden `elif` gar **nicht mehr überprüft**. | * Falls die Bedingung bei `if` oder einem `elif` erfüllt ist, werden alle darauffolgenden `elif` gar **nicht mehr überprüft**. | ||
| Zeile 108: | Zeile 158: | ||
| | `A or B` | ist `True` nur falls mindestens eine der Aussagen `A` und `B` `True` ist | | | `A or B` | ist `True` nur falls mindestens eine der Aussagen `A` und `B` `True` ist | | ||
| | `not A` | negiert Aussage `A` | | | `not A` | negiert Aussage `A` | | ||
| - | |||
| ### Listen | ### Listen | ||
| + | Eine Liste ist eine Sequenz von Werten, die in einer einzigen Variable gespeichert werden. | ||
| + | |||
| + | Eine Liste erstellt man wie folgt: | ||
| + | <code python> | ||
| + | L = [' | ||
| + | </ | ||
| + | Eine Liste besteht aus **Elementen**, | ||
| + | |||
| + | Elemente hinten **hinzufügen** kann man mit append: | ||
| + | <code python> | ||
| + | L = [' | ||
| + | L.append(' | ||
| + | </ | ||
| + | |||
| + | Nach dem append-Befehl sieht die Liste wie folgt aus: `[' | ||
| + | <code python> | ||
| + | L.insert(2,' | ||
| + | L.pop(4) # Entfernt das Element mit Index 4 | ||
| + | len(L) # Gibt an, wieviele Elemente sich in der Liste befinden. Diesen Wert kann man z.B. printen oder in einer Variablen speichern | ||
| + | </ | ||
| + | |||
| + | #### Iteration | ||
| + | |||
| + | Iteration bedeutet, alle Elemente einer Liste durchzugehen. Mit einer `while`-Schleife könnte das so aussehen: | ||
| + | <code python> | ||
| + | i = 0 | ||
| + | while i < len(L): | ||
| + | print(L[i]) | ||
| + | i = i + 1 | ||
| + | </ | ||
| + | |||
| + | Noch etwas eleganter geht dasselbe mit einer `for`-Schleife. Dabei wird die Schleifen-Variable (im Beispiel `e`) in jedem Durchgang der Schleife auf das nächste Element der Liste gesetzt. | ||
| + | <code python> | ||
| + | for e in L: | ||
| + | print(e) | ||
| + | </ | ||
| ### Funktionen | ### Funktionen | ||
| + | |||
| + | Eine **Funktion** verpackt ein Stück Code, das wir öfter benötigen. | ||
| + | |||
| + | Die Funktion ist immer wie folgt aufgebaut: | ||
| + | |||
| + | <code python> | ||
| + | def name_der_funktion(PARAMETER): | ||
| + | # CODE DER FUNKTION | ||
| + | return RETURN_WERT # ist optional | ||
| + | </ | ||
| + | |||
| + | Wir verwenden Funktionen schon lange, viele kennst du: `print` und `input`, `random.randint`, | ||
| + | <code python> | ||
| + | digits = [0, 1, 2, 3, 4, 5] | ||
| + | digits.append(6) | ||
| + | |||
| + | message = "Wir haben {0} Ziffern" | ||
| + | </ | ||
| + | |||
| + | Gründe, um Funktionen zu benützen: | ||
| + | * Effizienz: Wiederholung vermeiden, mehrfach benötigten Code nur einmal schreiben. | ||
| + | * Klarheit: Der Name der Funktion dokumentiert, | ||
| + | * Isolation: Eine Funktion bearbeitet nur ihre Argumente, andere Variablen sind tabu! | ||
| + | |||
| + | Vergleich den folgenden Code und entscheide, was klarer ist: | ||
| + | |||
| + | <WRAP group> | ||
| + | <WRAP 45% column> | ||
| + | <code python> | ||
| + | numbers = [58, 100, 2, 24, 34, 34, 41, 46, 49, 45] | ||
| + | |||
| + | count = 0 | ||
| + | for n in numbers: | ||
| + | if n % 5 == 0: | ||
| + | if n % 3 == 0: | ||
| + | count = count + 1 | ||
| + | print(count) | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP 45% column> | ||
| + | <code python> | ||
| + | def is_multiple(number, | ||
| + | return number % factor == 0 | ||
| + | |||
| + | def count_multiples_of(candidates, | ||
| + | count = 0 | ||
| + | for n in candidates: | ||
| + | if is_multiple(n, | ||
| + | count = count + 1 | ||
| + | return count | ||
| + | |||
| + | numbers = [58, 100, 2, 24, 34, 34, 41, 46, 49, 45] | ||
| + | print(count_multiples_of(numbers, | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||