Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:python_intro [2025-02-24 15:33] – [Lösungen] scatalit:python_intro [2025-03-31 14:08] (aktuell) sca
Zeile 212: Zeile 212:
   * Im Zweifelsfall: [[https://docs.python.org/3/tutorial/|docs.python.org]]   * Im Zweifelsfall: [[https://docs.python.org/3/tutorial/|docs.python.org]]
  
-=== Auftrag ===+=== Auftrag ===
  
-   1. Lade das "Ortschaftenverzeichnis Kanton Thurgau 2023" im **JSON-Format** herunter: https://opendata.swiss/de/dataset/ortschaftenverzeichnis-kanton-thurgau-2023 ... +   1. Lade den Datensatz `plz_schweiz.json` im **JSON-Format** herunter {{ :talit:plz_schweiz.json.zip |}} und **entzippe** diesen
-   1. ... und lege es in einem (noch zu erstellenden) Unterordner `data` in deinem Repo `talit_python` ab.+   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`: Beantworte hier die Fragen von weiter unten mithilfe von Dictinaries.    1. Erstelle ein neues Jupyter-Notebook (im obersten Ordner des Repos, *nicht* in `data`) mit Namen `dictionaries_json.ipynb`: Beantworte hier die Fragen von weiter unten mithilfe von Dictinaries.
    1. Dokumentiere parallel die wichtigsten Befehle im *Portfolio*.    1. Dokumentiere parallel die wichtigsten Befehle im *Portfolio*.
 +
 +**Fragen zu PLZ Schweiz:**
 +
 +Lies das JSON-File "plz_schweiz.json" ein und speichere es in einem Dictionary, z.B. mit Namen `data`. Schreibe dann Code, um folgende Fragen zu beantworten:
 +
 +   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), welche noch nicht vergeben sind.
 +   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, dass die Stadt ab jetzt "Winefielden" heissen soll. Passe das Dictionary entsprechend an.
 +   1. Die SalmsacherInnen haben beschlossen, sich Romanshorn anschliessen zu wollen. Entferne Salmsach aus dem Dictionary.
 +   1. Welche Ortschaft hat den längsten Namen? Welche PLZ hat diese Ortschaft?
 +   1. Wie viele Ortschaften fangen mit "W" an?
 +   1. Speichere das Dictionary in einem neuen JSON `plz_schweiz_modifiziert.json`.
 +
 +=== Auftrag II ===
 +
 +   1. Lade das "Ortschaftenverzeichnis Kanton Thurgau 2023" im **JSON-Format** herunter: https://opendata.swiss/de/dataset/ortschaftenverzeichnis-kanton-thurgau-2023 ...
 +   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`: Beantworte hier die Fragen von weiter unten mithilfe von Dictinaries.
  
 **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, bei dem eine bestimmte Zahl in möglichst wenig Versuchen erraten werden soll.    * **Kurz:** Programmiere ein Zahlenratespiel, bei dem eine bestimmte Zahl in möglichst wenig Versuchen erraten werden soll.
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 542: Zeile 570:
 ++++ ++++
  
 +</nodisp>
 +
 +<nodisp 1>
 +++++Dictionaries & JSON Auftrag I|
 +
 +<code python>
 +import json
 +import os
 +import random
 +
 +PATH_DATA_LOAD = os.path.join('data','plz_schweiz.json') # so stellt sicher, dass Code auf Mac und Windows funktioniert
 +PATH_DATA_SAVE = os.path.join('data','plz_schweiz_modifiziert.json')
 +
 +with open(PATH_DATA_LOAD, 'r', encoding="utf-8") as json_file:
 +    data = json.load(json_file) # lade File in Dictionary data
 +
 +print("1.")
 +print(data['6983'])
 +
 +print("2.")
 +for plz,ort in data.items():
 +    if ort == "Samedan":
 +        print(plz)
 +        break
 +
 +print("3.")
 +count = 0
 +for plz,ort in data.items():
 +    if ort == "Zürich":
 +        count += 1
 +print(count)
 +
 +print("4.")
 +plz_frei = []
 +for i in range(1000,10000):
 +    if not str(i) in data:
 +        plz_frei.append(str(i))
 +print(plz_frei)
 +
 +print("5.")
 +data[plz_frei[7]] = "Schärertown"
 +for plz,ort in data.items():
 +    if ort == "Schärertowns":
 +        print(plz)
 +        break
 +
 +print("6.")
 +count = 0
 +for plz in data:
 +    if int(plz) // 1000 == 6:
 +        count += 1
 +print(count)
 +
 +print("7.")
 +for plz,ort in data.items():
 +    if ort == "Weinfelden":
 +        break
 +data[plz] = "Winefielden"
 +print(data[plz])
 +
 +print("8.")
 +for plz,ort in data.items():
 +    if ort == "Salmsach":
 +        print(plz)
 +        del data[plz]
 +        break
 +print(data.get('8599','Not found'))
 +
 +print("9.")
 +# 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,ort)
 +
 +print("10.")
 +with open(PATH_DATA_SAVE, "w", encoding="utf-8") as json_file:
 +    json.dump(data,json_file,indent=4,ensure_ascii=False) # Speichere Dictionary in JSON File
 +</code>
 +
 +++++
 </nodisp> </nodisp>
  
  • talit/python_intro.1740411196.txt.gz
  • Zuletzt geändert: 2025-02-24 15:33
  • von sca