From 2ba79f083eddb5d5f675bbd16e78c2f30050d43a Mon Sep 17 00:00:00 2001 From: "Eng.Mokhtar Alahdal" <58419254+alahdalmokhtar@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:44:31 +0200 Subject: [PATCH 1/7] All Done . --- week3_homework.ipynb | 381 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 381 insertions(+) create mode 100644 week3_homework.ipynb diff --git a/week3_homework.ipynb b/week3_homework.ipynb new file mode 100644 index 0000000..4cc9f0b --- /dev/null +++ b/week3_homework.ipynb @@ -0,0 +1,381 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "036d22f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\ndef delete_task(task_number):\\n global TaskList\\n # Check if task number exists in TaskList\\n \\n if task_number <1 or task_number > len(TaskList):\\n print(f\" ❌ Task {task_number} not found.\")\\n return\\n else:\\n print(f\"Are you sure you want to delete Task {task_number}? (y/n): \")\\n confirm = input()\\n if confirm.lower() != \\'y\\':\\n print(\" ❌ Task not deleted.\")\\n return\\n else:\\n TaskList = [task for task in TaskList if task[\\'Task Number\\'] != task_number] # filter out the task to be deleted\\n print(f\"✅ Task {task_number} deleted successfully.\")'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": [ + "'\\n try:\\n if task_number in TaskList:\\n confirm = input(f\"Are you sure you want to delete \\'{task_number}\\'? (y/n): \")\\n if confirm.lower() == \\'y\\':\\n TaskList.remove(task_number) # remove task from list\\n print(f\"✅ {task_number} : deleted successfully!\")\\n #view_customer()##calling to show details.\\n else:\\n print(\" ❌ Task not found.\")\\n except ValueError:\\n print(\"invalid inpt\")'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ Task 'AAAAAAAAAAAA' added with Task Number 1.\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ Task 'BBBBBBBBBBBB' added with Task Number 2.\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ Task 'SSSSSSSSSSSSS' added with Task Number 3.\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + "\n", + "Task List:\n", + "\n", + "Number Task Name Status \n", + "-------------------------------------------------------\n", + "1 AAAAAAAAAAAA Pending \n", + "2 BBBBBBBBBBBB Pending \n", + "3 SSSSSSSSSSSSS Pending \n", + "\n", + "Total Tasks: 3\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ {'Task Number': 2, 'Task Name': 'BBBBBBBBBBBB', 'Status': 'Pending'} : deleted successfully!\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + "\n", + "Task List:\n", + "\n", + "Number Task Name Status \n", + "-------------------------------------------------------\n", + "1 AAAAAAAAAAAA Pending \n", + "3 SSSSSSSSSSSSS Pending \n", + "\n", + "Total Tasks: 2\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ Task 'WWWWWWW' added with Task Number 2.\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + "\n", + "Task List:\n", + "\n", + "Number Task Name Status \n", + "-------------------------------------------------------\n", + "1 AAAAAAAAAAAA Pending \n", + "3 SSSSSSSSSSSSS Pending \n", + "2 WWWWWWW Pending \n", + "\n", + "Total Tasks: 3\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + " ✅ {'Task Number': 3, 'Task Name': 'SSSSSSSSSSSSS', 'Status': 'Pending'} : deleted successfully!\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + "\n", + "Task List:\n", + "\n", + "Number Task Name Status \n", + "-------------------------------------------------------\n", + "1 AAAAAAAAAAAA Pending \n", + "2 WWWWWWW Pending \n", + "\n", + "Total Tasks: 2\n", + "\n", + " Task Manger Aplication\n", + "1 : Add Task\n", + "2: complete Task\n", + "3 : Delete Task\n", + "4 : list Task \n", + "5 : list Completed Task\n", + "6 : Exit\n", + "Exiting the program.\n" + ] + } + ], + "source": [ + "##programe task manager application : this program allow user to add,delete,complete and list thier view. \n", + "##auther :Mokhtar\n", + "TaskList = [] # list to store task\n", + "TaskCount = 0 # variable to store task count\n", + "#task_number_delete = None # variable to store task number to delete\n", + "# function to add task\n", + "def add_task(task_name):\n", + " global TaskCount\n", + " ### Punt num 4 : check if task number is delete or not :=========================\n", + " ###=========================================================\n", + " used_task_numbers = [task['Task Number'] for task in TaskList] # get list of used task numbers\n", + " task_number_delete = None # initialize task number to delete\n", + " for task1 in range(1,TaskCount+1): # check if task number not in task list\n", + " if task1 not in used_task_numbers:\n", + " task_number_delete = task1 # \n", + " break\n", + " if task_number_delete is not None:\n", + " task = {\n", + " 'Task Number': task_number_delete,\n", + " 'Task Name': task_name,\n", + " 'Status': 'Pending' \n", + " }\n", + " TaskList.append(task) # add task to list\n", + " print(f\" ✅ Task '{task_name}' added with Task Number {task_number_delete}.\") # print message to user\n", + " else:\n", + " TaskCount += 1\n", + " task ={\n", + " 'Task Number': TaskCount,\n", + " 'Task Name': task_name,\n", + " 'Status': 'Pending' \n", + " }\n", + " TaskList.append(task) # add task to list\n", + " print(f\" ✅ Task '{task_name}' added with Task Number {TaskCount}.\") # print message to user\n", + " \n", + "##=========================================================\n", + "def list_tasks():\n", + " if not TaskList:\n", + " print(\"No tasks found!\")\n", + " return\n", + " \n", + " # Print table header\n", + " print(\"\\nTask List:\")\n", + " print(\"\\n{:<10} {:<30} {:<15}\".format(\"Number\", \"Task Name\", \"Status\"))\n", + " print(\"-\" * 55)\n", + " \n", + " # Print each task\n", + " for task in TaskList:\n", + " print(\"{:<10} {:<30} {:<15}\".format(\n", + " task[\"Task Number\"],\n", + " task[\"Task Name\"][:28] + ('..' if len(task[\"Task Name\"]) > 28 else ''),\n", + " task[\"Status\"][:13] + ('..' if len(task[\"Status\"]) > 13 else '')\n", + " ))\n", + " \n", + " print(f\"\\nTotal Tasks: {len(TaskList)}\")\n", + "## function to complete task\n", + "def compelete_task(task_number):\n", + " for task in TaskList:\n", + " if task['Task Number'] == task_number:\n", + " task['Status'] = 'Completed'\n", + " print(f\"Task {task_number} marked as completed.\")\n", + " return\n", + " print(f\" ✅ Task {task_number} not found.\")\n", + "##========================================================\n", + "\n", + "## fuction to list completed tasks\n", + "def list_completed_tasks():\n", + " completed_tasks = [task for task in TaskList if task['Status'] == 'Completed']\n", + " if not completed_tasks:\n", + " print(\"No completed tasks found.\")\n", + " return\n", + " \n", + " print(\"\\nCompleted Tasks:\")\n", + " print(\"{:<10} {:<30} {:<15}\".format(\"Number\", \"Task Name\", \"Status\"))\n", + " print(\"-\" * 55)\n", + " \n", + " for task in completed_tasks:\n", + " print(\"{:<10} {:<30} {:<15}\".format(\n", + " task[\"Task Number\"],\n", + " task[\"Task Name\"][:28] + ('..' if len(task[\"Task Name\"]) > 28 else ''),\n", + " task[\"Status\"][:13] + ('..' if len(task[\"Status\"]) > 13 else '')\n", + " ))\n", + " print(f\"\\nTotal Completed Tasks: {len(completed_tasks)}\")\n", + " ##=======================================================\n", + "\n", + "def delete_task1(task_number):\n", + " for task in TaskList:\n", + " # if task['Task Number'] == task_number:\n", + " if task_number <1 or task_number > len(TaskList):\n", + " print(f\" ❌ Task {task_number} not found.\")\n", + " return\n", + " elif task['Task Number'] == task_number:\n", + " # TaskList.remove(task)\n", + " confirm = input(f\"Are you sure you want to delete Task {task_number}: '{task['Task Name']}'? (y/n): \")\n", + " if confirm.lower() == 'y':\n", + " TaskList.remove(task)\n", + " print(f\" ✅ {task} : deleted successfully!\")\n", + " return\n", + " else:\n", + " print(\" ❌ Deletion Canceled.\")\n", + " return\n", + " \n", + "##========================================================\n", + "## function to delete task.\n", + "'''\n", + "def delete_task(task_number):\n", + " global TaskList\n", + " # Check if task number exists in TaskList\n", + " \n", + " if task_number <1 or task_number > len(TaskList):\n", + " print(f\" ❌ Task {task_number} not found.\")\n", + " return\n", + " else:\n", + " print(f\"Are you sure you want to delete Task {task_number}? (y/n): \")\n", + " confirm = input()\n", + " if confirm.lower() != 'y':\n", + " print(\" ❌ Task not deleted.\")\n", + " return\n", + " else:\n", + " TaskList = [task for task in TaskList if task['Task Number'] != task_number] # filter out the task to be deleted\n", + " print(f\"✅ Task {task_number} deleted successfully.\")''' # print message to user\n", + " # Delete the task from TaskList \n", + "'''\n", + " try:\n", + " if task_number in TaskList:\n", + " confirm = input(f\"Are you sure you want to delete '{task_number}'? (y/n): \")\n", + " if confirm.lower() == 'y':\n", + " TaskList.remove(task_number) # remove task from list\n", + " print(f\"✅ {task_number} : deleted successfully!\")\n", + " #view_customer()##calling to show details.\n", + " else:\n", + " print(\" ❌ Task not found.\")\n", + " except ValueError:\n", + " print(\"invalid inpt\")'''\n", + "##========================================================\n", + "def list_tasks1():\n", + " if not TaskList: # check if task list is empty\n", + " print(\"No tasks available.\")\n", + " return\n", + " print(\"\\nTask List:\")\n", + " for task in TaskList: # iterate through task list\n", + " # print(f\"Task Number: {task['Task Number']}, Task Name: {task['Task Name']}, Status: {task['Status']}\") # print task details\n", + " \n", + " print(\"{:<10} {:<30} {:<15}\".format(\"Task Number\", \"Task Name\", \"Status\"))\n", + " print(\"-\" * 50)\n", + "\n", + " print(\"{:<10} {:<30} {:<15}\".format(\n", + " task['Task Number'] ,\n", + " task['Task Name'][:28] + ('..' if len(TaskList['Task Name']) > 28 else ''),\n", + " TaskList['Status'][:13] + ('..' if len(TaskList['Status']) > 13 else '')))\n", + " print(f\"\\nTotal Tasks: {len(TaskList)}\")\n", + "\n", + "#function main to display menu and get user input\n", + "##========================================================\n", + "##=================== Main Function =====================\n", + "##========================================================\n", + "\n", + "def main():\n", + " while True:\n", + " print(\"\\n Task Manger Aplication\")\n", + " print(\"1 : Add Task\")\n", + " print(\"2: complete Task\")\n", + " print(\"3 : Delete Task\")\n", + " print(\"4 : list Task \")\n", + " print(\"5 : list Completed Task\")\n", + " print(\"6 : Exit\")\n", + " choice =input(\"Enter your choice (1-6):\")\n", + " if choice == '1':\n", + " task_name = input(\"Enter task name\")\n", + " add_task(task_name)\n", + " elif choice =='2':\n", + " task_number=int(input(\"Enter task number to complete:\"))\n", + " compelete_task(task_number)\n", + " elif choice == '3':\n", + " task_number = int(input(\"Enter task number to delete:\"))\n", + " delete_task1(task_number)\n", + " elif choice == '4': \n", + " list_tasks()\n", + " elif choice == '5':\n", + " list_completed_tasks()\n", + " elif choice == '6':\n", + " print(\"Exiting the program.\")\n", + " break\n", + " else:\n", + " print(\"Invalid choice. Please try again.\") \n", + "if __name__ ==\"__main__\":\n", + " main() # call main function to start the program\n", + "# function to complete task" + ] + } + ], + "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.10.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 926c3d32ec84d2a963c5bd1b39df93750e89da5e Mon Sep 17 00:00:00 2001 From: "Eng.Mokhtar Alahdal" <58419254+alahdalmokhtar@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:50:13 +0200 Subject: [PATCH 2/7] updated --- week3_homework.ipynb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/week3_homework.ipynb b/week3_homework.ipynb index 4cc9f0b..eb70d8d 100644 --- a/week3_homework.ipynb +++ b/week3_homework.ipynb @@ -352,8 +352,7 @@ " else:\n", " print(\"Invalid choice. Please try again.\") \n", "if __name__ ==\"__main__\":\n", - " main() # call main function to start the program\n", - "# function to complete task" + " main() # call main function to start the program # function to complete task" ] } ], From fc47ce8e9f8771aa1ce7cf6de884af255200fd96 Mon Sep 17 00:00:00 2001 From: "Eng.Mokhtar Alahdal" <58419254+alahdalmokhtar@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:52:18 +0200 Subject: [PATCH 3/7] up --- week3_homework.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/week3_homework.ipynb b/week3_homework.ipynb index eb70d8d..ccb52b9 100644 --- a/week3_homework.ipynb +++ b/week3_homework.ipynb @@ -319,9 +319,9 @@ " print(f\"\\nTotal Tasks: {len(TaskList)}\")\n", "\n", "#function main to display menu and get user input\n", - "##========================================================\n", - "##=================== Main Function =====================\n", - "##========================================================\n", + "##==================================================================\n", + "##=================== Main Function ===========================\n", + "##===========================================================\n", "\n", "def main():\n", " while True:\n", From 623dda8cf988dbf09a4ee1f04aa21d4506c58b69 Mon Sep 17 00:00:00 2001 From: "Eng.Mokhtar Alahdal" <58419254+alahdalmokhtar@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:55:13 +0200 Subject: [PATCH 4/7] upda --- week3_homework.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week3_homework.ipynb b/week3_homework.ipynb index ccb52b9..fd9c6cc 100644 --- a/week3_homework.ipynb +++ b/week3_homework.ipynb @@ -274,7 +274,7 @@ "def delete_task(task_number):\n", " global TaskList\n", " # Check if task number exists in TaskList\n", - " \n", + " if task_numer <1 or task_number>len(TaskList):\n", " if task_number <1 or task_number > len(TaskList):\n", " print(f\" ❌ Task {task_number} not found.\")\n", " return\n", From 217ef929c576a37a8be66747baeb2bdfe1cebb9e Mon Sep 17 00:00:00 2001 From: "Eng.Mokhtar Alahdal" <58419254+alahdalmokhtar@users.noreply.github.com> Date: Mon, 21 Apr 2025 23:57:30 +0200 Subject: [PATCH 5/7] update --- week3_homework.ipynb | 1 + 1 file changed, 1 insertion(+) diff --git a/week3_homework.ipynb b/week3_homework.ipynb index fd9c6cc..790cd9e 100644 --- a/week3_homework.ipynb +++ b/week3_homework.ipynb @@ -277,6 +277,7 @@ " if task_numer <1 or task_number>len(TaskList):\n", " if task_number <1 or task_number > len(TaskList):\n", " print(f\" ❌ Task {task_number} not found.\")\n", + " print('-----------')\n", " return\n", " else:\n", " print(f\"Are you sure you want to delete Task {task_number}? (y/n): \")\n", From 498d59852139de7a5dd22cbe822e5b4d7fb6c252 Mon Sep 17 00:00:00 2001 From: Mosaaed Sajer Date: Tue, 22 Apr 2025 23:18:52 +0200 Subject: [PATCH 6/7] tasks = [] next_number = 1 def add_task(): global next_number name = input("Enter the task name: ") # Check for any task marked as 'removed' to reuse the slot for t in tasks: if t['status'] == 'Removed': t['name'] = name t['status'] = 'Not Done' print("Task added at slot", t['number']) return # Add a new task if no 'removed' tasks tasks.append({'number': next_number, 'name': name, 'status': 'Not Done'}) print("Task added with number", next_number) next_number += 1 def finish_task(): num = int(input("Enter task number to mark as finished: ")) for t in tasks: if t['number'] == num and t['status'] == 'Not Done': t['status'] = 'Completed' print("Task", num, "is now completed.") return print("Task not found or already completed.") def remove_task(): num = int(input("Enter task number to remove: ")) for t in tasks: if t['number'] == num and t['status'] != 'Removed': t['status'] = 'Removed' print("Task", num, "has been removed.") return print("Task not found or already removed.") def show_completed_tasks(): print("\nCompleted Tasks:") for t in tasks: if t['status'] == 'Completed': print(t['number'], t['name']) def show_all_tasks(): print("\nAll Tasks:") for t in tasks: print(t['number'], t['name'], "-", t['status']) while True: print("\nChoose an option:") print("1- Add Task") print("2- Finish Task") print("3- Remove Task") print("4- Show Completed Tasks") print("5- Show All Tasks") print("6- Exit") choice = input("Enter your choice: ") if choice == '1': add_task() elif choice == '2': finish_task() elif choice == '3': remove_task() elif choice == '4': show_completed_tasks() elif choice == '5': show_all_tasks() elif choice == '6': print("Goodbye!") break else: print("Invalid choice. Please try again.") --- task_manger_week_3.py | 82 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 task_manger_week_3.py diff --git a/task_manger_week_3.py b/task_manger_week_3.py new file mode 100644 index 0000000..bf2b7b5 --- /dev/null +++ b/task_manger_week_3.py @@ -0,0 +1,82 @@ +# List to hold tasks +tasks = [] +next_number = 1 + +# Function to add a new task +def add_task(): + global next_number + name = input("Enter the task name: ") + + # Check for any task marked as 'removed' to reuse the slot + for t in tasks: + if t['status'] == 'Removed': + t['name'] = name + t['status'] = 'Not Done' + print("Task added at slot", t['number']) + return + + # Add a new task if no 'removed' tasks + tasks.append({'number': next_number, 'name': name, 'status': 'Not Done'}) + print("Task added with number", next_number) + next_number += 1 + +# Function to mark a task as finished +def finish_task(): + num = int(input("Enter task number to mark as finished: ")) + for t in tasks: + if t['number'] == num and t['status'] == 'Not Done': + t['status'] = 'Completed' + print("Task", num, "is now completed.") + return + print("Task not found or already completed.") + +# Function to remove a task +def remove_task(): + num = int(input("Enter task number to remove: ")) + for t in tasks: + if t['number'] == num and t['status'] != 'Removed': + t['status'] = 'Removed' + print("Task", num, "has been removed.") + return + print("Task not found or already removed.") + +# Function to display completed tasks +def show_completed_tasks(): + print("\nCompleted Tasks:") + for t in tasks: + if t['status'] == 'Completed': + print(t['number'], t['name']) + +# Function to display all tasks +def show_all_tasks(): + print("\nAll Tasks:") + for t in tasks: + print(t['number'], t['name'], "-", t['status']) + +# Main loop for user interaction +while True: + print("\nChoose an option:") + print("1- Add Task") + print("2- Finish Task") + print("3- Remove Task") + print("4- Show Completed Tasks") + print("5- Show All Tasks") + print("6- Exit") + + choice = input("Enter your choice: ") + + if choice == '1': + add_task() + elif choice == '2': + finish_task() + elif choice == '3': + remove_task() + elif choice == '4': + show_completed_tasks() + elif choice == '5': + show_all_tasks() + elif choice == '6': + print("Goodbye!") + break + else: + print("Invalid choice. Please try again.") From 3f80cc9c9a2d22884384bb058d0e46f4a97116b7 Mon Sep 17 00:00:00 2001 From: MBanafea <203900813+MBanafea@users.noreply.github.com> Date: Fri, 25 Apr 2025 23:58:36 +0200 Subject: [PATCH 7/7] Create M.B_Week3.py --- M.B_Week3.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 M.B_Week3.py diff --git a/M.B_Week3.py b/M.B_Week3.py new file mode 100644 index 0000000..17166ed --- /dev/null +++ b/M.B_Week3.py @@ -0,0 +1,82 @@ +# List to hold tasks +tasks = [] +next_number = 1 + +# Function to add a new task +def add_task(): + global next_number + name = input("Enter the task name: ") + + # Check for any task marked as 'removed' to reuse the slot + for t in tasks: + if t['status'] == 'Removed': + t['name'] = name + t['status'] = 'Not Done' + print("Task added at slot", t['number']) + return + + # Add a new task if no 'removed' tasks + tasks.append({'number': next_number, 'name': name, 'status': 'Not Done'}) + print("Task added with number", next_number) + next_number += 1 + +# Function to mark a task as finished +def finish_task(): + num = int(input("Enter task number to mark as finished: ")) + for t in tasks: + if t['number'] == num and t['status'] == 'Not Done': + t['status'] = 'Completed' + print("Task", num, "is now completed.") + return + print("Task not found or already completed.") + +# Function to remove a task +def remove_task(): + num = int(input("Enter task number to remove: ")) + for t in tasks: + if t['number'] == num and t['status'] != 'Removed': + t['status'] = 'Removed' + print("Task", num, "has been removed.") + return + print("Task not found or already removed.") + +# Function to display completed tasks +def show_completed_tasks(): + print("\nCompleted Tasks:") + for t in tasks: + if t['status'] == 'Completed': + print(t['number'], t['name']) + +# Function to display all tasks +def show_all_tasks(): + print("\nAll Tasks:") + for t in tasks: + print(t['number'], t['name'], "-", t['status']) + +# Main loop for user interaction +while True: + print("\nChoose an option:") + print("1- Add Task") + print("2- Finish Task") + print("3- Remove Task") + print("4- Show Completed Tasks") + print("5- Show All Tasks") + print("6- Exit") + + choice = input("Enter your choice: ") + + if choice == '1': + add_task() + elif choice == '2': + finish_task() + elif choice == '3': + remove_task() + elif choice == '4': + show_completed_tasks() + elif choice == '5': + show_all_tasks() + elif choice == '6': + print("Goodbye!") + break + else: + print("Invalid choice. Please try again.") \ No newline at end of file