diff --git a/exercises/release/exercise-03/1__Types_Variables_Assignment_Functions.ipynb b/exercises/release/exercise-03/1__Types_Variables_Assignment_Functions.ipynb new file mode 100644 index 0000000..51b2541 --- /dev/null +++ b/exercises/release/exercise-03/1__Types_Variables_Assignment_Functions.ipynb @@ -0,0 +1,1940 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Important reminder\n", + "\n", + "No lecture on 1 Nov. 2024 due to holiday.\n", + "\n", + "Lecture will be at start of tutorial on 4 Nov. 2024 (at the normal tutorial time and loaction, namely 14:15 in the Computer Pool in Bio 2/3 building.)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "feb8c8c062f27870a881fb5cdec17288", + "grade": false, + "grade_id": "cell-e925a1ea56688b2e", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# types, variables, assignment, indexing, slicing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "a6818b1513f33a9fe0bf7acfccae05b0", + "grade": false, + "grade_id": "cell-e21110f11e6d841a", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# You must run this cell, but you can ignore its contents.\n", + "\n", + "import hashlib\n", + "\n", + "def ads_hash(ty):\n", + " \"\"\"Return a unique string for input\"\"\"\n", + " ty_str = str(ty).encode()\n", + " m = hashlib.sha256()\n", + " m.update(ty_str)\n", + " return m.hexdigest()[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "3c4eb0b89407c062482c58173f398142", + "grade": false, + "grade_id": "cell-179bf0a88bde01d6", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Types\n", + "\n", + "Please answer the questions about Python types. Here we will use the spelling that Python uses for the types. Thus, we write `int` (not e.g. `integer`) and `str` (not e.g. `string`)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "48a5a741a9171f0c44ea7d44002f9a91", + "grade": false, + "grade_id": "cell-dffd2c4d1820c148", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "What is the type of the following:\n", + "\n", + "`10`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "b8237ddca4ebd3337ce49aa01dc7b16f", + "grade": false, + "grade_id": "cell-4c5bb2e24cd0b4b8", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "66e6386e4d530c75372efb17fcda7780", + "grade": true, + "grade_id": "cell-a534d123d26a6e42", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='f918a1a5ca'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "d9a1a48e57dc65debb3e4fdd14f2e7ea", + "grade": false, + "grade_id": "cell-02ed8f0df4c12fe7", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "What is the type of the following:\n", + " \n", + "`[1,2,3,4]`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "78cbd736a36839043363d6f4f20e629a", + "grade": false, + "grade_id": "cell-c53f7736f3ef6a4d", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "58d36d5b50fcc55ae9793388331fe6b2", + "grade": true, + "grade_id": "cell-0997a02809ef51df", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='981a391f15'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "cd1d7f6a91a6017d169f52de77e7da4a", + "grade": false, + "grade_id": "cell-df6875a7f373d1e8", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3\n", + "\n", + "What is the type of the following:\n", + " \n", + "`(1,2,3,4)`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "cd37b73cd9e4f9332765c8e7258c9f8e", + "grade": false, + "grade_id": "cell-cecba2dc8f2a1fcb", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "e0e760c595472d2219d694bcbbbfaf20", + "grade": true, + "grade_id": "cell-d8e48e520e48ecbb", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='99e8d934d2'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4\n", + "\n", + "What is the type of the following:\n", + " \n", + "`\"(1,2,3,4)\"`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "f9bb56f698045ee96f62056b9a84b3f7", + "grade": false, + "grade_id": "cell-01390d1edcadb200", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "b5de9ccebef40c9cb43b6c9ce5d329dd", + "grade": true, + "grade_id": "cell-81637082eb179284", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='17a0b2d655'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "2899094c16427790c9daf360a52a3b32", + "grade": false, + "grade_id": "cell-3e29ab113c157d73", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q5\n", + "\n", + "What is the type of the following:\n", + " \n", + "`'(1,2,3,4)'`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "88eabadf08779cc33162f0ad2ae7380c", + "grade": false, + "grade_id": "cell-d6436534e3fbc839", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "a45d9fc86ee9ed5587b243bff8d2b15a", + "grade": true, + "grade_id": "cell-0e5bfe7fc5f7997b", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='17a0b2d655'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "b45ac0e251ddf66b25e9d00281273e1d", + "grade": false, + "grade_id": "cell-2e6d7d11312ed89d", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Variables and assignment\n", + "\n", + "The first questions are a review." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "e00346d2e1ce1e18a61b6909cd2ac3c8", + "grade": false, + "grade_id": "cell-803f832c65529b6d", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " x = 10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "44799b1ef90e8d95dbc6391bd0d7546f", + "grade": false, + "grade_id": "cell-9de8d3cdd252995f", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "19547368c449276ee343818d3f43e68c", + "grade": true, + "grade_id": "cell-1ff60a7adb65c261", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='4a44dc1536'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "bc679f880224df909a7e7e952286d83d", + "grade": false, + "grade_id": "cell-fc696d04bf395ee4", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " x = 10\n", + " x = x+1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "e39267fe03ebd3c0e9b7a85c37ee50f9", + "grade": false, + "grade_id": "cell-dae207003862512c", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "0f3984d6dd481ac7018b450ae0e345e3", + "grade": true, + "grade_id": "cell-417322b120e1eab7", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='4fc82b26ae'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "a14a0a36e0544192718b8f20da77a18b", + "grade": false, + "grade_id": "cell-91ffd31eabd4a539", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " y = [1,2,3]\n", + " x = y" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "c92296150d5cf2e64d0fe72db346de62", + "grade": false, + "grade_id": "cell-bb17fad77ab0be6f", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "1c3e5190f8bd8d9198cda5b87f814ab4", + "grade": true, + "grade_id": "cell-a58b1d4c175e7894", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='a36b1f2c3f'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "aba535c18d1264af8719d9e11fc2518f", + "grade": false, + "grade_id": "cell-1ebdb5ef57dfd542", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Indexing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "7f2fe089ef50c76e87b5f911df7da29a", + "grade": false, + "grade_id": "cell-4c3dd2ac7883f171", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " y = [1,2,3]\n", + " x = y[1]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "175814371e7322889952dfc6904187e6", + "grade": false, + "grade_id": "cell-f5a2887e76c4321e", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "34cc21ea4ff0df098ad2bec6df9b13f5", + "grade": true, + "grade_id": "cell-5314eae929078d10", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='d4735e3a26'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "58cf86728d4adbe5020a5fe976e81b65", + "grade": false, + "grade_id": "cell-11f65d7c9b65371b", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " x = [1,2,3]\n", + " x[2] = 42" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "f139a052b3f098f1d0156ab114d703f5", + "grade": false, + "grade_id": "cell-8f0317f086f58de7", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "216d2445cb7c828666896761333e5465", + "grade": true, + "grade_id": "cell-5aa9f92a6e6efaa0", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='ac009e066e'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "66636bf3472db3baf12e1f9bc7512aea", + "grade": false, + "grade_id": "cell-31c1a47f78680df7", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " x = [1,2,3]\n", + " y = x\n", + " y[1] = 10" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "238c7d8db5d4a2a199515b7a5faee658", + "grade": false, + "grade_id": "cell-196bc244f1c8042b", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "6c3edbd2028a82bcfa73d8a0625e79db", + "grade": true, + "grade_id": "cell-39cc1a93f8204257", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='26796b1e40'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "4cc685a56340263df3a497af57aac484", + "grade": false, + "grade_id": "cell-bc63d89f8ac73cc7", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "adf8c69797ba236557a2c1caab99126f", + "grade": false, + "grade_id": "cell-59f33c7f581a643f", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " y = [1,2,3,4,5]\n", + " x = y[1:3]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "f637ef67986b4c900b85878ca71dff87", + "grade": false, + "grade_id": "cell-c5984871c943365a", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "30a6d2636e3009ee916c72bf53ba99c0", + "grade": true, + "grade_id": "cell-f9f8e930e5642969", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='5bf775530e'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "3824757d1efe646786fdbcb3fab945cd", + "grade": false, + "grade_id": "cell-5b06ff43b2d2b492", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " y = [1,2,3,4,5]\n", + " x = y[:3]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "9f23111daf3786ae73f6f884c2093aa0", + "grade": false, + "grade_id": "cell-7f8aa29eb2af0b7f", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "faed0fcdbd0a9969af2a81f71c9d6433", + "grade": true, + "grade_id": "cell-b9af5eba45805af2", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='a36b1f2c3f'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "74b1a1de3e27851bd96443dd1ea6efe6", + "grade": false, + "grade_id": "cell-bcddf90d39f648f9", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3\n", + "\n", + "Consider the following code. After this has run, what will the value of `x` be?\n", + "\n", + " y = [1,2,3,4,5]\n", + " x = y[-4:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "339cf09c7cb0bff2e0d84ccaf6e564e0", + "grade": false, + "grade_id": "cell-c921dc35e4b5e16e", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "d324a0c495111d640a651b4e4833897c", + "grade": true, + "grade_id": "cell-1ba38ad0ab22e86e", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means the answer in your previous cell was correct.\n", + "assert ads_hash(_)=='c4204dd36f'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "63ad92efcf89f078dbfc5f308afa6c80", + "grade": false, + "grade_id": "cell-ad8a134c4668a0d6", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Functions\n", + "\n", + "Theses questions should be a review for you" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "82ef4189cb805280307ed66360f94e66", + "grade": false, + "grade_id": "cell-45775cc0e99b3744", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "Define a function called `my_function` which returns its input multiplied by three." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "66a514c5f1ae96eafe57e9dcb28a0fbe", + "grade": false, + "grade_id": "cell-450afdf17d3b0b19", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "dc62aeff00921ed8c919316322b0130d", + "grade": true, + "grade_id": "cell-22f30ed9a48dc320", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means `my_function` does indeed return three times its input.\n", + "assert my_function(0)==0\n", + "assert my_function(1)==3\n", + "assert my_function(100)==300" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "85f2a1f575a1360d2faa9f990f3540a5", + "grade": false, + "grade_id": "cell-2ecaa6ef333bc779", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Here is a function definition for `a_times_b`, but this code has a problem. Fix the problem by defining a function `a_times_b` so that the tests below pass.\n", + "\n", + "```\n", + "def a_times_b(a,b):\n", + " a*b\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "7bfdadbc00c1d0849db85edf9fbe0f4f", + "grade": false, + "grade_id": "cell-7d6d492c969fd4cc", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "e089d5458ebc28b7a2d90070d3e5725c", + "grade": true, + "grade_id": "cell-739d96807909739e", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# If this runs without error, it means `a_times_b` does indeed function as expected.\n", + "assert a_times_b(0,10)==0\n", + "assert a_times_b(10,10)==100\n", + "assert a_times_b(10,0)==0\n", + "assert a_times_b(6,7)==42\n", + "assert a_times_b(7,6)==42" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "e55cc26c2db56cfb8863ec4faa5a18f2", + "grade": false, + "grade_id": "cell-c61877577f449834", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3\n", + "\n", + "Make a function named `append3` which assumes its input argument is a `list` and appends the number `3` to it. Your function should return `None`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "faa15ec47d0dbfe8cd1b715c63e96be0", + "grade": false, + "grade_id": "cell-af763dc40964a8bd", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "127217d692d06f3e6fef1226d7f5f0a8", + "grade": true, + "grade_id": "cell-dfe77036dc289698", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "x = [1,4,10]\n", + "assert ads_hash(append3(x))=='dc937b5989'\n", + "assert ads_hash(x)=='c2a0352fa1'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "b85de81bede4e1c22e34eba4fa9e834f", + "grade": false, + "grade_id": "cell-2a1fc2dc6eef9997", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Plotting" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "51f1e89b4312ff4265dd78ab7f264715", + "grade": false, + "grade_id": "cell-dd7086db2c448b9f", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "# Below, we will use matplotlib, so we need to import it here.\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "fb0499452cf4db190f987edc9e3ec906", + "grade": false, + "grade_id": "cell-44b659b622ef1e36", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "Given the following data, make a plot that looks like this:\n", + "\n", + "```\n", + "x=[1,2,3,4,5,6,7,8,9,10]\n", + "y=[0,4,0,3,3,0,3,4,5,2]\n", + "```\n", + "\n", + "\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "047c25ed895fced570c5642809361705", + "grade": true, + "grade_id": "cell-4283e6e240253fb1", + "locked": false, + "points": 1, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "9cb93b43a6268b51c0648b620f9dce0f", + "grade": false, + "grade_id": "cell-0fbdb51502e1211a", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Given the following data, make a plot that looks like this:\n", + "\n", + "```\n", + "x=[1,2,3,4,5,6,7,8,9,10]\n", + "y1=[0,4,0,3,3,0,3,4,5,2]\n", + "y2=[3,2,4,4,2,4,4,2,4,2]\n", + "```\n", + "\n", + "Hint, you can draw two lines by making two calls to `plt.plot()`.\n", + "\n", + "\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "f9a19bf9b59df7b822bc0c028fcde474", + "grade": true, + "grade_id": "cell-84eca66f88093703", + "locked": false, + "points": 1, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "ca22d24fb5378eed07a485eb88b1867e", + "grade": false, + "grade_id": "cell-911d3f2c6efedebc", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Scopes\n", + "\n", + "## Q1\n", + "\n", + "Fix the following code so that `myfunc` returns its input argument times `34`.\n", + "\n", + "```python\n", + "x = 100\n", + "\n", + "def myfunc(a):\n", + " return x*34\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "83bff64fd492c8387adc6eae81d0c99a", + "grade": false, + "grade_id": "cell-e62ac462a1466c64", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "86606dcc3536ef0bf3ca87b8e2b30944", + "grade": true, + "grade_id": "cell-66f596032f6fb1ae", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "assert ads_hash(myfunc(12))=='e6f47e008c'\n", + "assert ads_hash(myfunc(123))=='ecdf40652a'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "3e262069088d60ce5f55a1d10918be1c", + "grade": false, + "grade_id": "cell-9f94cfbb2410ebbe", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q2\n", + "\n", + "Modify the definition of the `func1` function so that it returns its input argument times `y` from the global scope. Keep the `y = 123` in your answer cell, but not in your function.\n", + "\n", + "```python\n", + "y = 123\n", + "\n", + "def func1(x):\n", + " x*2\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "c50c6d25bc200c9f85f84a036598c36d", + "grade": false, + "grade_id": "cell-f052e86277ac2b09", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "a3761860c61b2923e822b9e088d7a6b2", + "grade": true, + "grade_id": "cell-b6a2675dfc4862ea", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "assert ads_hash(func1(4))=='23e8b01758'\n", + "assert ads_hash(func1(10))=='22a2fa7d04'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "5424d6b42d0093782e844bd584bc31f2", + "grade": false, + "grade_id": "cell-d92472e0e9ea07f6", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q3 - Mixed function return values and \"side effects\"\n", + "\n", + "Consider this function:\n", + "\n", + "```python\n", + "a = []\n", + "def find_num(x,a):\n", + " a.append(x)\n", + " if x > 10:\n", + " return x/2\n", + " else:\n", + " return find_num(x+2,a)\n", + "```\n", + "\n", + "Notice that each time the function runs, `a` in the global scope will get the value of `x` appended to it.\n", + "\n", + "How many times does this function run when started with `x=2`? Hint: you can check the length of the list `a` after it finishes running. To get the length of a list named `a`, use `len(a)`.\n", + "\n", + "Put your answer in the variable `n_runs`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "9f76aa4d69e4c174f50af0351aeab5af", + "grade": false, + "grade_id": "cell-13834aebe49a3a45", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "a94d309cccd04ed16d5f426a4222bdd6", + "grade": true, + "grade_id": "cell-e350e97fb2289044", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "assert ads_hash(n_runs)=='e7f6c01177'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "848f8a5e0035e69950ac81788628ba7a", + "grade": false, + "grade_id": "cell-7d69975a16852789", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "# Fibonacci\n", + "\n", + "You may know the [Fibonacci sequence](https://en.wikipedia.org/wiki/Fibonacci_number).\n", + "\n", + "```\n", + "0 1 1 2 3 5 8 13\n", + "```\n", + "\n", + "Notice that, after the first two numbers, each number is the sum of the previous two.\n", + "\n", + "Let's make a Python program to generate it!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "a14b6c5fee6da74a0645c71bef10aa8a", + "grade": false, + "grade_id": "cell-a797acc2cd4e44c3", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "def exten_fib(a):\n", + " if len(a) < 2:\n", + " raise ValueError(\"not enough entries\")\n", + " num1 = a[-2]\n", + " num2 = a[-1]\n", + " a.append(num1+num2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "8882da877fb700c238229e815a5e1b56", + "grade": false, + "grade_id": "cell-2042696ad549c125", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "a=[0,1]\n", + "exten_fib(a)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Modify this cell to explore calling `exten_fib` many times.\n", + "\n", + "a=[0,1]\n", + "exten_fib(a)\n", + "exten_fib(a)\n", + "exten_fib(a)\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "markdown", + "checksum": "6228ad7111f31de2b49bfe0e59b8ecb1", + "grade": false, + "grade_id": "cell-5770be94eba1bc42", + "locked": true, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "source": [ + "## Q1\n", + "\n", + "What is the next Fibonacci number after 987? Put your answer in the variable `after987`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "67ec330ce05e67951769c6c089e2c45c", + "grade": false, + "grade_id": "cell-e7674742e304e19f", + "locked": false, + "schema_version": 3, + "solution": true, + "task": false + } + }, + "outputs": [], + "source": [ + "# YOUR CODE HERE\n", + "raise NotImplementedError()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "deletable": false, + "editable": false, + "nbgrader": { + "cell_type": "code", + "checksum": "270e0b3fcbbf7cb5723cfcdc53dc8a90", + "grade": true, + "grade_id": "cell-0f5d26430311d09e", + "locked": true, + "points": 1, + "schema_version": 3, + "solution": false, + "task": false + } + }, + "outputs": [], + "source": [ + "assert ads_hash(after987)=='eb57f94995'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "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.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}