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-23 21:17] – [Auftrag] sca | talit:python_intro [2025-03-31 14:08] (aktuell) – sca | ||
---|---|---|---|
Zeile 209: | Zeile 209: | ||
* JSON-Files lesen und erstellen können. | * JSON-Files lesen und erstellen können. | ||
* Mit Dictionaries arbeiten können. | * Mit Dictionaries arbeiten können. | ||
- | * Selbständig arbeiten (Selber | + | * Selbständig arbeiten ([[gf_informatik: |
* 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 468: | Zeile 496: | ||
===== Lösungen ===== | ===== Lösungen ===== | ||
- | < | + | < |
++++For-Schleife & Funktionen| | ++++For-Schleife & Funktionen| | ||
Zeile 542: | Zeile 570: | ||
++++ | ++++ | ||
+ | </ | ||
+ | <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 724: | ||
++++ | ++++ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <nodisp 2> | ||
++++Text Processing| | ++++Text Processing| |