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 14:10] – [Auftrag I] scatalit:python_intro [2025-04-28 12:38] (aktuell) – [8. List Comprehensions] hof
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. Welche Ortschaft hat den längsten Namen?+   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`.    1. Speichere das Dictionary in einem neuen JSON `plz_schweiz_modifiziert.json`.
  
Zeile 292: 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 323: 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 345: 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 384: 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 395: 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 563: 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.1741011020.txt.gz
  • Zuletzt geändert: 2025-03-03 14:10
  • von sca