{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true, "pycharm": { "name": "#%% md\n" }, "slideshow": { "slide_type": "slide" } }, "source": [ "_Aufgabe 1_\n", "\n", "Schreiben Sie eine Funktion get_it_or_none1, 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 None.\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 get_it_or_none2 mit der gleichen\n", "Funktionalität. Allerdings verzichten Sie dieses Mal auf die Prüfung und Fangen\n", "eine evtl. auftretende Exception, um dann None 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 None 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", "get, 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", "dict.get( \\< key \\>, \\< default \\> ) \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 }