diff --git a/for-loops.ipynb b/for-loops.ipynb index d8dc735..91eb79f 100644 --- a/for-loops.ipynb +++ b/for-loops.ipynb @@ -22,9 +22,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "odysseus\n", + "neoptolemus\n", + "philoctetes\n" + ] + } + ], "source": [ "cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\"]\n", "\n", @@ -38,7 +48,7 @@ "source": [ "Let's break this down:\n", "\n", - "1. `cast = [\"Odysseus\", \"Neoptolemus\", \"Philoctetes\"]` declares a variable and assigns to it the list containing the `str`-names of the main cast of Sophocles' _Philoctetes_.\n", + "1. `cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\"]` declares a variable and assigns to it the list containing the `str`-names of the main cast of Sophocles' _Philoctetes_.\n", "2. `for character in cast:` opens a `for` loop, assigning each item in `cast` to the variable `character` — which is only defined inside the loop. The name `character` is unimportant — you could us any valid Pyhon variable. But it's good practice to use names that are descriptive of the contents.\n", "3. ` print(character)` prints the `str`-name of each `character`. Notice the indentation!\n", "\n", @@ -47,11 +57,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n" + ] + } + ], "source": [ - "# Hint: Use print(f\"{variable}\")" + "# Hint: Use print(f\"{variable}\")\n", + "for character in cast: \n", + " print(f\"{character.title}\")" ] }, { @@ -63,9 +85,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "odysseus\n", + "neoptolemus\n", + "philoctetes\n", + "And now the loop is done!\n" + ] + } + ], "source": [ "cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\"]\n", "\n", @@ -107,9 +140,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "odysseus\n", + "And now the loop is done!\n", + "neoptolemus\n", + "And now the loop is done!\n", + "philoctetes\n", + "And now the loop is done!\n" + ] + } + ], "source": [ "cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\"]\n", "\n", @@ -128,16 +174,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "odysseus\n", + "neoptolemus\n", + "philoctetes\n", + "antigone\n", + "antigone was played by a great actor!\n" + ] + } + ], "source": [ - "cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\"]\n", + "cast = [\"odysseus\", \"neoptolemus\", \"philoctetes\", \"antigone\",]\n", "\n", + "last_actor_seen = None\n", "for character in cast:\n", + " last_actor_seen = character\n", " print(character)\n", "\n", - "print(f\"{character} was played by a great actor!\")" + "print(f\"{last_actor_seen} was played by a great actor!\")" ] }, { @@ -158,9 +218,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 is greater than 0\n", + "2 is greater than 1\n", + "3 is greater than 2\n", + "4 is greater than 3\n" + ] + } + ], "source": [ "for value in range(1, 5):\n", " print(f\"{value} is greater than {value - 1}\")" @@ -175,9 +246,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 2, 4, 6, 8]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# We can use the third argument to adjust the size of each step\n", "list(range(0, 10, 2))" @@ -185,9 +267,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Or we can pass `range()` just one argument, and it will start from 0:\n", "list(range(10))" @@ -204,9 +297,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 3, 4, 5, 6]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "[value+2 for value in range(0, 5)]" ] @@ -229,9 +333,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 3, 4, 5, 6, 7]\n", + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]\n", + "[15, 16, 17, 18, 19]\n" + ] + } + ], "source": [ "numbers = list(range(0, 20))\n", "\n", @@ -267,6 +381,15 @@ "If you specify a slice without any indexes, you'll get a copy of the list." ] }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "new_list = numbers[:]" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -278,9 +401,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[21], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m my_tuple \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m)\n\u001b[0;32m----> 3\u001b[0m \u001b[43mmy_tuple\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m5\u001b[39m\n", + "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], "source": [ "my_tuple = (1, 2, 3)\n", "\n", @@ -304,11 +439,48 @@ "\n", "Matthes 2023, p. 67, Exercise 4-13." ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original Menu:\n", + "sushi\n", + "dumplings\n", + "rice\n", + "soup\n", + "salad\n", + "\n", + "Updated Menu:\n", + "sushi\n", + "dumplings\n", + "rice\n", + "chicken nuggets\n", + "ice cream\n" + ] + } + ], + "source": [ + "foods = ('sushi', 'dumplings', 'rice', 'soup', 'salad')\n", + "print ('Original Menu:')\n", + "for food in foods:\n", + " print(food)\n", + "\n", + "foods = ('sushi', 'dumplings', 'rice', 'chicken nuggets', 'ice cream')\n", + "print(\"\\nUpdated Menu:\")\n", + "for food in foods:\n", + " print(food)" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -322,7 +494,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.1" } }, "nbformat": 4,