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-03-03 13:46] – sca | talit:python_intro [2025-04-28 12:38] (aktuell) – [8. List Comprehensions] hof | ||
---|---|---|---|
Zeile 214: | Zeile 214: | ||
=== Auftrag I === | === Auftrag I === | ||
- | 1. Lade den Datensatz | + | 1. Lade den Datensatz |
- | | + | |
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*. | ||
Zeile 231: | Zeile 231: | ||
1. In einer Volksabstimmung haben die Bewohnerinnen und Bewohner von Weinfelden beschlossen, | 1. In einer Volksabstimmung haben die Bewohnerinnen und Bewohner von Weinfelden beschlossen, | ||
1. Die SalmsacherInnen haben beschlossen, | 1. Die SalmsacherInnen haben beschlossen, | ||
- | 1. Speichere das Dictionary in einem neuen JSON "plz_schweiz_modifiziert.json". | + | 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 === | === Auftrag II === | ||
Zeile 291: | 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 322: | 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 344: | 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 383: | 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 394: | 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 562: | 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, | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
</ | </ | ||