13. Hausaufgaben¶
13.1. Hausaufgabe 1¶
Hausaufgabe 1.1 (1 Punkt)
Gegeben ist folgende Berechnungsvorschrift für x
:
- Erzeugen Sie ein Python Skript mit beliebigem Namen mittels Spyder.
- Schreiben Sie Ihren Namen in ein Kommentar
- Definieren Sie drei Variablen
a
,b
,y
mit den Werten5
,2.5
und1
. - Berechnen Sie den Wert von
x
. - Geben Sie das Ergebnis aus 4) in der folgenden Form aus:
x = ..., y = ...
. Setzen Sie dabei für die Punkte Ihr Ergebnis aus 4) und den Wert füry
ein. - Wiederholen Sie die Punkte 4) und 5) aber verwenden Sie anstelle des Divisionsoperators
/
den Ganzzahldivisionsoperator//
in der Berechnungsvorschrift. - Probieren Sie selbstständig weitere Werte für die Variablen
a
undb
aus.
13.2. Hausaufgabe 2¶
Hausaufgabe 2.1 (1 Punkt)
Gegeben ist eine Liste Obstkorb
mit den Einträgen "Apfel","Banane","Kiwi", "Apfel", "Banane"
.
Schreiben Sie Code, der die folgenden Punkte löst und lassen Sie sich zu jedem Punkt eine kurze Ausgabe mit erklärendem Text ausgeben.
- Definieren Sie die Liste
Obstkorb
. - Finden Sie heraus ob sich die Zeichenkette
"Banane"
in dieser Liste befindet. - Ermitteln Sie, wie oft
"Banane"
in der Liste vorkommt. - Bestimmen Sie alle Indizes von
"Banane"
in der ListeObstkorb
. Kontrollieren Sie, dass Sie die richtigen Stellen gefunden haben, indem Sie die Indizes sowie die zugehörigen Werte ausgeben. - Löschen Sie das vorletzte Element aus
"Obstkorb"
und speichern Sie dieses in einer beliebigen Variablen ab. - Geben Sie die Länge der Liste aus.
- Fügen Sie die Zahl
5
ans Ende der Liste an. - Multiplizieren Sie die Liste mit
2
und speichern Sie die neue Liste in der VariablenObstkorb2
. - Erstellen Sie eine neue Liste
Werte
mit beliebigen Einträgen. Addieren Sie die ListenObstkorb
undWerte
und geben Sie das Ergebnis aus. - Erstellen Sie eine neue Liste
doppel_Liste
, die die ListeObstkorb
als 0. Element und die ListeWerte
als 1. Element enthält. D.h.doppel_Liste
ist eine Liste, die Listen enthält. - Erstellen Sie eine explizite Kopie der Liste
Obstkorb
und nennen Sie dieseObstkorb_Kopie
- Überprüfen Sie auf mindestens eine Art, dass eine Veränderung an der Kopie die ursprüngliche Liste tatsächlich nicht verändert.
Hinweis
Überprüfen Sie nach jedem Punkt durch Ausgabe in der Konsole, dass Ihr Code richtig funktioniert.
Hausaufgabe 2.2 (1 Punkt)
Drei Freunde nehmen bei einen 5km-Staffellauf teil. Die Liste
Laufzeiten
mit den Einträgen"Tobias : 27min ", "Alexander : 24.3 min", "Maria: 32 min "
beschreibt ihre Ergebnisse.
Definieren Sie die gegebene Liste
Laufzeiten
.Extrahieren Sie die Zahlenwerte aus den Strings der Liste und speichern Sie sie in den Variablen
Tobias
,Alexander
undMaria
als Gleitkommazahlen ab. Achten Sie darauf, dass die Strings beliebige Zahlen mit beliebig vielen Leerzeichen beinhalten können. Ein Ausgabe sollte dann wie folgt aussehen:In[1]:print(Tobias) 27.0Berechnen Sie die Summe der Laufzeiten und geben Sie das Ergebnis per
Erstellen Sie ein Dictionary
Laufzeiten_Dict
, das die VariablenTobias
,Alexander
undMaria
mit ihren jeweiligen Zahlenwerten enthält. Dabei soll der jeweilige Variablenname als String der Schlüssel sein. Für den Wert wird der jeweilige Zahlenwert als Gleitkommazahl zugeordnet. Das Dictionary sollte folgendermaßen aussehen:In[2]:print(Laufzeiten_Dict) {'Tobias': 27.0, 'Alexander': 24.3, 'Maria': 32.0}Errechnen Sie erneut die Summe der Laufzeiten. Verwenden Sie diesmal jedoch das Dictionary
Laufzeiten_Dict
für die Berechnung. Geben Sie das Ergebnis erneut perAngenommen es hätte noch ein vierter Läufer an der Staffel teilgenommen, der auch den Namen
Tobias
trägt, jedoch eine Laufzeit von 22 Minuten erreicht hat. Fügen Sie den entsprechenden Eintrag im Dictionary hinzu (Schlüssel:"Tobias"
, Wert:22
) und lassen Sie sich das neue Dictionary ausgeben. Beantworten Sie folgende Frage im Kommentar: Was passiert mit dem zugehörigen Wert, wenn in ein Dictionary ein bereits vorhandener Schlüssel hinzugefügt wird?
Hinweis
Um die Summe der Laufzeiten zu berechnen, erstellen Sie am besten zuerst eine Liste aller Werte des Dictionaries. Dann können Sie die Listenfunktion sum
verwenden um die Summe zu berechnen.
Hinweis
Stellen Sie sicher, dass Ihr Programm auch für beliebige Listen mit 3 Einträgen der gleichen Art funktioniert (andere Namen/Zeiten/Anzahl an Leerzeichen innerhalb der Strings).
13.3. Hausaufgabe 3¶
Hausaufgabe 3.1 (1 Punkt)
Gegeben ist ein DictionaryPakete
mit z.B. folgendem Inhalt:'163' : 4.2, '175' : 0.5, '214' : 12, '159' : 0.3
.
Die Schlüssel sind Strings und geben den Identifikationscode eines Pakets an. Der entsprechende Wert ist das Gewicht des Pakets in Kilogramm. Ab einem Gewicht von 2 kg
wird ein höherer Betrag für die Zustellung verlangt. Für Pakete, die leichter sind als 2 kg
ist die Zustellung billig. Eine Ausnahme bildet das Paket mit Identifikationsnummer '175'
. Für Pakete mit dieser Identifikationsnummer ist die Zustellung immer teuer.
Erstellen Sie zwei Listen,billig
undteuer
, die jeweils die Identifikationsnummern der Briefe enthalten, bei denen die Zustellung billig bzw. teuer ist.
- Gehen Sie wie folgt vor:
Legen Sie zwei leere Listen
billig
undteuer
an.Lesen Sie mit Hilfe einer Schleife die Identifikationsnummer und das Gewicht des Pakets aus. Definieren Sie dafür innerhalb der Schleife die Variablen
ID
undGewicht
.Wenn das Paket genau 2kg oder mehr wiegt oder die Identifikationsnummer
'175'
entspricht, fügen Sie die Identifikationsnummer zur Listeteuer
hinzu. Andernfalls fügen Sie die Identifikationsnummer des Pakets zur Listebillig
hinzu.Geben Sie beide Listen per
print
Befehl aus. Die Ausgabe sollte folgendermaßen aussehen:In[1]:print(billig, teuer) ['159'] ['163','175','214']
Hinweis
Stellen Sie sicher, dass Ihr Programm für beliebige Dictionaries (unterschiedliche Länge, unterschiedliche Einträge) funktioniert.
Hausaufgabe 3.2 (1 Punkt)
Gegeben ist eine Liste Zahlungen
, die als Einträge eine Liste mit Vornamen (str) und von der Person getätigte Zahlungen in Euro (int) enthält:
Zahlungen = [["Anna",60],
["Sarah",37],
["Marco",88],
["Stefan",100],
["Sebastian",22],
["Marco",70],
["Anna",120]]
Erstellen Sie ein Dictionary Zahlungen_Dict
welches als Schlüssel den Vornamen der Person enthält und als Wert die Summe der jeweiligen Zahlungen.
Gehen Sie dafür wie folgt vor:
- Erstellen Sie dazu zuerst ein leeres Dictionary
Zahlungen_Dict
. - Durchlaufen Sie die Liste
Zahlungen
und lesen Sie in jedem Schritt den Vornamen der Person sowie die jeweilige Höhe der Zahlungen aus der Liste aus. - Überprüfen Sie, ob der Vorname bereits im Dictionary vorhanden ist:
- Wenn der Vorname noch nicht vorhanden ist, fügen Sie im Dictionary einen neuen Eintrag hinzu, wobei der Vorname der Person der Schlüssel und die Höhe der Zahlung der Wert sein soll.
- Wenn der Vorname bereits im Dictionary vorhanden ist, soll nur der Wert des bestehenden Eintrags verändert werden. Die ausgelesene Zahlung soll dabei zu der Zahlung, das bereits als Wert im Dictionary gespeichert wurde, addiert werden.
Geben Sie das Dictionary mit Hilfe von
print
aus. Am Ende sollte das Dictionary folgendermaßen aussehen:In [1]: print(Zahlungen_Dict) {'Anna': 180, 'Sarah': 37, 'Marco': 158, 'Stefan': 100, 'Sebastian': 22}
Verwenden Sie das Dictionary um das Maximum der Zahlungen zu bestimmen. Speichern Sie die Zahl unter der Variable
Max_Zahlungen
ab. Geben Sie die maximale Zahlung mittels print-Befehl aus. Verwenden Sie dabei für die Formatierung die f-String Methode und geben Sie die Zahl mit zwei Kommastellen aus.
Hinweis
Um das Maximum der Zahlungen zu berechnen, erstellen Sie am besten zuerst eine Liste aller Werte des Dictionaries. Dann können Sie die Listenfunktion max
verwenden um das Maximum herauszufinden.
Hinweis
Stellen Sie sicher, dass Ihr Programm für beliebige Listen (unterschiedliche Länge, unterschiedliche Einträge) funktioniert.
13.4. Hausaufgabe 4¶
Hausaufgabe 4.1 (1 Punkt)
Definieren Sie eine Funktion Pruefung
, welche eine Liste Pruefungsantritte
und ein optionales Argument Bestehensgrenze
(Typ:int) übergeben bekommt. Die Liste Pruefungsantritte
enthält als Einträge jeweils eine Liste pro Person mit den Daten Vorname und erreichte Prüfungspunkte:
Pruefungsantritte = [["Anton",60],
["Natalia",37],
["Manuel",88],
["Heinrich",100],
["Christoph",22],
["Mario",70]]
Die Prüfung gilt als bestanden wenn zumindest 60 Punkte erreicht wurden. Das optionale Argument Bestehensgrenze
soll deswegen als default Wert auf die Zahl 60
gesetzt werden.
In der Funktion sollen nun aus der Liste Pruefungsantritte
die Namen aller Personen, die die Prüfung bestanden haben, gesucht werden und in eine neu erstellte Liste geschrieben werden. Die Funktion soll dann die neu erstellte Liste und die Anzahl der Personen in dieser Liste zurückgeben.
Wenden Sie nun die Funktion Pruefung
im Hauptteil ihres Skripts auf die Liste Pruefungsantritte
an. Rufen Sie dafür zuerst Ihre Funktion ohne Angabe des optionalen Arguments auf und lassen Sie sich die Liste und die Anzahl der Personen per print-Befehl ausgeben. Der Output sollte dann z.B. wie folgt aussehen:
In[1]: Liste1 = Pruefung(Pruefungsantritte)
In[2]: print(Liste1[0],Liste1[1])
['Anton', 'Manuel', 'Heinrich', 'Mario'] 4
Rufen Sie danach im Hauptteil Ihres Skripts Ihre Funktion mit Angabe des optionalen Arguments auf. Setzen Sie das optionale Argument Bestehensgrenze
auf eine beliebige Zahl wie zum Beispiel 90
und lassen Sie sich die Liste und die Anzahl der Personen erneut per print-Befehl ausgeben. In diesem Fall sollte der Output dann z.B. wie folgt aussehen:
In[3]: Liste2 = Pruefung(Pruefungsantritte,90)
In[4]: print(Liste2[0],Liste2[1])
['Heinrich'] 1
Hinweis
Stellen Sie sicher, dass Ihr Programm für beliebige Listen (unterschiedliche Länge, unterschiedliche Einträge) funktioniert.
13.5. Hausaufgabe 5¶
Hausaufgabe 5.1 (1 Punkt)
Ziel dieser Aufgabe ist es 3 Funktionen zu schreiben, mit denen eine Textdatei eingelesen, verarbeitet, und das Ergebnis abgespeichert werden kann. Die Funktionen sollen im Hauptteil des Programms auf eine Beispieldatei angewendet werden.
In diesem Beispiel gehen wir von mehreren Messreihen aus, die in einer Textdatei dokumentiert wurden. Sie finden dafür die Beispieldatei „messreihen.txt“ auf TUWEL. Jede Zeile enthält die Bezeichnung der Messreihe (z.B. „Messreihe 1“), gefolgt vom Datum (z.B. „21.8.2022“) und genau 3 Messwerten. Die einzelnen Einträge sind durch einen Strichpunkt (;
) voneinander getrennt. Eine Zeile der Datei sieht z.B. wie folgt aus:
Messreihe 1; 21.8.2022; 20.1; 20.3; 21.0
- Erstellen Sie eine Funktion
Datei_einlesen(filename)
, die die Messwerte aus einer Textdatei mit Namenfilename
einliest und die Daten als Dictionary zurückgibt. Als Key des Dictionaries verwenden Sie die Bezeichnung der Messreihe. Der Value ist eine Liste mit den Messwerten (Liste von float Variablen). Das Datum kann ingorniert werden. Gehen Sie davon aus, dass die Textdatei im selben Verzeichnis wie Ihr Python-Skript liegt. - Erstellen Sie eine Funktion
Berechne_mittelwerte(daten)
, die ein Dictionarydaten
übergeben bekommt. In dieser Funktion sollen 2 Listen erstellt werden:
bezeichnungen
enthält die Bezeichnung aller Messreihen als stringmittelwerte
enthält die Mittelwerte der jeweiligen Messreihen als float (Berechnung durch: Summe der Messwerte/Anzahl Messwerte)Die Funktion soll die beiden Listen abschließend zurückgeben.
Erstellen Sie eine Funktion
Datei_schreiben(bezeichnungen,mittelwerte,filename)
. Die Funktion liest die beiden Listenbezeichnungen
undmittelwerte
ein und speichert die Informationen in einer Textdatei mit Namenfilename
. Die Bezeichnung der Messreihe und deren Mittelwert sollen durch einen Doppelpunkt (:
) getrennt sein.Verwenden Sie nun Ihre 3 Funktionen, um die Beispieldatei
messreihen.txt
einzulesen (FunktionDatei_einlesen
), die Mittelwerte aller Messreihen zu bestimmen (FunktionBerechne_mittelwerte
), und das Ergebnis als Dateimittelwerte.txt
abzuspeichern (FunktionDatei_schreiben
). Eine Zeile der Dateimittelwerte.txt
sollte dann z.B. wie folgt aussehen:Messreihe 1: 20.47
Hinweis
Das Programm muss mit beliebigen Textdateien des oben genannten Formats funktionieren. Wenn Ihre Abgabe nur mit der Textdatei aus TUWEL funktioniert erhalten Sie keine Punkte.
13.6. Hausaufgabe 6¶
Hausaufgabe 6.1 (1 Punkt)
Erstellen Sie eine Klasse
Mitarbeiter
, die die die Attributename
,arbeitszeit
(Jahresarbeitszeit in Stunden), undgehalt
(Jahresgehalt in Euro) übergeben bekommt.gehalt
soll als privates Attribut gespeichert werden. Das Erstellen eines Objekts könnte z.B. so aussehen:In [1]: Mitarbeiter1 = Mitarbeiter("Magdalena Muster", 1680, 58800.0) In [2]: print(Mitarbeiter1.name,Mitarbeiter1.arbeitszeit) Magdalena Muster 1680.0
Schreiben Sie eine Methode
get_gehalt
, die das private Attributgehalt
zurückgibt.In [3]: print(Mitarbeiter1.get_gehalt()) 58800.0
Schreiben Sie eine Methode
get_stundenlohn
, die den Stundenlohn (gehalt/arbeitszeit) berechnet und zurückgibt. z.B.:In [4]: print(Mitarbeiter1.get_stundenlohn()) 35.0
Überladen Sie den print Operator (
__str__
), sodass der Name und Stundenlohn ausgegeben wird, wenn die Funktionprint
auf ein Objekt vom Typ Mitarbeiter angewandt wird:In [5]: print(Mitarbeiter1) Magdalena Muster, Stundenlohn 35.00 Euro/h
Schreiben Sie eine Methode
gehalt_anpassung
, die eine Gehaltsanpassung in Prozent (float) übergeben bekommt. Die Methode soll das Gehalt um diesen Prozentsatz erhöhen. z.B.:In [6]: Mitarbeiter1.gehalt_anpassung(10.0) In [7]: print(Mitarbeiter1.get_gehalt()) 64680.0 In [8]: print(Mitarbeiter1) Magdalena Muster, Stundenlohn 38.50 Euro/h
Hausaufgabe 6.2 (1 Punkt)
Erstellen Sie eine von
Mitarbeiter
abgeleitete KlasseProgrammierer
, die zusätzlich zu den Attributen vonMitarbeiter
eine Listeprogrammiersprachen
(liste von strings) übergeben bekommt. Außerdem soll die Anzahl der Programmiersprachen als Attributanzahl
gespeichert werden. Um die restlichen Attribute vonProgrammierer
, zu initialisieren, verwenden Sie den Konstruktor der KlasseMitarbeiter
. Das Erstellen einer Instanz der KlasseProgrammierer
könnte z.B. so aussehen:In [1]: Programmierer1 = Programmierer("Gustav Generisch", 1680, 84000.0,["C++","Python"]) In [2]: print(Programmierer1.programmiersprachen) ['C++', 'Python'] In [3]: print(Programmierer1.anzahl) 2
Überladen Sie den print-Operator (
__str__
) der KlasseProgrammierer
, sodass der Name, Stundenlohn und die Anzahl der Programmiersprachen ausgegeben wird, z.B.:In [4]: print(Programmierer1) Gustav Generisch, Stundenlohn 50.00 Euro/h, beherrscht 2 Programmiersprachen
Überladen Sie den Vergleichsoperator (
__lt__
), sodass zwei Objekte der Klasse Programmierer anhand der Anzahl von Programmiersprachen verglichen werden:In [5]: Programmierer2 = Programmierer("Peter Muster", 1680, 84000.0,["C++"]) In [6]: print(Programmierer1>Programmierer2) True In [7]: print(Programmierer1<Programmierer2) False
Schreiben Sie eine Klassenmethode
check
, die eine Programmiersprache als string übergeben bekommt. Die Methode überprüft, ob sich die Programmiersprache in der Listeprogrammiersprachen
befindet. Wenn ja, sollTrue
zurückgegeben werden, ansonstenFalse
. z.B.:In [8]: Programmierer1.check("Python") True In [9]: Programmierer2.check("Python") False
13.7. Hausaufgabe 7¶
Hausaufgabe 7.1 (1 Punkt)
Schreiben Sie basierend auf der Funktion Datei_einlesen
aus Hausaufgabe 5.1 eine Methode Datei_einlesen_check
. Diese Methode soll das selbe machen wie die Funktion Datei_einlesen
, aber zusätzlich überprüfen, ob die Information in der übergebenen Datei das richtige Format hat. Wenn nur einzelne Zeilen der Datei Formatfehler haben, sollen alle Messreihen gespeichert werden, für die Angaben im richtigen Format vorhanden sind (siehe Beispiele weiter unten).
Fangen Sie dazu die folgenden typischen Fehler mit Hilfe von try-except-else Blöcken ab:
- Die Datei könnte z.B. nicht existieren.
- Die Datei könnte anstatt Zahlen für die Messwerte etwas enthalten, das sich nicht zu einer Gleitkommazahl konvertieren lässt. Siehe z.B. die Testdatei
messreihen_fehlerhaft_v1.txt
auf TUWEL. - Die Datei könnte in einer Zeile falsche Trennzeichen, z.B. Beistriche (
,
) statt Strichpunkten (;
) enthalten bzw. eine falsche Anzahl an Angaben enthalten. Siehe z.B. die Testdateimessreihen_fehlerhaft_v2.txt
auf TUWEL.
Geben Sie eine Fehlermeldung aus, die die Art des Fehlers beinhaltet! (siehe Beispiele unten)
Hinweis
Am Besten Sie gehen wie folgt vor:
- Rufen Sie die Funktion mit einer Datei auf, die den gewünschten Fehler erzeugt (einige Dateien finden Sie auf TUWEL).
- Finden Sie den minimalen Codeblock, der den Fehler erzeugt.
- Schreiben Sie eine try-except Anweisung mit dem richtigen Fehlertyp.
- Überlegen Sie sich, welche Teile des Codes nur ausgeführt werden sollen, wenn KEIN Fehler aufgetreten ist. Diese Teile gehören in einen else-Block.
- Wenn ein Codeblock in mehreren try-Blöcken enthalten sein müsste: Verwenden Sie stattdessen einen try-Block mit mehreren except-Blöcken und einem else-Block!
Testen Sie Ihren Code mit einigen Beispielen. Wenn Ihre Funktion richtig funktioniert, sollten Sie in etwa folgende Ausgaben erhalten:
Bei einer nicht existierenden Datei, z.B.
messreihen_existiertnicht.txt
:In [1]: daten = Datei_einlesen_check("messreihen_existiertnicht.txt") Datei 'messreihen_existiertnicht.txt' nicht gefunden! In [2]: print(daten) {}Mit der Testdatei
messreihen_fehlerhaft_v1.txt
:In [1]: daten = Datei_einlesen_check("messreihen_fehlerhaft_v1.txt") Falscher Datentyp! Falscher Datentyp! In [2]: print(daten) {'Messreihe 1': [20.1, 20.3, 21.0], 'Messreihe 3': [20.2, 21.2, 21.0]}Mit der Testdatei
messreihen_fehlerhaft_v2.txt
:In [1]: daten = Datei_einlesen_check("messreihen_fehlerhaft_v2.txt") Falsche Trennzeichen oder falsche Anzahl von Werten! Falsche Trennzeichen oder falsche Anzahl von Werten! In [2]: print(daten) {'Messreihe 2': [21.5, 20.3, 19.3], 'Messreihe 3': [20.2, 21.2, 21.0]}
Hinweis
Bitte verwenden Sie ausschließlich die Lösungen und zur Verfügung gestellten Dateien aus TUWEL!
Hausaufgabe 7.2 (1 Punkt)
Verwenden Sie das Modul doctest
, um Ihre Klasse Mitarbeiter
aus Hausaufgabe 6.1 zu testen:
- Kopieren Sie hierfür die Lösung von Hausaufgabe 6.1 in ein neues Python-File.
- Schreiben Sie für alle Methoden der Klasse (also Konstruktor,
get_gehalt
,get_stundenlohn
,gehalt_anpassung
, und überladener print-Operator) jeweils einen Test. Das Testen von privaten Attributen des Konstruktors ist nicht so einfach - beschränken Sie sich beim Testen des Konstruktors daher auf die restlichen Attribute (name
,arbeitszeit
). - Führen Sie danach den doctest im Hauptteil des Skripts aus.
Hinweis
Es wird emfphohlen die Lösung von Hausaufgabe 6.1. aus TUWEL zu verwenden.
13.8. Hausaufgabe 8¶
Hausaufgabe 8.1
In dieser Hausaufgabe sollen Sie eine gegebene Funktion einlesen
(aus der Datei H8_1_Funktion.py
in TUWEL), sowie die Bibliotheken NumPy und Matplotlib verwenden, um die Entwicklung der Inflation im Jahr 2021 und 2022 zu berechnen und grafisch darzustellen.
Hierfür steht eine Textdatei preisentwicklung.txt
zur Verfügung, in der die Entwicklung des Milchpreises aus dem Supermarkt dokumentiert wurde. Jede Zeile der Textdatei enthält das Jahr, die Produktbezeichnung, sowie die Milchpreise für die Monate Jänner bis August des jeweiligen Jahres. z.B.:
2020; Milch; 1.16; 1.17; 1.18; 1.18; 1.18; 1.19; 1.19; 1.19
Gehen Sie nun wie folgt vor:
- Verwenden Sie die Funktion
Datei_einlesen
(ausH8_1_Funktion.py
von TUWEL) um die Dateipreisentwicklung.txt
als Dictionary einzulesen. Erstellen Sie danach 3 Listen:
liste_2020
: Enthält die Milchpreise pro Monat für das Jahr 2020liste_2021
: Enthält die Milchpreise pro Monat für das Jahr 2021liste_2022
: Enthält die Milchpreise pro Monat für das Jahr 2022
Wandeln Sie alle 3 Listen in NumPy-Arrays um und speichern Sie sie als
array_2020
,array_2021
,array_2022
. Importieren Sie dafür die entsprechende Bibliothek.Berechnen Sie nun die Inflationsrate für jedes Monat des Jahres 2022 und speichern Sie das Ergebnis als NumPy-Array
inflation_2022
. Die Inflationsrate jedes Monats ergibt sich aus der Preissteigerung im Vergleich zum selben Monat des Vorjahres in Prozent (z.B. inflation_jaenner_2022 = (preis_jaenner_2022-preis_jaenner_2021)/preis_jaenner_2021*100 ). Versuchen Sie, das neue Array komplett ohne zusätzliche Funktionen oder Schleifen zu berechnen!inflation_2022
sollte dann wie folgt aussehen:In [1]: inflation_2022 array([ 4.01823881, 3.419808 , 7.54386505, 6.82385029, 7.30207889, 8.94010068, 10.3441237 , 9.96024243])
Berechnen Sie analog zu Schritt 3 die Inflationsrate jedes Monats des Jahres 2021 und speichern Sie das Ergebnis als NumPy-Array
inflation_2021
.Vergleichen Sie nun die Entwicklung der Inflationsraten grafisch, in dem Sie die Arrays
inflation_2021
undinflation_2022
grafisch darstellen. Verwenden Sie dafür dieplot
Funktion der Bibliothek matplotlib (siehe Kapitel 12.2. im Skriptum). Ihr Ergebnis sollte dann in etwa wie folgt aussehen:
Hinweis
Um die Bezeichnungen der Monate auf der x-Achse einzufügen, können Sie eine Liste monate
erstellen, die die Bezeichnungen der Monate als strings beinhaltet, und der plot
Funktion als erstes Argument übergeben.