From 1311019a6b3aa98ce97b67e2714d73a15248a039 Mon Sep 17 00:00:00 2001 From: Mohamad Traiki Date: Wed, 8 Oct 2025 17:59:24 +0200 Subject: [PATCH] submission lab day 3 --- main.ipynb | 607 ++++++++++++++++++++---- mod/__pycache__/testing.cpython-311.pyc | Bin 0 -> 24236 bytes 2 files changed, 527 insertions(+), 80 deletions(-) create mode 100644 mod/__pycache__/testing.cpython-311.pyc diff --git a/main.ipynb b/main.ipynb index b05630a..ef05994 100644 --- a/main.ipynb +++ b/main.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -37,19 +37,49 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'both values are equal'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#your code here\n", "def greater(a,b):\n", - "#your code here" + " if a > b:\n", + " return a\n", + " elif b > a:\n", + " return b\n", + " else:\n", + " return \"both values are equal\"\n", + "greater(5,5)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.077s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_greater(greater)" @@ -73,18 +103,50 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#your code here" + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#your code here\n", + "def greatest(num):\n", + " k=0\n", + " for i in num:\n", + " if i>k:\n", + " k=i\n", + " return k\n", + "\n", + "lista = [2,5,2,6,2,6,8,1,8]\n", + "greatest(lista)\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.108s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_greatest(greatest)" @@ -99,21 +161,50 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "40" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def sum_all(lst):\n", - "#your code here" + " s=0\n", + " for i in lst:\n", + " s+=i\n", + " return s\n", + "#your code here\n", + "listb = [2,5,2,6,2,6,8,1,8]\n", + "sum_all(listb)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.076s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_sum(sum_all)" @@ -128,21 +219,49 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "92160" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def mult_all(lst):\n", - "#your code here" + " k = 1\n", + " for i in lst:\n", + " k *= i\n", + " return k\n", + "#your code here\n", + "mult_all(listb)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.087s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_mult(mult_all)" @@ -157,19 +276,49 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Not a valid operation'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def oper_all(arr, oper = \"*\"):\n", - "#your code here" + " if oper == \"*\":\n", + " return mult_all(arr)\n", + " elif oper == \"+\":\n", + " return sum_all(arr)\n", + " else:\n", + " return \"Not a valid operation\"\n", + "#your code here\n", + "oper_all(listb, \"-\")" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.067s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_operations(oper_all)" @@ -184,12 +333,28 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3628800" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def factorial(n):\n", - "#your code here" + " if n == 0 or n == 1:\n", + " return 1\n", + " else:\n", + " return n * factorial(n - 1)\n", + "#your code here\n", + "factorial(10)" ] }, { @@ -213,9 +378,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.086s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_factorial(factorial)" @@ -232,19 +409,76 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 6, 9, 1, 3, 5, 2, 3, 7]\n", + "[2, 5, 2, 6, 2, 6, 8, 1, 8]\n" + ] + } + ], "source": [ + "lista=[2,6,9,1,3,5,2,3,7]\n", + "print(lista)\n", + "print(listb)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 6, 9, 1, 3, 5, 7]\n" + ] + } + ], + "source": [ + "\n", + "\n", "def unique(lst_un):\n", + " unique_list = [lst_un[0]]\n", + " for i in lst_un:\n", + " isunique = True\n", + " for j in unique_list: \n", + " if i == j:\n", + " isunique = False\n", + " break\n", + " if isunique:\n", + " unique_list.append(i)\n", + " return unique_list\n", + " \n", + " \n", + "listc = unique(lista)\n", + "print(listc)\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.329s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_unique(unique)" @@ -260,19 +494,84 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def mode_counter(arr):\n", + " n = 0\n", + " elements = []\n", + " value = []\n", + " count = 0\n", + "\n", + " for _ in arr:\n", + " n+=1\n", + "\n", + " i = 0\n", + "\n", + " while i < n:\n", + " element = arr[i]\n", + " j = 0\n", + " isunique = True\n", + "\n", + " while j < count:\n", + " if elements[j] == element:\n", + " value[j] +=1\n", + " isunique = False\n", + " break\n", + " \n", + " j+=1\n", + " \n", + " if isunique:\n", + " elements.append(element)\n", + " value.append(1)\n", + " count +=1\n", + " i+=1\n", + " max_count = 0\n", + " k = 1\n", + " while k < count:\n", + " if value[k] > value[max_count]:\n", + " max_count = k\n", + " k +=1\n", + "\n", + " return elements[max_count]\n", + "\n", + "\n", + "lista = [1,1,1,2,3,4,5,6,6,7]\n", + "\n", + "mode_counter(lista)\n", + " \n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.187s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_mode(mode_counter)" @@ -288,19 +587,64 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.3570226039551585" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def st_dev(list_sd):\n", - "#your code here" + " n = 0\n", + " mean = 0\n", + " sd = 0\n", + " for i in list_sd:\n", + " n+=1\n", + " mean += i\n", + " mean = mean / (n - 1)\n", + " for j in list_sd:\n", + " sd_j = mean - j\n", + " sd += sd_j ** 2\n", + " var = sd / (n -1)\n", + " return var ** 0.5\n", + "\n", + "\n", + "#your code here\n", + "st_dev(lista)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ".............." + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "......................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.231s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_stdev(st_dev)" @@ -315,19 +659,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 125, "metadata": {}, "outputs": [], "source": [ "def pangram(string):\n", + " string = string.lower()\n", + " unique_string = unique(string)\n", + " n = 0\n", + " \n", + " for i in unique_string:\n", + " n+=1\n", + " alpha = \"abcdefghijklmnopqrstuvwxyz\"\n", + "\n", + " for letter in alpha:\n", + " \n", + " if letter not in unique_string:\n", + " return False\n", + " \n", + " return True\n", + "\n", + " \n", + " \n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "..............................\n", + "----------------------------------------------------------------------\n", + "Ran 30 tests in 0.065s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_pangram(pangram)" @@ -344,20 +718,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 142, "metadata": {}, "outputs": [], "source": [ "def sort_alpha(string):\n", + " string = string.lower()\n", + " \n", + "\n", + " words= []\n", + " current_word = \"\"\n", + " for char in string:\n", + " if char != \",\":\n", + " current_word += char\n", + " else:\n", + " words.append(current_word)\n", + " current_word = \"\"\n", + " words.append(current_word)\n", + " words = sorted(words)\n", + " sorted_words = \"\"\n", + " for word in words:\n", + " sorted_words += word + \",\"\n", + " sorted_words = sorted_words[:-1]\n", + "\n", + " return sorted_words\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................." + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "...............................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.156s\n", + "\n", + "OK\n" + ] + } + ], "source": [ + "\n", "# This will test your function \n", "test_alpha(sort_alpha)" ] @@ -371,28 +784,67 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "def check_pass(password):\n", + " if len(password) < 8:\n", + " return False\n", + " has_upper = False\n", + " has_lower = False\n", + " has_digit = False\n", + " has_special = False\n", + " \n", + " for char in password:\n", + " if char.isupper():\n", + " has_upper = True\n", + " elif char.islower():\n", + " has_lower = True\n", + " elif char.isdigit():\n", + " has_digit = True\n", + " else:\n", + " \n", + " has_special = True\n", + " return has_upper and has_lower and has_digit and has_special\n", + " \n", + " \n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.146s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_pass(check_pass)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -406,12 +858,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" - }, - "vscode": { - "interpreter": { - "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" - } + "version": "3.11.3" } }, "nbformat": 4, diff --git a/mod/__pycache__/testing.cpython-311.pyc b/mod/__pycache__/testing.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2947ee864448d80f1a519d2efacfdbc39ad7c35f GIT binary patch literal 24236 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 bZaBS92ZOE$f*aE|z^b&^9`v0E=*atD)(=YY literal 0 HcmV?d00001