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 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.") diff --git a/week3_homework.ipynb b/week3_homework.ipynb new file mode 100644 index 0000000..790cd9e --- /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", + " 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", + " 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 # 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 +}