You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

070a Uebung.ipynb 5.0KB

2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {
  6. "collapsed": true,
  7. "pycharm": {
  8. "name": "#%% md\n"
  9. },
  10. "slideshow": {
  11. "slide_type": "slide"
  12. }
  13. },
  14. "source": [
  15. "_Aufgabe 1_\n",
  16. "\n",
  17. "Schreiben Sie eine Funktion <code>get_it_or_none1</code>, die ein Dictionary und einen\n",
  18. "Schlüsselwert als Parameter erhält. Sie soll den im Dictionary gespeicherten Wert\n",
  19. "zurückgeben, wenn er enthalten ist, andernfalls <code>None</code>.\n",
  20. "\n",
  21. "Vermeiden Sie bei der Implementierung das Auftreten einer Exception, indem Sie vor\n",
  22. "dem Zugriff prüfen, ob der Schlüssel enthalten ist."
  23. ]
  24. },
  25. {
  26. "cell_type": "code",
  27. "execution_count": null,
  28. "metadata": {
  29. "slideshow": {
  30. "slide_type": "slide"
  31. }
  32. },
  33. "outputs": [],
  34. "source": []
  35. },
  36. {
  37. "cell_type": "code",
  38. "execution_count": null,
  39. "metadata": {
  40. "slideshow": {
  41. "slide_type": "slide"
  42. }
  43. },
  44. "outputs": [],
  45. "source": [
  46. "def get_it_or_none1(dict_arg, key):\n",
  47. " if key in dict_arg:\n",
  48. " return dict_arg[key]\n",
  49. " else:\n",
  50. " return None\n",
  51. " \n",
  52. "my_dict = {'a': 1, 2: 'b'}\n",
  53. "print(get_it_or_none1(my_dict, 'a'))\n",
  54. "print(get_it_or_none1(my_dict, 'b'))"
  55. ]
  56. },
  57. {
  58. "cell_type": "markdown",
  59. "metadata": {
  60. "slideshow": {
  61. "slide_type": "slide"
  62. }
  63. },
  64. "source": [
  65. "_Aufgabe 2_\n",
  66. "\n",
  67. "Implementieren Sie eine Funktion <code>get_it_or_none2</code> mit der gleichen\n",
  68. "Funktionalität. Allerdings verzichten Sie dieses Mal auf die Prüfung und Fangen\n",
  69. "eine evtl. auftretende Exception, um dann <code>None</code> zurückzugeben."
  70. ]
  71. },
  72. {
  73. "cell_type": "code",
  74. "execution_count": null,
  75. "metadata": {
  76. "slideshow": {
  77. "slide_type": "slide"
  78. }
  79. },
  80. "outputs": [],
  81. "source": []
  82. },
  83. {
  84. "cell_type": "code",
  85. "execution_count": null,
  86. "metadata": {
  87. "pycharm": {
  88. "name": "#%%\n"
  89. },
  90. "slideshow": {
  91. "slide_type": "slide"
  92. }
  93. },
  94. "outputs": [],
  95. "source": [
  96. "def get_it_or_none2(dict_arg, key):\n",
  97. " try:\n",
  98. " return dict_arg[key]\n",
  99. " except:\n",
  100. " return None\n",
  101. " \n",
  102. "my_dict = {'a': 1, 2: 'b'}\n",
  103. "print(get_it_or_none2(my_dict, 'a'))\n",
  104. "print(get_it_or_none2(my_dict, 'b'))"
  105. ]
  106. },
  107. {
  108. "cell_type": "markdown",
  109. "metadata": {
  110. "slideshow": {
  111. "slide_type": "slide"
  112. }
  113. },
  114. "source": [
  115. "_Aufgabe 3_\n",
  116. "\n",
  117. "Überprüfen Sie die Laufzeit der beiden Varianten, indem Sie jede Funktion\n",
  118. "10000-mal so aufrufen, dass <code>None</code> zurückgegeben wird. Was ist schneller?"
  119. ]
  120. },
  121. {
  122. "cell_type": "code",
  123. "execution_count": null,
  124. "metadata": {
  125. "slideshow": {
  126. "slide_type": "slide"
  127. }
  128. },
  129. "outputs": [],
  130. "source": [
  131. "import timeit\n"
  132. ]
  133. },
  134. {
  135. "cell_type": "code",
  136. "execution_count": null,
  137. "metadata": {
  138. "pycharm": {
  139. "name": "#%%\n"
  140. },
  141. "slideshow": {
  142. "slide_type": "slide"
  143. }
  144. },
  145. "outputs": [],
  146. "source": [
  147. "import timeit\n",
  148. "\n",
  149. "my_dict = {}\n",
  150. "print(f'get_it_or_none1:: {timeit.timeit(lambda: get_it_or_none1(my_dict, 0), number=10000)}')\n",
  151. "print(f'get_it_or_none2:: {timeit.timeit(lambda: get_it_or_none2(my_dict, 0), number=10000)}')\n"
  152. ]
  153. },
  154. {
  155. "cell_type": "markdown",
  156. "metadata": {
  157. "slideshow": {
  158. "slide_type": "slide"
  159. }
  160. },
  161. "source": [
  162. "_Aufgabe 4_\n",
  163. "\n",
  164. "Tatsächlich besitzt ein Python-Dictionary eine bisher nicht eingeführte Methode\n",
  165. "<code>get</code>, der neben dem Schlüssel auch ein Default-Wert übergeben werden kann,\n",
  166. "der zurückgegeben wird, wenn der Schlüssel nicht enthalten ist.\n",
  167. "\n",
  168. "<code>dict.get( \\< key \\>, \\< default \\> ) </code>\n",
  169. "\n",
  170. "Überprüfen Sie auch die Laufzeit dieses Ansatzes."
  171. ]
  172. },
  173. {
  174. "cell_type": "code",
  175. "execution_count": null,
  176. "metadata": {
  177. "pycharm": {
  178. "name": "#%%\n"
  179. },
  180. "slideshow": {
  181. "slide_type": "slide"
  182. }
  183. },
  184. "outputs": [],
  185. "source": []
  186. },
  187. {
  188. "cell_type": "code",
  189. "execution_count": null,
  190. "metadata": {
  191. "slideshow": {
  192. "slide_type": "slide"
  193. }
  194. },
  195. "outputs": [],
  196. "source": [
  197. "print(f'get_it_or_none2:: {timeit.timeit(lambda: my_dict.get(0), number=10000)}')\n"
  198. ]
  199. },
  200. {
  201. "cell_type": "markdown",
  202. "metadata": {
  203. "slideshow": {
  204. "slide_type": "slide"
  205. }
  206. },
  207. "source": [
  208. "Wie erklären Sie sich die Ergebnisse?"
  209. ]
  210. }
  211. ],
  212. "metadata": {
  213. "celltoolbar": "Slideshow",
  214. "kernelspec": {
  215. "display_name": "Python 3 (ipykernel)",
  216. "language": "python",
  217. "name": "python3"
  218. },
  219. "language_info": {
  220. "codemirror_mode": {
  221. "name": "ipython",
  222. "version": 3
  223. },
  224. "file_extension": ".py",
  225. "mimetype": "text/x-python",
  226. "name": "python",
  227. "nbconvert_exporter": "python",
  228. "pygments_lexer": "ipython3",
  229. "version": "3.9.9"
  230. }
  231. },
  232. "nbformat": 4,
  233. "nbformat_minor": 1
  234. }