| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
| gf_informatik:daten:processing [2026-05-25 08:25] – hof | gf_informatik:daten:processing [2026-06-01 10:14] (aktuell) – [Aufgabe 7] hof |
|---|
| * Die Datei (hier `beispiel.txt`) muss sich im Ordner befinden, wo Python ausgeführt wird. | * Die Datei (hier `beispiel.txt`) muss sich im Ordner befinden, wo Python ausgeführt wird. |
| * `'r'` bedeutet *read*, dass die Textdatei nur gelesen und nicht verändert wird. | * `'r'` bedeutet *read*, dass die Textdatei nur gelesen und nicht verändert wird. |
| | |
| |
| #### Aufgabe 2 | #### Aufgabe 2 |
| |
| Lade die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:f:/s/FSInformatik/Ek-Hi_stH2RMjDa-wQN9jekBMeF_YD6rvhmibDlNglGWxw?e=Y3AX65|gemeinden.csv]] herunter und speichere sie im Ordner, wo du dein Python-Programm abspeicherst. Verwende obigen Python-Code, um herauszufinden, wieviel Zeilen die Datei hat. | Lade die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:f:/s/FSInformatik/Ek-Hi_stH2RMjDa-wQN9jekBMeF_YD6rvhmibDlNglGWxw?e=Y3AX65|gemeinden.csv]] herunter und speichere sie im Ordner, wo du dein Python-Programm abspeicherst. Verwende obigen Python-Code, um herauszufinden, wieviele Zeilen die Datei hat. |
| | |
| | Alternativ dazu kannst du auch direkt obigen Code modifizieren - die Datei `gemeinden.csv` ist bereits hinterlegt. |
| |
| ##### Encoding | ##### Encoding |
| Achtung, Mac-Users: Die Datei verwendet die Latin1-Codierung, einer Erweiterung von [[gf_informatik:verschluesselung:codierung|ASCII]], um auch Umlaute anzeigen zu können. Diese ist in Windows voreingestellt. MacOS hingegen verwendet standardmässig die universelle Unicode (UTF-8) Codierung. Beim Öffnen der Datei kann die Abweichung korrigiert werden: | Achtung, Mac-Users: Die Datei verwendet in Mitteleuropa die Latin1-Codierung, einer Erweiterung von [[gf_informatik:verschluesselung:codierung|ASCII]], um auch Umlaute anzeigen zu können. Diese ist in Windows voreingestellt. MacOS hingegen verwendet standardmässig die universelle Unicode (UTF-8) Codierung. Beim Öffnen der Datei kann die Abweichung korrigiert werden: |
| |
| <code python> | <code python> |
| Beschreibe eine Datei mit einigen Zeilen. Es ist ungünstig, mehr als einige zehntausend Zeilen zu schreiben... | Beschreibe eine Datei mit einigen Zeilen. Es ist ungünstig, mehr als einige zehntausend Zeilen zu schreiben... |
| ## CSV-Format | ## CSV-Format |
| Die Datei `gemeinden.csv` ist im [[wpde>CSV_(Dateiformat)|Comma-Separated-Values]] Format gespeichert: Die Daten sind ganz ähnlich gespeichert wie in einer Tabelle und können auch mit Excel und Sheets geöffnet werden. Jede Zeile entspricht einer Zeile der Tabelle; die Spalten sind meist mit Kommas voneinander getrennt. Manchmal werden aber auch Semikolons (`;`) oder ein Tabulator (`\t`) als Trennzeichen verwendet. | Die Datei `gemeinden.csv` ist im [[wpde>CSV_(Dateiformat)|Comma-Separated-Values]] Format gespeichert: Die Daten sind ganz ähnlich gespeichert wie in einer Tabelle und können auch mit Excel und Sheets geöffnet werden. Jede Zeile entspricht einer Zeile der Tabelle; die Spalten sind meist mit Kommas voneinander getrennt. Manchmal werden aber auch Semikolons (`;`) oder ein [[wpde>Tabulatorzeichen|Tabulator]] (`\t`) als Trennzeichen verwendet. |
| |
| Oft werden in der ersten Zeile die Namen der abgespeicherten Werte festgelegt: | Oft werden in der ersten Zeile die Spaltennamen festgelegt: |
| |
| <code csv> | <code csv> |
| * `strip()` gibt den selben String zurück, aber ohne Leerschläge oder anderen _Whitespace_ (Zeilenumbrüche...) an beiden Enden: | * `strip()` gibt den selben String zurück, aber ohne Leerschläge oder anderen _Whitespace_ (Zeilenumbrüche...) an beiden Enden: |
| * `" Romans Horn ".strip()` gibt `"Romans Horn"` zurück. | * `" Romans Horn ".strip()` gibt `"Romans Horn"` zurück. |
| | |
| |
| #### Aufgabe 4 | #### Aufgabe 4 |
| * Wieviele Gemeinden gibt es im Kanton Thurgau? Wieviele im Kanton Bern? | * Wieviele Gemeinden gibt es im Kanton Thurgau? Wieviele im Kanton Bern? |
| |
| <bottom-exercise hidesolution id="count" zip="https://bottom.ch/ksr/2m/data/2m.zip"> | <bottom-exercise showsolution id="count" zip="https://bottom.ch/ksr/2m/data/2m.zip"> |
| <script type="text/x-starter"> | <script type="text/x-starter"> |
| with open('gemeinden.csv', 'r') as infile: | with open('gemeinden.csv', 'r') as infile: |
| </script> | </script> |
| </bottom-exercise> | </bottom-exercise> |
| |
| |
| ## Text in Zahlen umwandeln. | ## Text in Zahlen umwandeln. |
| print(my_number) # only executes if the above was successful | print(my_number) # only executes if the above was successful |
| except ValueError: | except ValueError: |
| pass # executed if an exception was thrown | print("not a number") # executed if an exception was thrown |
| </bottom-editor> | </bottom-editor> |
| |
| #### Aufgabe 5 | #### Aufgabe 5 |
| Benütze `try...except` um in deinem Code die Bevölkerung und die Fläche der Gemeinden auszulesen. | Benütze `try...except` um in deinem Code die Bevölkerung und die Fläche der Gemeinden auszulesen. |
| * wie gross ist die Bevölkerung des Kanton Thurgau? | * wie gross ist die Bevölkerung des Kanton Thurgau? |
| |
| <bottom-exercise hidesolution id="sum-tg" zip="https://bottom.ch/ksr/2m/data/2m.zip"> | <bottom-exercise showsolution id="sum-tg" zip="https://bottom.ch/ksr/2m/data/2m.zip"> |
| <script type="text/x-starter"> | <script type="text/x-starter"> |
| with open('gemeinden.csv', 'r') as infile: | with open('gemeinden.csv', 'r') as infile: |
| </script> | </script> |
| </bottom-exercise> | </bottom-exercise> |
| |
| |
| #### Aufgabe 6 | #### Aufgabe 6 |
| Schreibe Python-Code, um die folgenden Fragen zu beantworten: | Schreibe Python-Code, um die folgenden Fragen zu beantworten: |
| * kleinste Bevölkerung: Kammersrohr (32 Einwohner) | * kleinste Bevölkerung: Kammersrohr (32 Einwohner) |
| * grösste Fläche: Scuol ($438.76 km^2$) | * grösste Fläche: Scuol ($438.76 km^2$) |
| * Einwohner: $8670125$ | * Einwohner: $9050451$ |
| ++++ | ++++ |
| |
| <bottom-exercise id="find-smallest" hidesolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> | <bottom-exercise id="find-smallest" showsolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> |
| <script type="text/x-starter"> | <script type="text/x-starter"> |
| def find_smallest_population(): | def find_smallest_population(): |
| </bottom-exercise> | </bottom-exercise> |
| |
| <bottom-exercise id="find-largest" hidesolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> | <bottom-exercise id="find-largest" showsolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> |
| <script type="text/x-starter"> | <script type="text/x-starter"> |
| def find_largest_area(): | def find_largest_area(): |
| </script> | </script> |
| </bottom-exercise> | </bottom-exercise> |
| |
| #### Aufgabe 7 | #### Aufgabe 7 |
| Erweitere den Code, um folgende Fragen zu beantworten: | Erweitere den Code, um folgende Fragen zu beantworten: |
| |
| |
| <bottom-exercise id="summarize-canton" hidesolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> | <bottom-exercise id="summarize-canton" showsolution zip="https://bottom.ch/ksr/2m/data/2m.zip" style="max-height:18lh;"> |
| <script type="text/x-starter"> | <script type="text/x-starter"> |
| def summarize_canton(canton): | def summarize_canton(canton): |