From f9b4126d0eaf42675c5513c5575ea8aa32720113 Mon Sep 17 00:00:00 2001 From: Jonas Honermann Date: Sat, 2 Oct 2021 18:50:23 +0200 Subject: [PATCH] fixed ex. compile issues, replaced 2.5.1 --- exercises/Aufgaben.tex | 4 +-- exercises/sln/2-decision-tree.py | 30 ++++++++++++++++++ exercises/sln/2-var-case.tex | 1 + exercises/sln/2-var-naming.tex | 1 - exercises/task/2-decision-tree.tex | 49 ++++++++++++++++++++++++++++++ exercises/task/2-var-io.tex | 17 ++++++----- 6 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 exercises/sln/2-decision-tree.py create mode 100644 exercises/sln/2-var-case.tex delete mode 100644 exercises/sln/2-var-naming.tex create mode 100644 exercises/task/2-decision-tree.tex diff --git a/exercises/Aufgaben.tex b/exercises/Aufgaben.tex index 71477b4..4625477 100644 --- a/exercises/Aufgaben.tex +++ b/exercises/Aufgaben.tex @@ -74,7 +74,7 @@ \section{Zum Aufwärmen \stage1}\mccmd \vorkurstask{2-mc-if} \section{Variablen \stage1} - \vorkurstask{2-var-naming}\slnformat{\clearpage} + \vorkurstask{2-var-case}\slnformat{\clearpage} \vorkurstask{2-var-id}\vorkurstaskformat{\clearpage} \vorkurstask{2-var-assign}\slnformat{\clearpage} \section{Logische Operationen \stage1} @@ -83,7 +83,7 @@ \vorkurstask{2-var-io} \vorkurstask{2-stm-calc}\vorkurstaskformat{\clearpage}\slnformat{\clearpage} \section{Zum Weiterdenken \stage3} - \vorkurstask{2-cooking}\vorkurstaskformat{\clearpage}\slnformat{\clearpage} + \vorkurstask{2-decision-tree}\vorkurstaskformat{\clearpage}\slnformat{\clearpage} \vorkurstask{2-var-processor} \or%ex3 \section{Schleifen} diff --git a/exercises/sln/2-decision-tree.py b/exercises/sln/2-decision-tree.py new file mode 100644 index 0000000..98ca0da --- /dev/null +++ b/exercises/sln/2-decision-tree.py @@ -0,0 +1,30 @@ +# hier die Werte eintragen +wettervorhersage = "regen" +temperatur = 27 +luftfeuchtigkeit = "hoch" +windig = True +# Die Zahlenwerte, gegen die verglichen wird, +# können von den hier eingetragenen abweichen. +# Eure Lösung kann auch anders vorgehen, wenn die Testdaten +# korrekt erkannt werden, stimmt sie wahrscheinlich trotzdem. +if wettervorhersage == "regen": + freibad = False +else: + if temperatur > 24: + freibad = True + else: + if wettervorhersage == "sonnig": + if temperatur < 18 and windig: + freibad = False + else: + freibad = True + else: + if temperatur >= 18 and not windig: + freibad = True + else: + freibad = False + +if freibad: + print("Geh ins Freibad") +else: + print("Bleib zu Hause") diff --git a/exercises/sln/2-var-case.tex b/exercises/sln/2-var-case.tex new file mode 100644 index 0000000..9449944 --- /dev/null +++ b/exercises/sln/2-var-case.tex @@ -0,0 +1 @@ +Die Variable in Zeile 2 müsste mein\textbf{\_}alter heißen und nicht meinalter. diff --git a/exercises/sln/2-var-naming.tex b/exercises/sln/2-var-naming.tex deleted file mode 100644 index 93f2181..0000000 --- a/exercises/sln/2-var-naming.tex +++ /dev/null @@ -1 +0,0 @@ -Die Variable in Zeile 2 müsste mein\textbf{_}alter heißen und nicht meinalter. diff --git a/exercises/task/2-decision-tree.tex b/exercises/task/2-decision-tree.tex new file mode 100644 index 0000000..35d2a8e --- /dev/null +++ b/exercises/task/2-decision-tree.tex @@ -0,0 +1,49 @@ +\subsection{Entscheidungsbaum} +Wenn große Mengen von Daten verarbeitet werden müssen, geht es oft darum, diese in bestimmte Gruppen bzw. Klassen einzuteilen, zum Beispiel sollen häufig fehlerhafte Daten von korrekten getrennt werden. Eine mögliche Klassifikationsmethode, die für Tabellendaten genutzt werden kann, ist ein Entscheidungsbaum.\\ +\\ +Entscheidungsbäume funktionieren so, dass man für einen Datenpunkt (also eine Tabellenzeile) nach und nach die Spalteneinträge überprüft, bis man an einem Punkt ankommt, wo man sicher die Klasse festlegen kann. Das kann je nach dem, in welcher Reihenfolge man die Spalten betrachtet, unterschiedlich kompliziert sein (manchmal reicht sogar eine einzelne Spalte, um sicher zu wissen, welche Klasse es ist).\\ +\\ +Deine Aufgabe ist es, mit den Daten in der folgenden Tabelle einen Entscheidungsbaum zu konstruieren, der dir ausgibt, wann es sich lohnt, ins Freibad zu gehen (so, wie es in der Tabellenspalte ganz rechts festgelegt ist). Lege dazu am Besten pro Spalte eine Variable an, wo du dann Zeile für Zeile die Werte nacheinander durchprobieren kannst, um deine Implementierung zu testen. +\begin{table}[ht] + \centering + \begin{tabular}{|c|c|c|c|c|} + \hline + Wettervorhersage & Temperatur & Luftfeuchtigkeit & Wind & Freibad \\\hline + sonnig & 29 & hoch & False & Ja \\\hline + sonnig & 29 & mittel & True & Ja \\\hline + regen & 13 & mittel & True & Nein \\\hline + bewölkt & 22 & mittel & False & Ja \\\hline + regen & 13 & hoch & False & Nein \\\hline + bewölkt & 29 & mittel & False & Ja \\\hline + sonnig & 14 & mittel & True & Nein \\\hline + bewölkt & 27 & hoch & True & Ja \\\hline + bewölkt & 14 & hoch & True & Nein \\\hline + sonnig & 20 & mittel & False & Ja \\\hline + regen & 27 & mittel & False & Nein \\\hline + bewölkt & 14 & mittel & False & Nein \\\hline + regen & 20 & mittel & True & Nein \\\hline + sonnig & 22 & hoch & True & Ja \\\hline + sonnig & 14 & hoch & False & Ja \\\hline + bewölkt & 22 & mittel & True & Nein \\\hline + regen & 29 & mittel & True & Nein \\\hline + regen & 22 & hoch & False & Nein \\\hline + \end{tabular} +\end{table} +\newpage +Wenn du überprüfen möchtest, ob dein Entscheidungsbaum gut funktioniert, kannst du auch noch diese Datenpunkte ausprobieren: +\begin{table}[ht] + \centering + \begin{tabular}{|c|c|c|c|c|} + \hline + Wettervorhersage & Temperatur & Luftfeuchtigkeit & Wind & Freibad \\\hline + bewölkt & 15 & hoch & False & Nein \\\hline + sonnig & 28 & mittel & False & Ja \\\hline + sonnig & 21 & hoch & False & Ja \\\hline + regen & 27 & hoch & False & Nein \\\hline + regen & 20 & mittel & False & Nein \\\hline + bewölkt & 28 & hoch & False & Ja \\\hline + sonnig & 13 & hoch & True & Nein \\\hline + bewölkt & 21 & hoch & False & Ja \\\hline + regen & 27 & hoch & True & Nein \\\hline + \end{tabular} +\end{table} \ No newline at end of file diff --git a/exercises/task/2-var-io.tex b/exercises/task/2-var-io.tex index 8f0d94a..c286d59 100644 --- a/exercises/task/2-var-io.tex +++ b/exercises/task/2-var-io.tex @@ -3,13 +3,14 @@ \subsection{Variablen einlesen} \begin{itemize} \item deinen Namen als Zeichenkette \item dein Geburtsdatum als drei ganze Zahlen: Tag, Monat, Jahr -\end {itemize} -Insgesamt sollen also vier Eingaben verarbeiten werden. Achte dabei darauf, dass dein Programm die erwarteten Eingaben textuell klar strukturiert (Stichwort: Bedienerfreundlichkeit).\\Nachdem die letzte Eingabe verarbeitet ist, soll folgende Zeichenkette ausgegeben werden (wobei natürlich die Platzhalter zu ersetzen sind):\\Ausgabe: {\ttfamily{\dq}} hat am Geburtstag.{\ttfamily{\dq}} - -\textit{Hinweis:} Die Verarbeitung von Eingaben wird im Foliensatz 'Variablen.pdf' erläutert. - +\end{itemize} +Insgesamt sollen also vier Eingaben verarbeiten werden. Achte dabei darauf, dass dein Programm die erwarteten Eingaben textuell klar strukturiert (Stichwort: Bedienerfreundlichkeit).\\ +Nachdem die letzte Eingabe verarbeitet ist, soll folgende Zeichenkette ausgegeben werden (wobei natürlich die Platzhalter zu ersetzen sind):\\ +Ausgabe: {\ttfamily{\dq}} hat am Geburtstag.{\ttfamily{\dq}}\\ +\\ +\textit{Hinweis:} Die Verarbeitung von Eingaben wird im Foliensatz 'Variablen.pdf' erläutert.\\ +\\ \textit{Hinweis:} Variablen sollten in Strings nicht mit '\pythoninline{+}' eingefügt werden, stattdessen vor den String ein '\pythoninline{f}' setzen und an die entsprechenden Stellen im String \pythoninline{{variable0}}, \pythoninline{{variable1}}, ... einsetzen. \\ -Beispiel: \pythoninline{f"{variable0} ist kleiner {variable1}"} ergibt wenn variable0 = 4 und variable1 = 42 "4 ist kleiner 42"\\ +Beispiel: \pythoninline{f"{variable0} ist kleiner {variable1}"} ergibt wenn variable0 = 4 und variable1 = 42 {\ttfamily{\dq}}4 ist kleiner 42{\ttfamily{\dq}}\\ Alternativ kannst du die ältere format Methode verwenden. Dazu setzt du an die entsprechenden Stellen im String \pythoninline{{0}}, \pythoninline{{1}}, ... ein und trägst dahinter \pythoninline{.format(variable0, variable1, ...)} ein.\\ -Beispiel: \pythoninline{"{0} ist kleiner {1}".format(4, 42)} ergibt ebenfalls "4 ist kleiner 42" - +Beispiel: \pythoninline{"{0} ist kleiner {1}".format(4, 42)} ergibt ebenfalls {\ttfamily{\dq}}4 ist kleiner 42{\ttfamily{\dq}}