Guide to High School Computer Science
  • 💻Introduction
    • windows & Python Development
    • macOS & Python Development
    • Visual Studio Code Settings
    • Set up Github
    • Author Page
  • 🧠Prerequisite Skills
    • Keyboard Typing
    • Files & Directories
    • Use of Command Line
    • Git & GitHub
    • Markdown
    • Starting Your Python Project
  • 🐍Python Programming
    • 🍎Python Basics
      • What is Python?
      • Procedural Programming & Programming Paradigms
      • String Formatting
      • Data Types
      • Input & Output to Console
      • Working with Numbers
      • Useful Built-in Functions
      • Math & Random Module
      • Boolean Data Object
      • Comparison, Logical, and Membership Operators
      • If Statements
      • Binary Decisions
      • Multiple Decisions
      • Nested Conditions
      • [EXTRA] Bitwise Operators
      • [EXTRA] Python Style Guide
    • ⏮️Iterations
      • Introduction to While Loops
      • Infinite Loop
      • Controlling Your While Loops
      • Introduction to For Loops
      • For Loops w/ Numeric Sequences
      • For Loops w/ Strings & Lists
      • Iterable Functions w/ For Loops
    • 📦Collections
      • Strings
        • String Basics
        • String Indexing
        • String Slicing
        • String Operators & Functions
        • Basic String Methods
        • String Methods Extended
        • String Methods Document
      • Tuples & Lists
        • Tuples
        • List Basics
        • List are Mutable
        • Adding Items to a List
        • Removing Items from a List
        • Search & Reverse a List
        • List Comprehension
        • List Methods Document
      • Sets
      • Dictionary
      • How to Store Multiple Data Items
    • 💡Defining Functions
      • Functions
      • print() vs return
      • Pre-determined Arguments
      • Nested Functions
      • Map & Filter
      • [Extra] Dynamic Arguments
    • 💾File I/O
      • How to Save Text to an External File
      • Reading CSV in Python
      • Reading JSON in Python
    • 🔨Basic Python Projects
      • Basic Calculator
        • Improving the calculator
        • Exercise Set 1
        • Exercise Set 2
        • 💎Streamlit Application #1
      • Basic Password Generator
        • Exercise Set 3
        • Exercises Related to Math
        • 💎Streamlit Application #2
      • A To-Do Task List
    • ⏳Introduction to Algorithmic Thinking
      • Big-O Notation
      • Basic Algorithms
        • Linear Search
        • Binary Search
        • Basic Sorting Algorithms
      • Recursion
      • Brute Force Algorithms
      • Greedy Algorithm
        • Time on Task (CCC 2013 J4)
        • Dijkstra’s Algorithm
      • Divide and Conquer
        • Merge Sort
      • Dynamic Programming
    • 🤯Object Oriented Programming
      • Class & Objects (Definitions)
      • OOP in Python
      • Encapsulation
      • Polymorphism
      • Inheritance & Overriding
      • Override Magic Methods
      • Case Study: 2D Vectors
      • Case Study: Deck of Cards
      • Exercise
      • Abstract Data Types
      • Case Study: Static 1D Array From Java
    • Competitive Programming
      • Is This Sum Possible?
        • Is the dataset sorted?
        • Searching for a value
        • Determine if the difference between an integer from the array and the target value exists
        • Sorting Algorithms
        • Using Two Pointers
      • Two Sum - LeetCode
        • Generate all possible pairs of values
        • Subtract each value from the target, see if the difference exists in the list
      • Longest Common Prefix - LeetCode
        • Compare all possible prefixes
        • Create the longest common prefix with the direct neighbour
      • Length of Last Word - LeetCode
        • Compare all possible prefixes
      • Where can I go from one point to another?
      • Sample Outline
    • IB Recipe Book
  • 💾Python & Databases
    • Intro to Databases & Data Modeling
      • Common Data Types in SQL
      • Introduction to ERDs
      • Primary Keys and Foreign Keys
      • Database Normalization
    • What is SQL?
      • Getting Started
      • SELECT Queries
        • Selection with Conditions
        • Selection with Fuzziness
        • Selection and Sorting in Order
        • Selection without Duplicates
        • Selection with Limited Number of Outputs
      • AGGREGATE Queries
        • Counting Rows
        • Sum, Average, Min/Max Queries
        • Working with Aggregate Queries
        • Power of using Groups
        • Exercise
      • Interacting with Multiple Table
      • Inserting Data
      • External Resource
  • ☕Java Essentials
    • Basics
      • Starting Java
      • Data & Variables
      • Handling User Inputs & Type Conversion
      • Arithmetic
      • IPO Model
      • Basic Built-in Methods
      • Exercise Questions
    • Conditionals
      • Boolean Operators
      • Compare Strings
      • If Statements
      • If Else Statements
      • Making Multiple Decisions
      • Using Switch
      • Flowchart Symbols
      • Exercise Questions
    • Iterations
      • While Loops
      • For Loop
      • Exercises
    • Java Type Casting
    • Strings
      • Common String Practices
      • String Formatting
      • Java Special Characters
    • Collection
      • Arrays
      • For Each Loop
      • ArrayList
      • Exercise Questions
    • Static Methods
      • (Aside) Clearing your Console
    • Randomness in Java
    • Delayed Output in Java
    • Java Output Formatting
    • Java Style Guide
  • 🛠️JavaScript Programming
    • Our Programming Editor & Workflow
      • Hello, world!
      • Commenting & Variables
      • Data in JavaScript
      • Operators
      • String Formatting
      • Getting User Input
    • JavaScript Exercise Set 1
    • Making Decisions
      • Comparing Values
      • Combining Boolean Comparisons
      • Creating Branches
    • JavaScript Exercise Set 2
    • While Loops
      • Infinite While Loop
      • While Loops and Numbers
      • While Loops and Flags
      • While loops w/ Strings
    • JavaScript Exercise Set 3
    • Subprograms & Functions
      • Creating a Function in JavaScript
      • Function with Input and Assignable Output
    • JavaScript Exercise Set 4
  • 💾Topics in CS
    • Computer Environments & Systems
      • Computer Components
        • In-depth Explanations
      • File Maintenance
      • Computer & Safety
      • Software Development
      • Bits & Binary
    • Careers related to Computer Science
    • Postsecondary Opportunities
