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-03-03 13:46] scatalit:python_intro [2025-04-28 12:38] (aktuell) – [8. List Comprehensions] hof
Zeile 214: Zeile 214:
 === Auftrag I === === Auftrag I ===
  
-   1. Lade den Datensatz "plz_schweiz.jsonim **JSON-Format** herunter: +   1. Lade den Datensatz `plz_schweiz.jsonim **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*.
Zeile 231: Zeile 231:
    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. 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. Die SalmsacherInnen haben beschlossen, sich Romanshorn anschliessen zu wollen. Entferne Salmsach aus dem Dictionary.
-   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 "W" an? 
 +   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, 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 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://docs.python.org/3/tutorial/datastructures.html#list-comprehensions|List Comprehensions]].
  
 **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,4,9,...      1. Liste mit den ersten 20 Quadratzahlen: 1,4,9,...
-     1. String in Liste mit chars umwandeln: "KSR2024" -> ['K','S','R','2','0','2','4']. Verwendung von Funktion `list(...)` ist verboten.+     1. String in Liste mit chars umwandeln: `"KSR2024"-> `['K','S','R','2','0','2','4']`. Verwendung von Funktion `list(...)` ist verboten.
      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: ["Hallo","ksr","Romanshorn","7"] -> [5,3,10,1]\\ \\+     1. Gib Liste mit Strings vor. Erstelle Liste, die Anzahl chars der einzelnen Strings angibt: `["Hallo","ksr","Romanshorn","7"]-> `[5,3,10,1]`\\ \\
    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. ['r','O','M','A','n','s','h','o','r','n',] -> ['O','M','A']+     1. Gib eine Liste mit einzelnen Buchstaben vor. Erstelle Teilliste, welche nur Grossbuchstaben der ursprünglichen Liste beinhaltet. `['r','O','M','A','n','s','h','o','r','n',]-> `['O','M','A']`
      1. Gleich wie letzte Aufgabe, nur soll ein String vorgegeben und erstellt werden: `"rOMAnshorn"` -> `"OMA"`. Idee: Erstelle *Liste* mit Grossbuchstaben und setzt diese dann zu einem String zusammen. Tipp: mit `''.join(my_list)` werden die Elemente in der Liste `my_list` zu einem String zusammengesetzt.\\ \\      1. Gleich wie letzte Aufgabe, nur soll ein String vorgegeben und erstellt werden: `"rOMAnshorn"` -> `"OMA"`. Idee: Erstelle *Liste* mit Grossbuchstaben und setzt diese dann zu einem String zusammen. Tipp: mit `''.join(my_list)` werden die Elemente in der Liste `my_list` zu einem String zusammengesetzt.\\ \\
    1. **Zusatzaufgaben (anspruchsvoll):**    1. **Zusatzaufgaben (anspruchsvoll):**
-     1. Liste mit allen Primzahlen bis 100. Verwende die Funktion `all(...)` (nutze KI als Tutor).+     1. Liste mit allen Primzahlen bis 100
 +       1. Nutze KI als Tutor! 
 +       1. Schreibe eine List-Comprehension, die alle Teiler einer Zahl erzeugt. 
 +         1. Primzahlen haben keinen Teiler ausser 1 und sich selbst.. 
 +       1. Verwende die Funktion `all(...)`
  
  
Zeile 562: Zeile 574:
 ++++ ++++
  
 +</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.1741009602.txt.gz
  • Zuletzt geändert: 2025-03-03 13:46
  • von sca