Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| talit:python_intro [2025-02-24 15:32] – [Lösungen] sca | talit:python_intro [2025-04-28 12:38] (aktuell) – [8. List Comprehensions] hof | ||
|---|---|---|---|
| Zeile 212: | Zeile 212: | ||
| * Im Zweifelsfall: | * Im Zweifelsfall: | ||
| - | === Auftrag === | + | === Auftrag |
| - | 1. Lade das " | + | 1. Lade den Datensatz `plz_schweiz.json` |
| - | | + | |
| 1. Erstelle ein neues Jupyter-Notebook (im obersten Ordner des Repos, *nicht* in `data`) mit Namen `dictionaries_json.ipynb`: | 1. Erstelle ein neues Jupyter-Notebook (im obersten Ordner des Repos, *nicht* in `data`) mit Namen `dictionaries_json.ipynb`: | ||
| 1. Dokumentiere parallel die wichtigsten Befehle im *Portfolio*. | 1. Dokumentiere parallel die wichtigsten Befehle im *Portfolio*. | ||
| + | |||
| + | **Fragen zu PLZ Schweiz:** | ||
| + | |||
| + | Lies das JSON-File " | ||
| + | |||
| + | 1. Welche Ortschaft hat die PLZ 6983? | ||
| + | 1. Finde die PLZ von Samedan. | ||
| + | 1. Wie viele Postleitzahlen gibt es für Zürich? | ||
| + | 1. Erstelle eine Liste mit allen PLZ (1000-9999), | ||
| + | 1. Du gründest deine eigene Ortschaft. Gib ihr einen Namen, wähle eine der freien PLZ und trage sie im Dictionary ein. | ||
| + | 1. Wie viele 6000er Postleitzahlen gibt es? | ||
| + | 1. In einer Volksabstimmung haben die Bewohnerinnen und Bewohner von Weinfelden beschlossen, | ||
| + | 1. Die SalmsacherInnen haben beschlossen, | ||
| + | 1. Welche Ortschaft hat den längsten Namen? Welche PLZ hat diese Ortschaft? | ||
| + | 1. Wie viele Ortschaften fangen mit " | ||
| + | 1. Speichere das Dictionary in einem neuen JSON `plz_schweiz_modifiziert.json`. | ||
| + | |||
| + | === Auftrag II === | ||
| + | |||
| + | 1. Lade das " | ||
| + | 1. ... und lege wieder in Unterordner `data` in deinem Repo `talit_python` ab. | ||
| + | 1. Erstelle ein neues Jupyter-Notebook (im obersten Ordner des Repos, *nicht* in `data`) mit Namen `dictionaries_json.ipynb`: | ||
| **Fragen zum Datensatz Ortschaftenverzeichnis: | **Fragen zum Datensatz Ortschaftenverzeichnis: | ||
| Zeile 271: | Zeile 293: | ||
| === Aufgabe 1: try-except === | === Aufgabe 1: try-except === | ||
| + | |||
| + | Löse diese Aufgabe in eine neues File `try_except.ipynb`. | ||
| Starte mit dem Code-Block: | Starte mit dem Code-Block: | ||
| Zeile 302: | Zeile 326: | ||
| === Aufgabe 3: Guess Number === | === Aufgabe 3: Guess Number === | ||
| + | |||
| + | Löse diese Aufgabe auch wieder im File `try_except.ipynb`. | ||
| * **Kurz:** Programmiere ein Zahlenratespiel, | * **Kurz:** Programmiere ein Zahlenratespiel, | ||
| Zeile 324: | Zeile 350: | ||
| **Auftrag: | **Auftrag: | ||
| + | |||
| + | Löse Auftrag in Dokument `text_processing.ipynb`. | ||
| 1. Wähle einen der folgenden **langen Texte**, lade diesen herunter und entzippe diesen. Schreibe deinen Code unten so, dass er ohne Anpassungen auch für die anderen Text funktioniert. | 1. Wähle einen der folgenden **langen Texte**, lade diesen herunter und entzippe diesen. Schreibe deinen Code unten so, dass er ohne Anpassungen auch für die anderen Text funktioniert. | ||
| Zeile 363: | Zeile 391: | ||
| ===== - List Comprehensions ===== | ===== - List Comprehensions ===== | ||
| - | **Idee:** Listen in einer Zeile erstellen mit List Comprehensions | + | **Idee:** Listen in einer Zeile erstellen mit [[https:// |
| **Programmierskills: | **Programmierskills: | ||
| Zeile 374: | Zeile 402: | ||
| 1. Liste mit den ersten $20$ ungeraden Zahlen. | 1. Liste mit den ersten $20$ ungeraden Zahlen. | ||
| 1. Liste mit den ersten $20$ Quadratzahlen: | 1. Liste mit den ersten $20$ Quadratzahlen: | ||
| - | 1. String in Liste mit chars umwandeln: " | + | 1. String in Liste mit chars umwandeln: |
| 1. Liste mit $10$ Zufallszahlen im Bereich $0$ bis $100$. | 1. Liste mit $10$ Zufallszahlen im Bereich $0$ bis $100$. | ||
| - | 1. Gib Liste mit Strings vor. Erstelle Liste, die Anzahl chars der einzelnen Strings angibt: [" | + | 1. Gib Liste mit Strings vor. Erstelle Liste, die Anzahl chars der einzelnen Strings angibt: |
| 1. **List Comprehensions mit Conditions: | 1. **List Comprehensions mit Conditions: | ||
| 1. Gib eine Liste mit Zahlen vor. Erstelle eine Teilliste, welche nur die geraden Zahlen der ursprünglichen Liste beinhaltet. | 1. Gib eine Liste mit Zahlen vor. Erstelle eine Teilliste, welche nur die geraden Zahlen der ursprünglichen Liste beinhaltet. | ||
| - | 1. Gib eine Liste mit einzelnen Buchstaben vor. Erstelle Teilliste, welche nur Grossbuchstaben der ursprünglichen Liste beinhaltet. [' | + | 1. Gib eine Liste mit einzelnen Buchstaben vor. Erstelle Teilliste, welche nur Grossbuchstaben der ursprünglichen Liste beinhaltet. |
| 1. Gleich wie letzte Aufgabe, nur soll ein String vorgegeben und erstellt werden: `" | 1. Gleich wie letzte Aufgabe, nur soll ein String vorgegeben und erstellt werden: `" | ||
| 1. **Zusatzaufgaben (anspruchsvoll): | 1. **Zusatzaufgaben (anspruchsvoll): | ||
| - | 1. Liste mit allen Primzahlen bis $100$. Verwende die Funktion `all(...)` | + | 1. Liste mit allen Primzahlen bis $100$. |
| + | 1. Nutze KI als Tutor! | ||
| + | 1. Schreibe eine List-Comprehension, | ||
| + | 1. Primzahlen haben keinen Teiler ausser 1 und sich selbst.. | ||
| + | 1. Verwende die Funktion `all(...)` | ||
| Zeile 542: | Zeile 574: | ||
| ++++ | ++++ | ||
| + | </ | ||
| + | <nodisp 1> | ||
| + | ++++Dictionaries & JSON Auftrag I| | ||
| + | |||
| + | <code python> | ||
| + | import json | ||
| + | import os | ||
| + | import random | ||
| + | |||
| + | PATH_DATA_LOAD = os.path.join(' | ||
| + | PATH_DATA_SAVE = os.path.join(' | ||
| + | |||
| + | with open(PATH_DATA_LOAD, | ||
| + | data = json.load(json_file) # lade File in Dictionary data | ||
| + | |||
| + | print(" | ||
| + | print(data[' | ||
| + | |||
| + | print(" | ||
| + | for plz,ort in data.items(): | ||
| + | if ort == " | ||
| + | print(plz) | ||
| + | break | ||
| + | |||
| + | print(" | ||
| + | count = 0 | ||
| + | for plz,ort in data.items(): | ||
| + | if ort == " | ||
| + | count += 1 | ||
| + | print(count) | ||
| + | |||
| + | print(" | ||
| + | plz_frei = [] | ||
| + | for i in range(1000, | ||
| + | if not str(i) in data: | ||
| + | plz_frei.append(str(i)) | ||
| + | print(plz_frei) | ||
| + | |||
| + | print(" | ||
| + | data[plz_frei[7]] = " | ||
| + | for plz,ort in data.items(): | ||
| + | if ort == " | ||
| + | print(plz) | ||
| + | break | ||
| + | |||
| + | print(" | ||
| + | count = 0 | ||
| + | for plz in data: | ||
| + | if int(plz) // 1000 == 6: | ||
| + | count += 1 | ||
| + | print(count) | ||
| + | |||
| + | print(" | ||
| + | for plz,ort in data.items(): | ||
| + | if ort == " | ||
| + | break | ||
| + | data[plz] = " | ||
| + | print(data[plz]) | ||
| + | |||
| + | print(" | ||
| + | for plz,ort in data.items(): | ||
| + | if ort == " | ||
| + | print(plz) | ||
| + | del data[plz] | ||
| + | break | ||
| + | print(data.get(' | ||
| + | |||
| + | print(" | ||
| + | # loese in zwei Schritten: zuerst max, Laenge suchen, dann alle Orte finden mit dieser Laenge. | ||
| + | max_length = 0 | ||
| + | for ort in data.values(): | ||
| + | if len(ort) > max_length: | ||
| + | max_length = len(ort) | ||
| + | print(max_length) | ||
| + | |||
| + | for plz,ort in data.items(): | ||
| + | if len(ort) == max_length: | ||
| + | print(plz, | ||
| + | |||
| + | print(" | ||
| + | with open(PATH_DATA_SAVE, | ||
| + | json.dump(data, | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | </ | ||
| + | |||
| + | <nodisp 2> | ||
| ++++Ausnahmebehandlung mit try-except| | ++++Ausnahmebehandlung mit try-except| | ||
| Zeile 608: | Zeile 728: | ||
| ++++ | ++++ | ||
| + | |||
| + | </ | ||
| + | |||
| + | <nodisp 2> | ||
| ++++Text Processing| | ++++Text Processing| | ||