Skip to content

Instantly share code, notes, and snippets.

@bschne
Created November 7, 2019 12:23
Show Gist options
  • Select an option

  • Save bschne/fb2013b774d723866bef5ebfa0733f9b to your computer and use it in GitHub Desktop.

Select an option

Save bschne/fb2013b774d723866bef5ebfa0733f9b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 1: General Questions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**a)**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['a', 'b', 'c']"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = []\n",
"c.extend(\"abc\")\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ `extend(i)` takes an iterable `i`, iterates through each element in '`i`, and appends that element to the list `extend` was called on."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**b)**"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "unsupported operand type(s) for +: 'float' and 'str'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-2-2e82aa8d8bf3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;36m8\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m3.0\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\"9.1\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'float' and 'str'"
]
}
],
"source": [
"8 + 3.0 + \"9.1\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ addition does not work between strings and floats. To get this to work, you'd need to use `str(8 + 3.0) + \"9.1\"`, which would result in `\"11.09.1\"`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**c)**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 1, 2]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c1 = c2 = []\n",
"c1.append(1)\n",
"c2.append(2)\n",
"c1+c2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ lists are a reference type, that means that the first line assigns the **same** list in memory to the variables `c1` and `c2`. Therefore, both appends are done on the same list, and `c1 == [1,2]` and `c2 == [1,2]`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**d)**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d = [(1), (2, 3), (4, 5, 6)]\n",
"d[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ `(1)` contains only one element, therefore it is not interepreted as a tuple but only the integer `1`. To get a tuple with one element, you would need to write `(1, )`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**e)**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'r'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"names = [\n",
" [\"adrian\", \"alina\"],\n",
" [\"ben\", \"beat\"],\n",
" [\"cornelius\", \"christoph\"]\n",
"]\n",
"names[-1][-2][2:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['cornelius', 'christoph']\n",
"cornelius\n",
"r\n"
]
}
],
"source": [
"print(names[-1])\n",
"print(names[-1][-2])\n",
"print(names[-1][-2][2:3])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**f)**"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "list assignment index out of range",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-10-1470eac6ee61>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'h'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'b'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'g'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mIndexError\u001b[0m: list assignment index out of range"
]
}
],
"source": [
"f = ['a', 'h', 'b']\n",
"f[3] = 'g'\n",
"f"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ List indices start at 0, so 3 is out of the range of elements in `f`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**g)**"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g = 0\n",
"for n in [1, 2, 3.0, 4.0]:\n",
" if n % 2:\n",
" g += n\n",
" break\n",
"g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ In the first iteration of the loop, `n == 1`, therefore `n % 2 == 1`, and every number greater than zero is evaluated as `True` when converted to a boolean. This means `g += n` gets executed and `g == 1`. After this, `break` aborts the loop."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**h)**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'h' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-12-90d9bd267192>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mfun_h\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mh\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'h' is not defined"
]
}
],
"source": [
"def fun_h():\n",
" h = 0\n",
" for i in range(10):\n",
" h += i\n",
" \n",
"fun_h()\n",
"h"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ `h` is declared inside `fun_h()`, therefore it is not in the global scope and not accessible outside `fun_h()`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**i)**"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i = (lambda x: 0.5 * x**2, 4)\n",
"i[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ `i[1]` gets the second element from `i`, which is `4`. To call the lambda with 1 as a param, you would need to do the following:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.5"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i[0](1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**j)**"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = [1,2,3]\n",
"b = [1,2,3]\n",
"c = b\n",
"if a == c:\n",
" j = a is c\n",
"else:\n",
" j = b == c\n",
"j"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"_Explanation:_ Calling `==` on two lists compares them element-wise to determine if they are equal to eachother. Therefore, `j = a is c` gets executed. However, `is` checks if two variables are actually the same exact list in memory (i.e. the same instance), which in this case is `False`, since they were declared separately."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 2: Iteration"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def find_sum(l, target):\n",
" for i_idx, i in enumerate(l):\n",
" for j_idx, j in enumerate(l):\n",
" if (i_idx != j_idx) and (i + j == target):\n",
" return (i_idx, j_idx)\n",
"\n",
"assert find_sum([], 9) == None\n",
"assert find_sum([1], 2) == None\n",
"assert find_sum([1,1], 2) == (0, 1)\n",
"assert find_sum([1,7,2,11], 9) == (1, 2)\n",
"assert find_sum([1,2,3,4], 5) == (0, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 3: Working With Files"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 4: Binary Conversion"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 5: Recursive Functions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment