Skip to content
Snippets Groups Projects
Commit 1e850c7e authored by Simon Hachmeier's avatar Simon Hachmeier
Browse files

gendern

parent ffaba09b
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
<h1>Table of Contents<span class="tocSkip"></span></h1> <h1>Table of Contents<span class="tocSkip"></span></h1>
<div class="toc"><ul class="toc-item"><li><span><a href="#Aufgabe-1" data-toc-modified-id="Aufgabe-1-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Aufgabe 1</a></span></li><li><span><a href="#Aufgabe-2" data-toc-modified-id="Aufgabe-2-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Aufgabe 2</a></span></li><li><span><a href="#Aufgabe-3" data-toc-modified-id="Aufgabe-3-3"><span class="toc-item-num">3&nbsp;&nbsp;</span>Aufgabe 3</a></span></li></ul></div> <div class="toc"><ul class="toc-item"><li><span><a href="#Aufgabe-1" data-toc-modified-id="Aufgabe-1-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Aufgabe 1</a></span></li><li><span><a href="#Aufgabe-2" data-toc-modified-id="Aufgabe-2-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Aufgabe 2</a></span></li><li><span><a href="#Aufgabe-3" data-toc-modified-id="Aufgabe-3-3"><span class="toc-item-num">3&nbsp;&nbsp;</span>Aufgabe 3</a></span></li></ul></div>
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# 1. Hausaufgabe # 1. Hausaufgabe
### Lesen Sie sich die nachfolgenden Hinweise gut durch und folgen Sie den Anweisungen, um Missverständnisse zu vermeiden. ### Lesen Sie sich die nachfolgenden Hinweise gut durch und folgen Sie den Anweisungen, um Missverständnisse zu vermeiden.
Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe1.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode (#), um ihr Programm zu kommentieren. Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe1.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode (#), um ihr Programm zu kommentieren.
**Tipps und Anmerkungen**: **Tipps und Anmerkungen**:
- Es reicht, wenn ein Gruppenmitglied die Hausaufgabe einreicht. Passen Sie auf, dass Sie in moodle auf Abgabe drücken, damit es nicht nur ein Entwurf ist. - Es reicht, wenn ein Gruppenmitglied die Hausaufgabe einreicht. Passen Sie auf, dass Sie in moodle auf Abgabe drücken, damit es nicht nur ein Entwurf ist.
- Nutzen Sie das Wissen aus den bisher bearbeiteten Notebooks (1-3). - Nutzen Sie das Wissen aus den bisher bearbeiteten Notebooks (1-3).
- Nutzen Sie http://pythontutor.com, um ihren Code nachvollziehen zu können und Fehler zu finden! - Nutzen Sie http://pythontutor.com, um ihren Code nachvollziehen zu können und Fehler zu finden!
- Bitte ändern Sie den Dateinamen ihrer Hausaufgabe zu: **hausaufgabe1_nachnamePartner1_nachnamePartner2.ipynb** - Bitte ändern Sie den Dateinamen ihrer Hausaufgabe zu: **hausaufgabe1_nachnamePartnerIn1_nachnamePartnerIn2.ipynb**
- z.B. `hausaufgabe1_schwab_jaeschke.ipynb` - z.B. `hausaufgabe1_schwab_jaeschke.ipynb`
- Das können Sie einfach machen, indem Sie **jetzt** oben links auf `hausaufgabe1` klicken und den neuen Namen eingeben. - Das können Sie einfach machen, indem Sie **jetzt** oben links auf `hausaufgabe1` klicken und den neuen Namen eingeben.
- Bei (Verständnis-)Fragen können Sie mich **frühzeitig** und nicht am Abend des Abgabetages per E-Mail oder während der Sitzungen erreichen. - Bei (Verständnis-)Fragen können Sie mich **frühzeitig** und nicht am Abend des Abgabetages per E-Mail oder während der Sitzungen erreichen.
Wir wünschen viel Erfolg beim Lösen der Aufgaben! Wir wünschen viel Erfolg beim Lösen der Aufgaben!
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 1 ## Aufgabe 1
Was gibt jede der folgenden Anweisungen aus? Erklären Sie jeweils die Ausgabe. Was gibt jede der folgenden Anweisungen aus? Erklären Sie jeweils die Ausgabe.
- Welche Funktionen werden genutzt und was machen diese Funktionen? (die `print` -Funktion muss nicht erklärt werden). Achten Sie darauf, in welcher Reihenfolge die Anweisungen ausgeführt werden. - Welche Funktionen werden genutzt und was machen diese Funktionen? (die `print` -Funktion muss nicht erklärt werden). Achten Sie darauf, in welcher Reihenfolge die Anweisungen ausgeführt werden.
- Was ist die Ausgabe? Geben Sie Wert und Datentyp an. - Was ist die Ausgabe? Geben Sie Wert und Datentyp an.
- Nutzen Sie Kommentare wie im Beispiel beschrieben. - Nutzen Sie Kommentare wie im Beispiel beschrieben.
- Nutzen Sie **mehrere Zeilen pro Anweisung, damit Ihre Antwort in die Breite des Codeblocks passt** und man nicht hin- und herscrollen muss. (Sie finden heraus, was ich meine, wenn es passiert ;) ) - Nutzen Sie **mehrere Zeilen pro Anweisung, damit Ihre Antwort in die Breite des Codeblocks passt** und man nicht hin- und herscrollen muss. (Sie finden heraus, was ich meine, wenn es passiert ;) )
Beispiel Beispiel
``` ```
print("a"+"b") print("a"+"b")
# zwei Zeichenketten werden durch den Operator "+" verkettet # zwei Zeichenketten werden durch den Operator "+" verkettet
# Ausgabe: "ab", Datentyp: Zeichenkette/string # Ausgabe: "ab", Datentyp: Zeichenkette/string
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(2 + 3) print(2 + 3)
# #
# #
print(2.2 + 3.3) print(2.2 + 3.3)
# #
# #
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print('2' + '3') print('2' + '3')
# #
# #
print('2.2' + '3.3') print('2.2' + '3.3')
# #
# #
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(str(2) + str(3)) print(str(2) + str(3))
# #
# #
print(str(2.2) + str(3.3)) print(str(2.2) + str(3.3))
# #
# #
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(int('2') + int('3')) print(int('2') + int('3'))
# #
# #
print(int('2' + '3')) print(int('2' + '3'))
# #
# #
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(float('2') + float('3')) print(float('2') + float('3'))
# #
# #
print(float('2' + '3')) print(float('2' + '3'))
# #
# #
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(int(2.6 + 2.6)) print(int(2.6 + 2.6))
# #
# #
print(int(2.6) + int(2.6)) print(int(2.6) + int(2.6))
# #
# #
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 2 ## Aufgabe 2
**Tipp**: Wichtig bei den folgenden Aufgaben ist der Umgang mit Zeichenketten und der `print`-Funktion. Das haben Sie in den seminar-Notebooks schon gelernt. Gehen Sie diese zu Beginn der Hausaufgabe noch einmal durch und achten Sie, mit welchen **Operatoren** man Zeichenketten zusammenfügen und verketten kann. **Tipp**: Wichtig bei den folgenden Aufgaben ist der Umgang mit Zeichenketten und der `print`-Funktion. Das haben Sie in den seminar-Notebooks schon gelernt. Gehen Sie diese zu Beginn der Hausaufgabe noch einmal durch und achten Sie, mit welchen **Operatoren** man Zeichenketten zusammenfügen und verketten kann.
### Aufgabe 2a ### Aufgabe 2a
Ihre Aufgabe ist es, eine Funktion `boxprint` zu implementieren, die eine als Argument übergegebene Zeichenkette innerhalb einer Box ausgibt. Die horizontalen Linien der Box sollen durch `-` erzeugt werden, die vertikalen Linien durch `|` und die Ecken durch `+`. Zwischen der Zeichenkette und dem linken und rechten Rand der Box soll jeweils genau ein Leerzeichen stehen. Ihre Aufgabe ist es, eine Funktion `boxprint` zu implementieren, die eine als Argument übergegebene Zeichenkette innerhalb einer Box ausgibt. Die horizontalen Linien der Box sollen durch `-` erzeugt werden, die vertikalen Linien durch `|` und die Ecken durch `+`. Zwischen der Zeichenkette und dem linken und rechten Rand der Box soll jeweils genau ein Leerzeichen stehen.
Beispiel: Bei Übergabe des Arguments `Hello World!` soll die Funktion folgende Ausgabe erzeugen: Beispiel: Bei Übergabe des Arguments `Hello World!` soll die Funktion folgende Ausgabe erzeugen:
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
``` ```
+--------------+ +--------------+
| Hello World! | | Hello World! |
+--------------+ +--------------+
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Überlegen Sie zunächst, wie Sie das Problem lösen könnten und beschreiben Sie hier kurz ihre Überlegungen bzw. ihr Vorgehen: Überlegen Sie zunächst, wie Sie das Problem lösen könnten und beschreiben Sie hier kurz ihre Überlegungen bzw. ihr Vorgehen:
- -
- -
- -
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
def boxprint(zeichenkette): def boxprint(zeichenkette):
'''Die Funktion nimmt eine Zeichenkette entgegen und gibt '''Die Funktion nimmt eine Zeichenkette entgegen und gibt
die Zeichenkette innerhalb einer Textbox aus. die Zeichenkette innerhalb einer Textbox aus.
''' '''
pass # Diese Zeile können Sie bei der Implementierung löschen pass # Diese Zeile können Sie bei der Implementierung löschen
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Funktionsaufrufe # Funktionsaufrufe
boxprint("Hello World!") boxprint("Hello World!")
boxprint("Das Reh springt hoch, das Reh springt weit. Warum auch nicht, es hat ja Zeit.") boxprint("Das Reh springt hoch, das Reh springt weit. Warum auch nicht, es hat ja Zeit.")
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Schreiben Sie hier zwei Funktionsaufrufe der Funktion mit eigenen Argumenten # Schreiben Sie hier zwei Funktionsaufrufe der Funktion mit eigenen Argumenten
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 2b ### Aufgabe 2b
Mit dem Linux-Programm [cowsay](https://en.wikipedia.org/wiki/Cowsay) kann man verschiedene Tiere "Sprüche klopfen" lassen: Mit dem Linux-Programm [cowsay](https://en.wikipedia.org/wiki/Cowsay) kann man verschiedene Tiere "Sprüche klopfen" lassen:
``` ```
________ ________
< Muuuh! > < Muuuh! >
-------- --------
\ ^__^ \ ^__^
\ (oo)\_______ \ (oo)\_______
(__)\ )\/\ (__)\ )\/\
||----w | ||----w |
|| || || ||
``` ```
Schreiben Sie eine Funktion `stegosay`, die einen als Argument übergebenen Text folgendermaßen ausgibt: Schreiben Sie eine Funktion `stegosay`, die einen als Argument übergebenen Text folgendermaßen ausgibt:
``` ```
___________________________ ___________________________
( Wo bleibt mein Frühstück? ) ( Wo bleibt mein Frühstück? )
--------------------------- ---------------------------
o . . o . .
o / `. .' ' o / `. .' '
o .---. < > < > .---. o .---. < > < > .---.
o | \ \ - ~ ~ - / / | o | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~ _____ ..-~ ~-..-~
| | \~~~\.' `./~~~/ | | \~~~\.' `./~~~/
--------- \__/ \__/ --------- \__/ \__/
.' O \ / / \ ' .' O \ / / \ '
(_____, `._.' | } \/~~~/ (_____, `._.' | } \/~~~/
`----. / } | / \__/ `----. / } | / \__/
`-. | / | / `. ,~~| `-. | / | / `. ,~~|
~-.__| /_ - ~ ^| /- _ `..-' ~-.__| /_ - ~ ^| /- _ `..-'
| / | / ~-. `-. _ _ _ | / | / ~-. `-. _ _ _
|_____| |_____| ~ - . _ _ _ _ _> |_____| |_____| ~ - . _ _ _ _ _>
``` ```
Nutzen Sie dazu Ihre bei der Programmierung von `boxprint` gesammelte Erfahrung. Auch hier soll das Argument eine variable Länge aufweisen können, die "Sprechbox" soll sich anpassen. Nutzen Sie dazu Ihre bei der Programmierung von `boxprint` gesammelte Erfahrung. Auch hier soll das Argument eine variable Länge aufweisen können, die "Sprechbox" soll sich anpassen.
**Achung**: Die Denkblase ist verschieden zu der Sprachblase auf Aufgabe 2a. **Achung**: Die Denkblase ist verschieden zu der Sprachblase auf Aufgabe 2a.
**Tipp**: Man kann den Stegosaurus im Editiermodus kopieren, Sie müssen nicht jedes Zeichen selbst abtippen. **Tipp**: Man kann den Stegosaurus im Editiermodus kopieren, Sie müssen nicht jedes Zeichen selbst abtippen.
Durch Durch
``` ```
''' '''
Dinoabbildung Zeile 1 Dinoabbildung Zeile 1
Dinoabbildung Zeil 2 Dinoabbildung Zeil 2
... ...
Dinoabbildung Zeile ... Dinoabbildung Zeile ...
''' '''
``` ```
können Sie den Dino vollständig im Editormodus dieses Blocks herauskopieren und in Ihre Funktion einfügen. können Sie den Dino vollständig im Editormodus dieses Blocks herauskopieren und in Ihre Funktion einfügen.
Freiwillige Erweiterung für Fortgeschrittene: Erweitern Sie die Funktion um ein Argument, mit dem eine maximale Breite (Anzahl Zeichen) übergeben werden kann, so dass die ausgegebene Box nicht breiter ist. Implementieren Sie dann die Behandlung von Zeichenketten, die länger als die vorgegebene Breite sind. Sie haben zwei Möglichkeiten: a) die Zeichenkette abschneiden, b) die Zeichenkette umbrechen. Entscheiden Sie sich für eine der beiden Varianten. Hinweis: auf die ersten `k` Zeichen einer Zeichenkette `s` können Sie mittels `s[0:k]` zugreifen. Analog können Sie auf das 2. bis 4. Zeichen mittels `s[1:4]` zugreifen, usw. Freiwillige Erweiterung für Fortgeschrittene: Erweitern Sie die Funktion um ein Argument, mit dem eine maximale Breite (Anzahl Zeichen) übergeben werden kann, so dass die ausgegebene Box nicht breiter ist. Implementieren Sie dann die Behandlung von Zeichenketten, die länger als die vorgegebene Breite sind. Sie haben zwei Möglichkeiten: a) die Zeichenkette abschneiden, b) die Zeichenkette umbrechen. Entscheiden Sie sich für eine der beiden Varianten. Hinweis: auf die ersten `k` Zeichen einer Zeichenkette `s` können Sie mittels `s[0:k]` zugreifen. Analog können Sie auf das 2. bis 4. Zeichen mittels `s[1:4]` zugreifen, usw.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
print(""" print("""
o . . o . .
o / `. .' ' o / `. .' '
o .---. < > < > .---. o .---. < > < > .---.
o | \ \ - ~ ~ - / / | o | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~ _____ ..-~ ~-..-~
| | \~~~\.' `./~~~/ | | \~~~\.' `./~~~/
--------- \__/ \__/ --------- \__/ \__/
.' O \ / / \ ' .' O \ / / \ '
(_____, `._.' | } \/~~~/ (_____, `._.' | } \/~~~/
`----. / } | / \__/ `----. / } | / \__/
`-. | / | / `. ,~~| `-. | / | / `. ,~~|
~-.__| /_ - ~ ^| /- _ `..-' ~-.__| /_ - ~ ^| /- _ `..-'
| / | / ~-. `-. _ _ _ | / | / ~-. `-. _ _ _
|_____| |_____| ~ - . _ _ _ _ _> |_____| |_____| ~ - . _ _ _ _ _>
""") """)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
def stegosay(z): def stegosay(z):
'''Diese Funktion nimmt eine Zeichenkette entgegen und gibt '''Diese Funktion nimmt eine Zeichenkette entgegen und gibt
die Zeichenkette innerhalb einer Denkblase eines Dinos wieder aus. die Zeichenkette innerhalb einer Denkblase eines Dinos wieder aus.
In dieser Funktion soll der Dinosaurier inklusive der Denkblase ausgegeben werden. In dieser Funktion soll der Dinosaurier inklusive der Denkblase ausgegeben werden.
''' '''
pass # Diese Zeile können Sie bei der Implementierung löschen pass # Diese Zeile können Sie bei der Implementierung löschen
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu # Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
stegosay("Wo bleibt mein Frühstück?") stegosay("Wo bleibt mein Frühstück?")
stegosay("Auf einem Baum, da saß ein Specht. Der Baum war hoch, dem Specht war schlecht.") stegosay("Auf einem Baum, da saß ein Specht. Der Baum war hoch, dem Specht war schlecht.")
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 3 ## Aufgabe 3
### Aufgabe 3a ### Aufgabe 3a
Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π um 90° gedreht ausgibt, also ungefähr so: Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π um 90° gedreht ausgibt, also ungefähr so:
``` ```
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
``` ```
Hinweise: Hinweise:
- Lösen Sie diese Aufgabe mit Hilfe einer Schleife. Sie kennen die Syntax und Semantik der `while`-Schleife schon aus der Vorlesung. Sie funktioniert in Python genau so, wie sie für den Pseudocode definiert wurde. - Lösen Sie diese Aufgabe mit Hilfe einer Schleife. Sie kennen die Syntax und Semantik der `while`-Schleife schon aus der Vorlesung. Sie funktioniert in Python genau so, wie sie für den Pseudocode definiert wurde.
- Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde z.B. mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). Dies können Sie übernehmen. - Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde z.B. mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). Dies können Sie übernehmen.
- Damit Sie die Funktion `math.sin` nutzen können, müssen Sie anfangs das `math`-Modul importieren. - Damit Sie die Funktion `math.sin` nutzen können, müssen Sie anfangs das `math`-Modul importieren.
- Folgende Probleme müssen gelöst werden: - Folgende Probleme müssen gelöst werden:
- Umwandeln von Gleitkommazahlen in Ganzzahlen - Umwandeln von Gleitkommazahlen in Ganzzahlen
- Umwandeln von negativen in positive Zahlen - Umwandeln von negativen in positive Zahlen
- Nutzen Sie die `print`-Funktion, um die **Sternchen** (*) an verschiedenen Stellen zu zeichnen. - Nutzen Sie die `print`-Funktion, um die **Sternchen** (*) an verschiedenen Stellen zu zeichnen.
- Falls Sie das Problem nicht lösen können, fragen Sie im Seminar nach. Dort können Sie wertvolle Tipps erhalten. - Falls Sie das Problem nicht lösen können, fragen Sie im Seminar nach. Dort können Sie wertvolle Tipps erhalten.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Beispiel einer einfachen while-Schleife # Beispiel einer einfachen while-Schleife
i = 0 i = 0
while i < 5: while i < 5:
print(i) print(i)
i = i + 1 i = i + 1
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
import math import math
def sinprint(): def sinprint():
'''Diese Funktion zeichnet eine Sinus-Kurve ohne eine plot-Bibliothek.''' '''Diese Funktion zeichnet eine Sinus-Kurve ohne eine plot-Bibliothek.'''
pass # Diese Zeile können Sie bei der Implementierung löschen pass # Diese Zeile können Sie bei der Implementierung löschen
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Funktionsaufruf # Funktionsaufruf
sinprint() sinprint()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 3b ### Aufgabe 3b
Ändern Sie die Funktion `sinprint`, so dass eine beliebige Funktion gezeichnet werden kann. Diese Funktion sollte als Argument übergeben werden können. Also beispielsweise so: Ändern Sie die Funktion `sinprint`, so dass eine beliebige Funktion gezeichnet werden kann. Diese Funktion sollte als Argument übergeben werden können. Also beispielsweise so:
```python ```python
funcprint(math.sin) funcprint(math.sin)
``` ```
Ändern Sie gleich auch den Namen der Funktion zu `funcprint`, da sie ja jetzt nicht nur die Sinusfunktion ausgeben kann. (In der 2. Aufgabe des 3. Jupyter-Notebooks haben wir die Funktion `do_twice` kennengelernt - dort sehen Sie, wie Sie Funktionen als Argumente übergeben und verwenden können.) Ändern Sie gleich auch den Namen der Funktion zu `funcprint`, da sie ja jetzt nicht nur die Sinusfunktion ausgeben kann. (In der 2. Aufgabe des 3. Jupyter-Notebooks haben wir die Funktion `do_twice` kennengelernt - dort sehen Sie, wie Sie Funktionen als Argumente übergeben und verwenden können.)
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
import math import math
def funcprint(func): def funcprint(func):
'''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet '''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet
die Funktionskurve die Funktionskurve
''' '''
pass # Diese Zeile können Sie bei der Implementierung löschen pass # Diese Zeile können Sie bei der Implementierung löschen
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Funktionsaufruf # Funktionsaufruf
funcprint(math.sin) funcprint(math.sin)
funcprint(math.cos) funcprint(math.cos)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 3c ### Aufgabe 3c
Wenn alles geklappt hat, enthält Ihre Funktion jetzt einige Werte, die als Literale angegeben sind, z.B. Wenn alles geklappt hat, enthält Ihre Funktion jetzt einige Werte, die als Literale angegeben sind, z.B.
- den Anfangs- und Endwert des Intervalls, in dem die Funktion gezeichnet werden soll - den Anfangs- und Endwert des Intervalls, in dem die Funktion gezeichnet werden soll
- die Schrittweite - die Schrittweite
- die Verschiebung des Nullpunkts - die Verschiebung des Nullpunkts
- Skalierung in Richtung der x-Achse (Stauchung, Streckung) - Skalierung in Richtung der x-Achse (Stauchung, Streckung)
- Skalierung in Richtung der y-Achse (Stauchung, Streckung) - Skalierung in Richtung der y-Achse (Stauchung, Streckung)
Erweitern Sie die Funktion `funcprint`, so dass alle diese Werte als Argumente übergeben werden können. Erweitern Sie die Funktion `funcprint`, so dass alle diese Werte als Argumente übergeben werden können.
Fangen Sie mit einem Parameter an und versuchen Sie nach und nach alle Parameter einzusetzen. Falls die nicht funktioniert, rufen Sie Ihre Funktion mit den Parametern auf, die funktionieren. Fangen Sie mit einem Parameter an und versuchen Sie nach und nach alle Parameter einzusetzen. Falls die nicht funktioniert, rufen Sie Ihre Funktion mit den Parametern auf, die funktionieren.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
import math import math
def funcprint_advanced(func, start, end, step, shift, scale_y): def funcprint_advanced(func, start, end, step, shift, scale_y):
'''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet '''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet
die Funktionskurve. Zudem nimmt die Funktion mehrere Parameter entgegen, die die Kurve verändern können. die Funktionskurve. Zudem nimmt die Funktion mehrere Parameter entgegen, die die Kurve verändern können.
''' '''
pass # Diese Zeile können Sie bei der Implementierung löschen pass # Diese Zeile können Sie bei der Implementierung löschen
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ```
# Funktionsrauf # Funktionsrauf
funcprint_advanced(math.cos, 2, 10, 0.1, 30, 5) funcprint_advanced(math.cos, 2, 10, 0.1, 30, 5)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
![Smiley](https://upload.wikimedia.org/wikipedia/commons/0/0f/Face-glasses.svg) ![Smiley](https://upload.wikimedia.org/wikipedia/commons/0/0f/Face-glasses.svg)
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
![CC-BY-NC](https://scm.cms.hu-berlin.de/ibi/python/-/raw/master/img/cc-by-nc.png) ![CC-BY-NC](https://scm.cms.hu-berlin.de/ibi/python/-/raw/master/img/cc-by-nc.png)
Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen. Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment