Remove all exercises as they were moved to the exercise notebook.

This commit is contained in:
2023-02-07 11:30:25 +01:00
parent d20038520c
commit 02018561b0
10 changed files with 0 additions and 1351 deletions
-234
View File
@@ -1,234 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 1_\n",
"\n",
"Schreiben Sie eine Funktion <code>get_it_or_none1</code>, die ein Dictionary und einen\n",
"Schlüsselwert als Parameter erhält. Sie soll den im Dictionary gespeicherten Wert\n",
"zurückgeben, wenn er enthalten ist, andernfalls <code>None</code>.\n",
"\n",
"Vermeiden Sie bei der Implementierung das Auftreten einer Exception, indem Sie vor\n",
"dem Zugriff prüfen, ob der Schlüssel enthalten ist."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"def get_it_or_none1(dict_arg, key):\n",
" if key in dict_arg:\n",
" return dict_arg[key]\n",
" else:\n",
" return None\n",
" \n",
"my_dict = {'a': 1, 2: 'b'}\n",
"print(get_it_or_none1(my_dict, 'a'))\n",
"print(get_it_or_none1(my_dict, 'b'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 2_\n",
"\n",
"Implementieren Sie eine Funktion <code>get_it_or_none2</code> mit der gleichen\n",
"Funktionalität. Allerdings verzichten Sie dieses Mal auf die Prüfung und Fangen\n",
"eine evtl. auftretende Exception, um dann <code>None</code> zurückzugeben."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"def get_it_or_none2(dict_arg, key):\n",
" try:\n",
" return dict_arg[key]\n",
" except:\n",
" return None\n",
" \n",
"my_dict = {'a': 1, 2: 'b'}\n",
"print(get_it_or_none2(my_dict, 'a'))\n",
"print(get_it_or_none2(my_dict, 'b'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 3_\n",
"\n",
"Überprüfen Sie die Laufzeit der beiden Varianten, indem Sie jede Funktion\n",
"10000-mal so aufrufen, dass <code>None</code> zurückgegeben wird. Was ist schneller?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import timeit\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import timeit\n",
"\n",
"my_dict = {}\n",
"print(f'get_it_or_none1:: {timeit.timeit(lambda: get_it_or_none1(my_dict, 0), number=10000)}')\n",
"print(f'get_it_or_none2:: {timeit.timeit(lambda: get_it_or_none2(my_dict, 0), number=10000)}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 4_\n",
"\n",
"Tatsächlich besitzt ein Python-Dictionary eine bisher nicht eingeführte Methode\n",
"<code>get</code>, der neben dem Schlüssel auch ein Default-Wert übergeben werden kann,\n",
"der zurückgegeben wird, wenn der Schlüssel nicht enthalten ist.\n",
"\n",
"<code>dict.get( \\< key \\>, \\< default \\> ) </code>\n",
"\n",
"Überprüfen Sie auch die Laufzeit dieses Ansatzes."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"print(f'get_it_or_none2:: {timeit.timeit(lambda: my_dict.get(0), number=10000)}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Wie erklären Sie sich die Ergebnisse?"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.9"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
-171
View File
@@ -1,171 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 1_\n",
"\n",
"Schreiben Sie eine Funktion *prim_sum_up_to*, die die Summe aller Primzahlen von 2 bis *n* berechnet, wobei *n* als\n",
"Parameter übergeben wird."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"def prim_sum_up_to(end):\n",
" prims = []"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"def prim_sum_up_to(n):\n",
" result = 0\n",
" for m in range(2, n+1):\n",
" if is_prim(m):\n",
" result += m\n",
" return result\n",
"\n",
"def is_prim(n):\n",
" divisor = 2\n",
" while divisor * divisor <= n:\n",
" if n % divisor == 0:\n",
" return False\n",
" divisor += 1\n",
" return True\n",
"\n",
"print(prim_sum_up_to(100))\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"_Aufgabe 2_\n",
"\n",
"Sobald Sie die Funktion mit größeren *n* aufrufen, steigt die Laufzeit des Programms an. Um zu verhindern,\n",
"dass der Anwender fälschlicherweise annimmt, dass das Programm abgestürzt ist, soll jede Sekunde ein\n",
"Stern ausgegeben werden, bis das Ergebnis vorliegt.\n",
"\n",
"Verwenden Sie hierfür das in der Standardbibliothek enthaltene Modul <code>datetime</code> und\n",
"importieren Sie daraus die Objekte <code>datetime</code> und <code>timedelta</code>.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"pycharm": {
"name": "#%%\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"from datetime import datetime, timedelta\n",
"\n",
"last_run = datetime.now()\n",
"intervall = timedelta(seconds=1)\n",
"\n",
"def do_only_every_second():\n",
" global last_run\n",
" if last_run + intervall > datetime.now():\n",
" return\n",
" print(\"*\", end='')\n",
" last_run = datetime.now()\n",
"\n",
"\n",
"def is_prim(n):\n",
" divisor = 2\n",
" while divisor * divisor <= n:\n",
" if n % divisor == 0:\n",
" return False\n",
" divisor += 1\n",
" do_only_every_second()\n",
" return True\n",
"\n",
"print(f'\\n{prim_sum_up_to(1000000)}')\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"pycharm": {
"name": "#%% md\n"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Vielleicht können Sie das Prinzip in einem zukünftigen Praktikum nutzen, wenn nicht bei jedem Schleifendurchlauf\n",
"etwas passieren soll...."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.9"
}
},
"nbformat": 4,
"nbformat_minor": 1
}