lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:challenge3

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:challenge3 [2021/02/22 15:02]
Ivo Blöchliger
lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:challenge3 [2021/02/25 07:21] (current)
Ivo Blöchliger [Dictionaries (JSON Objects)]
Line 10: Line 10:
   * Mehr dazu auf https://www.json.org/json-de.html   * Mehr dazu auf https://www.json.org/json-de.html
 </WRAP> </WRAP>
 +
 +===== Listen (Arrays) =====
  
 <WRAP todo> <WRAP todo>
Line 20: Line 22:
 # Indizies starten bei 0! # Indizies starten bei 0!
 print("Die zweite Primzahl ist %d" % primzahlen[1]) print("Die zweite Primzahl ist %d" % primzahlen[1])
 +
 +csv = ""   # Leere Zeichenkette
 +for p in primzahlen:
 +  csv += "%d;" % p
 +csv+="\n"   # Zeilenumbruch
 +print(csv)
 </code> </code>
 </WRAP> </WRAP>
 +
 +
 <WRAP info> <WRAP info>
   * Listen werden zwischen ''['' und '']'' durch Kommas getrennt geschrieben.   * Listen werden zwischen ''['' und '']'' durch Kommas getrennt geschrieben.
   * Zugriff auf einzelne Elemente erfolgt mit z.B. ''a[2]'' (drittes Element der Liste, die in der Variablen ''a'' gespeichert ist).   * Zugriff auf einzelne Elemente erfolgt mit z.B. ''a[2]'' (drittes Element der Liste, die in der Variablen ''a'' gespeichert ist).
 +  * Mit Format-Strings können Dinge wie Zahlen formatiert ausgegeben werden. Das Format ist
 +<code python>
 +print("bla %d bla" % 5)      # <- %d wird durch 5 ersetzt, man erhält "bla 5 bla"
 +print("x=%d, y=%d" % (23,42))  # <- das erste %d wird durch 23, das zweite durch 42 ersetzt, man erhält "x=23, y=42".
 +</code>
 +  * Listen können auch wieder Listen enthalten:
 +<code python>
 +tabelle = [[1,2,3],[4,5,6]]
 +print(tabelle[0])  # erstes Element ist die Liste [1,2,3]
 +print(tabelle[0][1])  # zweites Element der Liste [1,2,3], also 2.
 +
 +print("\nZeilenweise Ausgabe:")
 +for zeile in tabelle:
 +  print(zeile)
 +</code>
 +
 </WRAP> </WRAP>
  
 <WRAP todo> <WRAP todo>
 +Vervollständigen Sie folgenden Python-Code, so dass er die Tabelle im CSV Format ausgibt:
 +<code python>
 +tabelle = [[x*y for x in range(1,6)] for y in range(1,6)]
 +print("Ganze tabelle:")
 +print(tabelle)
  
 +csv = ""
 +
 +#
 +#  Hier die Variable csv erweitern
 +# Inspirieren Sie sich dabei beim Beispiel mit den Primzahlen
 +#
 +
 +# Ausgabe
 +print(csv)
 +</code>
 +Die Ausgabe soll wie folgt aussehen:
 +<code txt>
 +1;2;3;4;5;
 +2;4;6;8;10;
 +3;6;9;12;15;
 +4;8;12;16;20;
 +5;10;15;20;25;
 +</code>
 +</WRAP>
 +
 +====== JSON in, CSV out ======
 +<WRAP todo>
 +  * Speichern Sie folgende Datei im Ordner ''challenges'': {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:data01.json}}
 +  * Folgender Code liest die JSON-Datei ein und man erhält einen liste in der Variablen ''data'':
 +<code python jsonreader.py>
 +import json    # Für die Verarbeitung von JSON-Daten
 +
 +# Datei öffnen
 +datei = open("data01.json")
 +# JSON-Daten parsen
 +data = json.load(datei)
 +# Datei schliessen
 +datei.close()
 +
 +# Schlaufe über die Daten
 +for i in range(len(data)):
 +    print("data[%d] = %s" % (i,data[i]))
 +</code>
 +  * Erweitern Sie obiges Python-Programm so, dass eine Zeile im CSV-Format produziert wird.
 +</WRAP>
 +
 +<WRAP todo>
 +  * Speichern Sie folgende Datei im Ordner ''challenges'': {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:data07.json}}
 +  * Schreiben Sie ein Python-Programm, das die Datei ''data07.json'' einliest und eine Zeile im CSV-Format produziert.
 +  * Speichern Sie das Resultat in der Datei ''data07.csv'' mit dem folgenden Code:
 +<code python>
 +datei = open("data07.csv", "w" # Datei zum Schreiben öffnen.
 +datei.write(csv)
 +datei.close()
 +</code>
 +  * Überprüfen Sie, ob sich die Datei mit Excel korrekt öffnen lässt.
 +
 +</WRAP>
 +
 +====== Dictionaries (JSON Objects) ======
 +<WRAP info>
 +  * Listen (Array) werden mit Zahlen von 0 bis n-1 indiziert, wobei n die Anzahl Element sind.
 +  * Dictionaries werden durch Strings (Zeichenketten) indiziert und haben a priori keine fixe Ordnung.
 +  * Dictionaries werden zwischen ''{'' und ''}'' geschrieben, wobei die einzelnen Einträge aus einem String in Anführungszeichen (der Key), einem Doppelpunkt '':'' und einem Wert (Value) bestehen. Die Werte können beliebige Python-Objekte sein, wie Zahlen, Strings, Listen oder auch wieder Dictionaries.
 +  * Studieren Sie folgenden Code:
 +<code python>
 +d = {"4eNP": 23, "4iW" : 22, "4kW" : 20}
 +print(d["4iW"])   # Liefert 22
 +print(d.keys())   # Liefert ['4kW', '4iW', '4eNP']
 +print(d.values()) # Liefert [20, 22, 23]
 +print(d.items())  # Liefert [('4kW', 20), ('4iW', 22), ('4eNP', 23)]
 +# Loop über alle Elmente
 +for key,value in d.items():
 +  print("d['%s']=%d" % (key, value))
 +</code>
 +
 +</WRAP>
 +
 +<WRAP todo>
 +  * Schreiben Sie ein Python-Programm, das folgende JSON-Datei in eine CSV-Datei mit 2 Spalten umwandelt: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:data03.json}}
 +
 +Verwenden Sie dazu obige Code-Blöcke, um die JSON-Datei einzulesen und am Schluss das CSV zu schreiben. Schauen Sie sich die JSON-Datei an und/oder geben Sie den Inhalt in Python aus (mit ''print(data)'' in obigen Code-Beispielen). Überlegen Sie sich, was die übergeordnete Struktur ist, und wie Sie mit einer ''for''-Schlaufe über die Elemente Iterieren können.
 +</WRAP>
 +
 +<WRAP todo>
 +  * Diejenigen, die Daten im JSON-Format haben (z.B. von Spotify), können versuchen, diese als CSV zu exportieren. Die anderen können diese Datei verwenden: {{lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:data04.json}}.
 </WRAP> </WRAP>
  • lehrkraefte/blc/informatik/glf4-20/umgang-mit-dateien/challenge3.1614002555.txt.gz
  • Last modified: 2021/02/22 15:02
  • by Ivo Blöchliger