Powered by GitBook
On this page
  • Goal
  • Program Requirements
  • Python Translation
  • Code Explanation
  • Connected Readings
  1. Python Programming
  2. Basic Python Projects

A To-Do Task List

Goal

Create a simple to-do task list that prioritizes task with earlier due dates.

For example:

Our Tasks
- Vacuum, 21 July 2024
- Laundry, 19 July 2024
- Marshall to Vet, 1 August 2024

Priority Order:
1. Laundry, 19 July 2024
2. Vacuum, 21 July 2024
3. Marshall to Vet, 1 August 2024

Program Requirements

  • Insert tasks

    • A task should have a string data explaining the task

    • A task should have a date attached explaining the due date

  • Remove tasks

    • Either a task was completed or want to be removed

  • Task Sorting

    • Tasks are to be sorted based on date (early ones first)

  • View the Tasks

    • Display the tasks in order

  • Save the Tasks to an external file

    • The program will generate a file after tasks have been inserted

    • The program will remember previous/unfinished tasks by reading the previous task file

    • The program will update with changes and save the changes to the same file

Python Translation

# Tasker.py
# A to-do task list terminal application

# Internal Imports
import os
from datetime import datetime

# Custom Functions
def task_file_exists():
    ''' This function returns True if we made tasks.txt before '''
    return os.path.isfile("tasks.txt")
# end of task_file_exists()

# Get tasks if tasks.txt has tasks written
def get_tasks(tasks_table):
    data = None
    with open("tasks.txt", "r") as task_file:
        data = task_file.readlines()
        header = data[0]
        data = data[1:]
    # end of reading task_file

    # Iterate the data list and insert it to the tasks_table
    for line in data:
        current_line = line.replace("\n", "")
        current_line = current_line.split(", ")
        task_name = current_line[0]
        task_due = datetime.strptime(current_line[1], '%Y-%m-%d %H:%M:%S')
        tasks_table[task_name] = task_due
# end of get_tasks()

# Option 1: Insert a Task
def insert(tasks_table):
    """ This function inserts a task in the dictionary argument provided """

    task_name = input("Enter the task's name: ")
    print("Enter the task due date:")
    print(" -- Format: (Day Month Year)")
    print(" -- Example: 7 July 2024")
    task_due = input("Input Due date: ")

    # task_due String variable will be turned into a date object via datetime module
    tasks_table[task_name] = datetime.strptime(task_due, "%d %B %Y")
# end of insert()

# Option 2: remove/complete a task
def remove(tasks_table):
    """ This function removes a task in the dictionary argument provided """
    if not tasks_table:
        # There are no tasks!
        print("No tasks to be deleted")
        return None

    print("Which task should be deleted?")
    task_list = list(tasks_table.keys())

    for i, task in enumerate(task_list):
        print(f" -- {i}. {task}")
    
    choice = int(input("Enter the task number to delete: "))
    target = task_list[choice]

    del tasks_table[target]
# end of remove()

# Option 3: Display unfinished tasks
def view(tasks_table):
    """ This function displays the task dictionary table """
    if not tasks_table:
        print("There are no tasks!")

    task_list = list(tasks_table.items())
    task_list = sorted(task_list, key=lambda x : x[1])

    print("Here are your list of tasks:")
    for task, due_date in task_list:
        print(f" - {task} | Due: {due_date}")
# end of view()

# Option 4: Write tasks.txt to save current session info
def export(tasks_table):
    """ This table creates/recreates task.txt with current session's task data"""
    with open("tasks.txt", "w") as task_file:
        task_file.write("List of tasks:\n")

        for task, due_date in tasks_table.items():
            task_file.write(f"{task}, {due_date}\n")
# end of export()

# Initial Setups
options = """
1. Insert a Task
2. Remove/Complete a Task
3. View Unfinished Tasks
4. Export the current list of tasks and end the program.
"""

tasks = {} # Initializing an empty dictionary

# If the tasks.txt file exists, we update tasks dictionary
if task_file_exists():
    get_tasks(tasks)

# End of Setup

# Start the application
while True:
    print(options)
    choice = int(input(" - Select one of the options: "))

    if choice == 1:
        insert(tasks)
    elif choice == 2:
        remove(tasks)
    elif choice == 3:
        view(tasks)
    elif choice == 4:
        export(tasks)
        print("The current session's tasks have been written to tasks.txt")
        break
# end of while loop

Code Explanation

Connected Readings

  • Title (Link)

PreviousStreamlit Application #2NextIntroduction to Algorithmic Thinking

Last updated 10 months ago

🐍
🔨