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:12] – [4. String Formatting] sca | talit:python_intro [2025-04-28 12:38] (aktuell) – [8. List Comprehensions] hof | ||
---|---|---|---|
Zeile 193: | Zeile 193: | ||
print(f' | print(f' | ||
</ | </ | ||
+ | |||
+ | * Linksbündig: | ||
+ | * Rechtsbündig: | ||
+ | * Zentriert: `f" | ||
+ | |||
++++ | ++++ | ||
</ | </ | ||
Zeile 204: | 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 den Datensatz `plz_schweiz.json` im **JSON-Format** herunter {{ : | ||
+ | 1. Lege das JSON-File in einem (noch zu erstellenden) 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`: | ||
+ | 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. Lade das " | ||
- | 1. ... und lege es in einem (noch zu erstellenden) | + | 1. ... und lege wieder |
- | 1. Erstelle | + | 1. Erstelle |
- | 1. `dictionaries_json.ipynb`: | + | |
- | 1. `ortschaften_tg.ipynb`: | + | |
- | 1. Lade den Datensatz in Python ein, speichere diesen in der Variablen `data`. | + | |
- | 1. Schreibe nun in `ortschaften_tg.ipynb` den Code, der die **Fragen zum Datensatz Ortschaftenverzeichnis** unten beantwortet. Dokumentiere parallel alle wichtigen Befehle in `dictionaries_json.ipynb` | + | |
- | 1. Finde auf [[https:// | + | |
**Fragen zum Datensatz Ortschaftenverzeichnis: | **Fragen zum Datensatz Ortschaftenverzeichnis: | ||
+ | |||
+ | Lade den Datensatz in Python ein, speichere diesen in der Variablen `data`. Beantworte nun die folgenden Fragen: | ||
1. Finde deinen Wohnort und schaue die Daten dazu an. | 1. Finde deinen Wohnort und schaue die Daten dazu an. | ||
Zeile 230: | Zeile 255: | ||
1. Lösche alle Einträge mit key `bezirk_nr`. | 1. Lösche alle Einträge mit key `bezirk_nr`. | ||
1. Erstelle einen neuen Datensatz (Liste mit Dictionaries), | 1. Erstelle einen neuen Datensatz (Liste mit Dictionaries), | ||
+ | |||
+ | **Zusatzaufgabe: | ||
+ | |||
===== - Ausnahmebehandlung mit try-except ===== | ===== - Ausnahmebehandlung mit try-except ===== | ||
Zeile 265: | 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 296: | 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 318: | 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 357: | 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 368: | 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 462: | Zeile 500: | ||
===== Lösungen ===== | ===== Lösungen ===== | ||
- | < | + | < |
++++For-Schleife & Funktionen| | ++++For-Schleife & Funktionen| | ||
Zeile 536: | 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 602: | Zeile 728: | ||
++++ | ++++ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <nodisp 2> | ||
++++Text Processing| | ++++Text Processing| |