From 77b4111ad6203eb9ead82a350e124c13a268acec Mon Sep 17 00:00:00 2001 From: Hicham Lamnaouar Date: Sun, 6 Apr 2025 10:00:51 -0500 Subject: [PATCH 1/3] lesson2 - Assignment: Data Structures and File Handling --- assignment2/diary.py | 199 ++++++++++++++++++++++++++++++++++++++++++ assignment2/diary.txt | 13 +++ 2 files changed, 212 insertions(+) create mode 100644 assignment2/diary.py create mode 100644 assignment2/diary.txt diff --git a/assignment2/diary.py b/assignment2/diary.py new file mode 100644 index 0000000..998b536 --- /dev/null +++ b/assignment2/diary.py @@ -0,0 +1,199 @@ +# Task 1: Diary +import traceback + +try: + with open("diary.txt", "a") as file: # Open file in append mode + first_entry = True # Flag to check if it's the first input + + while True: + # If it is the first input, prompt for "What happened today?" + if first_entry: + entry = input("What happened today? ") + first_entry = False # Change the flag to False after the first input + else: + entry = input("What else? ") + + # Check if the user enters 'done for now' + if entry.lower() == "done for now": + file.write(entry + "\n") # Write "done for now" to the file + break # Exit the loop after writing "done for now" + + # Write the user's entry to the file if it's not 'done for now' + file.write(entry + "\n") + +except Exception as e: + # Handle exceptions and print the traceback + trace_back = traceback.extract_tb(e.__traceback__) + stack_trace = [] + for trace in trace_back: + stack_trace.append(f'File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}') + print(f"Exception type: {type(e).__name__}") + message = str(e) + if message: + print(f"Exception message: {message}") + print(f"Stack trace: {stack_trace}") + + + +#Task 2: Read a CSV File +import csv +def read_employees(): + employees = {} # To store data + rows = [] # To store employee rows + try: + with open('../csv/employees.csv', mode='r') as file: + csv_reader = csv.reader(file) + fields = next(csv_reader) # Get the first row for field names + employees['fields'] = fields + for row in csv_reader: + rows.append(row) + employees['rows'] = rows + except Exception as e: + print("An exception occurred: ", e) + return employees + +# Test +employees = read_employees() +print(employees) + +#Task 3: Find the Column Index +def column_index(field_name): + return employees["fields"].index(field_name) + +# Test +employee_id_column = column_index("employee_id") +print(employee_id_column) + +#Task 4: Find the Employee First Name +def first_name(row_num): + column_idx = column_index("first_name") + return employees["rows"][row_num][column_idx] + +# Test +print(first_name(0)) # Get first name of the first employee + +#Task 5: Find the Employee:a Function in a Function +def employee_find(employee_id): + def employee_match(row): + return int(row[employee_id_column]) == employee_id + + matches = list(filter(employee_match, employees["rows"])) + return matches + +# Test +print(employee_find(1001)) + +#Task 6: Find the Employee with a Lambda +def employee_find_2(employee_id): + matches = list(filter(lambda row: int(row[employee_id_column]) == employee_id, employees["rows"])) + return matches + +# Test +print(employee_find_2(1001)) + +#Task 7: Sort the Rows by last_name Using a Lambda +def sort_by_last_name(): + last_name_column = column_index("last_name") + employees["rows"].sort(key=lambda row: row[last_name_column]) + return employees["rows"] + +# Test +sorted_employees = sort_by_last_name() +print(sorted_employees) + +#Task 8: Create a dict for an Employee +def employee_dict(row): + return {employees["fields"][i]: row[i] for i in range(len(row)) if employees["fields"][i] != "employee_id"} + +# Test +print(employee_dict(employees["rows"][0])) # Test for the first row + +#Task 9: A dict of dicts, for All Employees +def all_employees_dict(): + return {row[employee_id_column]: employee_dict(row) for row in employees["rows"]} + +# Test +print(all_employees_dict()) + +#Task 10: Use the os Module +# custom_module.py +secret = "shazam!" +def set_secret(new_secret): + global secret + secret = new_secret + +#Task 11: Creating Your Own Module + #1. Create custom_module.py: + # custom_module.py +secret = "shazam!" + +def set_secret(new_secret): + global secret + secret = new_secret + #2. In your main program: +import custom_module + +def set_that_secret(new_secret): + custom_module.set_secret(new_secret) + +# Test +set_that_secret("new_secret_value") +print(custom_module.secret) + +#Task 12: Read minutes1.csv and minutes2.csv +def read_minutes(): + def read_file(file_name): + minutes = {"fields": [], "rows": []} + try: + with open(file_name, mode='r') as file: + csv_reader = csv.reader(file) + minutes["fields"] = next(csv_reader) + for row in csv_reader: + minutes["rows"].append(tuple(row)) # Convert rows to tuple + except Exception as e: + print("An exception occurred: ", e) + return minutes + + minutes1 = read_file("../csv/minutes1.csv") + minutes2 = read_file("../csv/minutes2.csv") + return minutes1, minutes2 + +# Test +minutes1, minutes2 = read_minutes() +print(minutes1) +print(minutes2) + +#Task 13: Create minutes_set +def create_minutes_set(): + minutes1_set = set(minutes1["rows"]) + minutes2_set = set(minutes2["rows"]) + return minutes1_set.union(minutes2_set) + +# Test +minutes_set = create_minutes_set() +print(minutes_set) + +#Task 14: Convert to datetime +from datetime import datetime + +def create_minutes_list(): + minutes_list = list(minutes_set) + return list(map(lambda x: (x[0], datetime.strptime(x[1], "%B %d, %Y")), minutes_list)) + +# Test +minutes_list = create_minutes_list() +print(minutes_list) + +#Task 15: Write Out Sorted List +def write_sorted_list(): + minutes_list.sort(key=lambda x: x[1]) # Sort by datetime + with open("./minutes.csv", mode='w', newline='') as file: + csv_writer = csv.writer(file) + csv_writer.writerow(minutes1["fields"]) + for row in minutes_list: + csv_writer.writerow([row[0], row[1].strftime("%B %d, %Y")]) + return minutes_list + +# Test +sorted_minutes = write_sorted_list() +print(sorted_minutes) diff --git a/assignment2/diary.txt b/assignment2/diary.txt new file mode 100644 index 0000000..976c668 --- /dev/null +++ b/assignment2/diary.txt @@ -0,0 +1,13 @@ +went to gym +eat +grocery + +done for now +done for now + +wnet to gym +went to eat +grocery +done for now +done for now + From 962e35d49f7e049db1d98f1d9841004608ec274c Mon Sep 17 00:00:00 2001 From: Hicham Lamnaouar Date: Sun, 6 Apr 2025 12:57:29 -0500 Subject: [PATCH 2/3] lesson2 save chanhes --- assignment2/diary.py | 45 +++++++++++++++++++++++++++++++++---------- assignment2/diary.txt | 6 ++++++ 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/assignment2/diary.py b/assignment2/diary.py index 998b536..37ca3e2 100644 --- a/assignment2/diary.py +++ b/assignment2/diary.py @@ -37,25 +37,50 @@ #Task 2: Read a CSV File import csv +import traceback + def read_employees(): - employees = {} # To store data - rows = [] # To store employee rows + employees_data = {} + rows = [] + try: - with open('../csv/employees.csv', mode='r') as file: + # Open the CSV file for reading + with open("../csv/minutes.csv", "r") as file: csv_reader = csv.reader(file) - fields = next(csv_reader) # Get the first row for field names - employees['fields'] = fields + + # Get the first row as field names + employees_data["fields"] = next(csv_reader) # The first row is the header + + # Read the rest of the rows for row in csv_reader: rows.append(row) - employees['rows'] = rows + + # Add the rows to the dictionary under the key "rows" + employees_data["rows"] = rows + + return employees_data + except Exception as e: - print("An exception occurred: ", e) - return employees - -# Test + # Catch and handle any exceptions + trace_back = traceback.extract_tb(e.__traceback__) + stack_trace = [] + for trace in trace_back: + stack_trace.append(f'File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}') + + print(f"Exception type: {type(e).__name__}") + message = str(e) + if message: + print(f"Exception message: {message}") + print(f"Stack trace: {stack_trace}") + exit(1) + +# Call the function and store the result in the 'employees' variable employees = read_employees() + +# Print out the employees data to verify it's working correctly print(employees) + #Task 3: Find the Column Index def column_index(field_name): return employees["fields"].index(field_name) diff --git a/assignment2/diary.txt b/assignment2/diary.txt index 976c668..18908cb 100644 --- a/assignment2/diary.txt +++ b/assignment2/diary.txt @@ -11,3 +11,9 @@ grocery done for now done for now  +went yo gym +eat +done for now +done for now +done fornow + From a131e356bb337ae85842a168607d9ce5ee809255 Mon Sep 17 00:00:00 2001 From: Hicham Lamnaouar Date: Mon, 7 Apr 2025 23:42:33 -0500 Subject: [PATCH 3/3] Saving the changes for Lesson2 - Assignment: Data Structures and File Handling --- assignment2/assignment2.py | 162 ++++++++++++++++++++++++ assignment2/csv/employees.csv | 47 +++++++ assignment2/custom_module.py | 10 ++ assignment2/diary.py | 219 ++------------------------------- assignment2/diary.txt | 6 + assignment2/minutes.csv | 32 ++--- assignment2/sorted_minutes.csv | 47 +++++++ 7 files changed, 299 insertions(+), 224 deletions(-) create mode 100644 assignment2/assignment2.py create mode 100644 assignment2/csv/employees.csv create mode 100644 assignment2/custom_module.py create mode 100644 assignment2/sorted_minutes.csv diff --git a/assignment2/assignment2.py b/assignment2/assignment2.py new file mode 100644 index 0000000..95ec14d --- /dev/null +++ b/assignment2/assignment2.py @@ -0,0 +1,162 @@ +import csv +import traceback +import os +from datetime import datetime +import custom_module + +# ===== TASK 2: READ EMPLOYEES ===== +print("\n=== TASK 2: ===") +def read_employees(): + employees = {"fields": [], "rows": []} + try: + with open('../csv/employees.csv', 'r') as file: + reader = csv.reader(file) + employees["fields"] = next(reader) + employees["rows"] = [row for row in reader] + return employees + except Exception as e: + traceback.print_exc() + exit(1) + +employees = read_employees() +print(f"Employees Data: {employees}") + +# ===== TASK 3: COLUMN INDEX ===== +print("\n=== TASK 3: ===") +def column_index(column_name): + return employees["fields"].index(column_name) + +employee_id_column = column_index("employee_id") +print(f"Employee ID Column Index: {employee_id_column}") + +# ===== TASK 4: FIRST NAME ===== +print("\n=== TASK 4: ===") +def first_name(row_num): + return employees["rows"][row_num][column_index("first_name")] + +print(f"First name of employee 0: {first_name(0)}") + +# ===== TASK 5: FIND EMPLOYEE ===== +print("\n=== TASK 5: ===") +def employee_find(employee_id): + def employee_match(row): + return row[employee_id_column] == str(employee_id) + return list(filter(employee_match, employees["rows"])) + +employee_found = employee_find(1) +print(f"Employee found with ID 1: {employee_found}") + +# ===== TASK 6: FIND EMPLOYEE WITH LAMBDA ===== +print("\n=== TASK 6: ===") +def employee_find_2(employee_id): + return list(filter(lambda row: row[employee_id_column] == str(employee_id), employees["rows"])) + +employee_found_2 = employee_find_2(1) +print(f"Employee found with ID 1 (Lambda): {employee_found_2}") + +# ===== TASK 7: SORT BY LAST NAME ===== +print("\n=== TASK 7: ===") +def sort_by_last_name(): + last_name_col = column_index("last_name") + employees["rows"].sort(key=lambda row: row[last_name_col]) + return employees["rows"] + +sorted_by_last_name = sort_by_last_name() +print(f"Employees Sorted by Last Name: {sorted_by_last_name}") + +# ===== TASK 8: EMPLOYEE DICT ===== +print("\n=== TASK 8: ===") +def employee_dict(row): + return { + employees["fields"][i]: row[i] + for i in range(len(row)) + if employees["fields"][i] != "employee_id" + } + +employee_dict_result = employee_dict(employees["rows"][0]) +print(f"Employee Dict for First Employee: {employee_dict_result}") + +# ===== TASK 9: ALL EMPLOYEES DICT ===== +print("\n=== TASK 9: ===") +def all_employees_dict(): + return { + row[employee_id_column]: employee_dict(row) + for row in employees["rows"] + } + +all_employees = all_employees_dict() +print(f"All Employees as Dict: {all_employees}") + +# ===== TASK 10: OS MODULE ===== +print("\n=== TASK 10: ===") +def get_this_value(): + return os.getenv('THISVALUE', None) + +this_value = get_this_value() +print(f"Value of THISVALUE environment variable: {this_value}") + +# ===== TASK 11: CUSTOM MODULE ===== +print("\n=== TASK 11: ===") +def set_that_secret(new_secret): + custom_module.set_secret(new_secret) + +# (Assuming you need to set a secret; this would print confirmation if the module is used correctly) +set_that_secret("new_secret_123") +print("Secret set through custom_module.") + +# ===== TASK 12: READ MINUTES ===== +print("\n=== TASK 12: ===") +def read_minutes(): + def read_file(filename): + data = {"fields": [], "rows": []} + with open(filename, 'r') as file: + reader = csv.reader(file) + data["fields"] = next(reader) + data["rows"] = [tuple(row) for row in reader] + return data + + minutes1 = read_file('minutes.csv') + minutes2 = {"fields": minutes1["fields"], "rows": minutes1["rows"][:10]} # First 10 rows as sample + return minutes1, minutes2 + +minutes1, minutes2 = read_minutes() +print(f"Minutes Data (Full): {minutes1}") +print(f"Minutes Data (Sample, first 10 rows): {minutes2}") + +# ===== TASK 13: CREATE MINUTES SET ===== +print("\n=== TASK 13: ===") +def create_minutes_set(): + return set(minutes1["rows"]).union(set(minutes2["rows"])) + +minutes_set = create_minutes_set() +print(f"Minutes Set (Union of both): {minutes_set}") + +# ===== TASK 14: CONVERT TO DATETIME ===== +print("\n=== TASK 14: ===") +def create_minutes_list(): + return [ + (row[0], datetime.strptime(row[1], "%B %d, %Y")) + for row in minutes_set + ] + +minutes_list = create_minutes_list() +print(f"Minutes List with Dates: {minutes_list}") + +# ===== TASK 15: WRITE SORTED LIST ===== +print("\n=== TASK 15: ===") +def write_sorted_list(): + minutes_list.sort(key=lambda x: x[1]) + with open('minutes.csv', 'w', newline='') as file: + writer = csv.writer(file) + writer.writerow(["Name", "Date"]) + writer.writerows( + (name, date.strftime("%B %d, %Y")) + for name, date in minutes_list + ) + return [ + (name, date.strftime("%B %d, %Y")) + for name, date in minutes_list + ] + +sorted_minutes = write_sorted_list() +print(f"Sorted Minutes List: {sorted_minutes}") diff --git a/assignment2/csv/employees.csv b/assignment2/csv/employees.csv new file mode 100644 index 0000000..a5482f3 --- /dev/null +++ b/assignment2/csv/employees.csv @@ -0,0 +1,47 @@ +employee_id,first_name,last_name,department,position,salary +1,Jason,Tucker,Sales,Manager,50000 +2,Austin,Hester,Engineering,Developer,60000 +3,Daniel,Jackson,HR,Coordinator,45000 +4,Samantha,Johnson,Marketing,Assistant,40000 +5,Joseph,Harris,HR,Manager,55000 +6,Samantha,Johnson,Sales,Executive,47000 +7,Gina,Maldonado,Engineering,Developer,62000 +8,Samantha,Johnson,Marketing,Manager,52000 +9,Yesenia,Smith,Sales,Assistant,43000 +10,Lori,Martin,Engineering,Developer,60000 +11,Jonathan,Parrish,HR,Coordinator,47000 +12,Samantha,Johnson,Marketing,Assistant,40000 +13,Amanda,Brown,Sales,Manager,52000 +14,Sarah,Murray,HR,Assistant,43000 +15,Samantha,Johnson,Engineering,Developer,62000 +16,Austin,Hester,Marketing,Assistant,45000 +17,Jonathan,Parrish,Sales,Executive,55000 +18,Yesenia,Smith,Engineering,Manager,65000 +19,Daniel,Jackson,HR,Coordinator,46000 +20,Gina,Maldonado,Sales,Executive,50000 +21,Kimberly,Stewart,Engineering,Manager,65000 +22,Samantha,Johnson,Sales,Manager,53000 +23,Sarah,Murray,HR,Assistant,43000 +24,Aaron,Kaufman,Engineering,Developer,60000 +25,Tony,Henderson,Sales,Executive,48000 +26,Sarah,Murray,HR,Manager,54000 +27,Austin,Hester,Marketing,Coordinator,48000 +28,Joseph,Harris,HR,Executive,50000 +29,Gina,Maldonado,Sales,Manager,52000 +30,Aaron,Kaufman,Marketing,Manager,60000 +31,Daniel,Jackson,HR,Executive,48000 +32,Aaron,Kaufman,Sales,Manager,53000 +33,Aaron,Kaufman,HR,Manager,55000 +34,Tony,Henderson,Marketing,Coordinator,47000 +35,Yesenia,Smith,HR,Assistant,42000 +36,Joseph,Harris,Engineering,Coordinator,48000 +37,Jason,Tucker,Sales,Manager,49000 +38,Matthew,Russell,Marketing,Assistant,45000 +39,Lori,Martin,HR,Coordinator,46000 +40,Samantha,Johnson,Sales,Executive,51000 +41,Tony,Henderson,HR,Assistant,44000 +42,Gina,Maldonado,Sales,Manager,55000 +43,Sarah,Murray,HR,Coordinator,49000 +44,Gina,Maldonado,Sales,Executive,53000 +45,Austin,Hester,HR,Assistant,45000 +46,Samantha,Johnson,Sales,Executive,52000 diff --git a/assignment2/custom_module.py b/assignment2/custom_module.py new file mode 100644 index 0000000..8a6378b --- /dev/null +++ b/assignment2/custom_module.py @@ -0,0 +1,10 @@ +# Task 11 + #1. Create custom_module.py: +secret = "shazam!" # Initial value + +def set_secret(new_secret): + """Updates the secret variable globally.""" + global secret + secret = new_secret + + \ No newline at end of file diff --git a/assignment2/diary.py b/assignment2/diary.py index 37ca3e2..3d85189 100644 --- a/assignment2/diary.py +++ b/assignment2/diary.py @@ -2,223 +2,26 @@ import traceback try: - with open("diary.txt", "a") as file: # Open file in append mode - first_entry = True # Flag to check if it's the first input - + with open('diary.txt', 'a') as file: + first_prompt = True while True: - # If it is the first input, prompt for "What happened today?" - if first_entry: - entry = input("What happened today? ") - first_entry = False # Change the flag to False after the first input + if first_prompt: + entry = input("What happened today? ") + first_prompt = False else: entry = input("What else? ") - - # Check if the user enters 'done for now' - if entry.lower() == "done for now": - file.write(entry + "\n") # Write "done for now" to the file - break # Exit the loop after writing "done for now" - - # Write the user's entry to the file if it's not 'done for now' + file.write(entry + "\n") - + + if entry.lower() == "done for now": + break except Exception as e: - # Handle exceptions and print the traceback trace_back = traceback.extract_tb(e.__traceback__) - stack_trace = [] + stack_trace = list() for trace in trace_back: stack_trace.append(f'File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}') print(f"Exception type: {type(e).__name__}") message = str(e) if message: print(f"Exception message: {message}") - print(f"Stack trace: {stack_trace}") - - - -#Task 2: Read a CSV File -import csv -import traceback - -def read_employees(): - employees_data = {} - rows = [] - - try: - # Open the CSV file for reading - with open("../csv/minutes.csv", "r") as file: - csv_reader = csv.reader(file) - - # Get the first row as field names - employees_data["fields"] = next(csv_reader) # The first row is the header - - # Read the rest of the rows - for row in csv_reader: - rows.append(row) - - # Add the rows to the dictionary under the key "rows" - employees_data["rows"] = rows - - return employees_data - - except Exception as e: - # Catch and handle any exceptions - trace_back = traceback.extract_tb(e.__traceback__) - stack_trace = [] - for trace in trace_back: - stack_trace.append(f'File : {trace[0]} , Line : {trace[1]}, Func.Name : {trace[2]}, Message : {trace[3]}') - - print(f"Exception type: {type(e).__name__}") - message = str(e) - if message: - print(f"Exception message: {message}") - print(f"Stack trace: {stack_trace}") - exit(1) - -# Call the function and store the result in the 'employees' variable -employees = read_employees() - -# Print out the employees data to verify it's working correctly -print(employees) - - -#Task 3: Find the Column Index -def column_index(field_name): - return employees["fields"].index(field_name) - -# Test -employee_id_column = column_index("employee_id") -print(employee_id_column) - -#Task 4: Find the Employee First Name -def first_name(row_num): - column_idx = column_index("first_name") - return employees["rows"][row_num][column_idx] - -# Test -print(first_name(0)) # Get first name of the first employee - -#Task 5: Find the Employee:a Function in a Function -def employee_find(employee_id): - def employee_match(row): - return int(row[employee_id_column]) == employee_id - - matches = list(filter(employee_match, employees["rows"])) - return matches - -# Test -print(employee_find(1001)) - -#Task 6: Find the Employee with a Lambda -def employee_find_2(employee_id): - matches = list(filter(lambda row: int(row[employee_id_column]) == employee_id, employees["rows"])) - return matches - -# Test -print(employee_find_2(1001)) - -#Task 7: Sort the Rows by last_name Using a Lambda -def sort_by_last_name(): - last_name_column = column_index("last_name") - employees["rows"].sort(key=lambda row: row[last_name_column]) - return employees["rows"] - -# Test -sorted_employees = sort_by_last_name() -print(sorted_employees) - -#Task 8: Create a dict for an Employee -def employee_dict(row): - return {employees["fields"][i]: row[i] for i in range(len(row)) if employees["fields"][i] != "employee_id"} - -# Test -print(employee_dict(employees["rows"][0])) # Test for the first row - -#Task 9: A dict of dicts, for All Employees -def all_employees_dict(): - return {row[employee_id_column]: employee_dict(row) for row in employees["rows"]} - -# Test -print(all_employees_dict()) - -#Task 10: Use the os Module -# custom_module.py -secret = "shazam!" -def set_secret(new_secret): - global secret - secret = new_secret - -#Task 11: Creating Your Own Module - #1. Create custom_module.py: - # custom_module.py -secret = "shazam!" - -def set_secret(new_secret): - global secret - secret = new_secret - #2. In your main program: -import custom_module - -def set_that_secret(new_secret): - custom_module.set_secret(new_secret) - -# Test -set_that_secret("new_secret_value") -print(custom_module.secret) - -#Task 12: Read minutes1.csv and minutes2.csv -def read_minutes(): - def read_file(file_name): - minutes = {"fields": [], "rows": []} - try: - with open(file_name, mode='r') as file: - csv_reader = csv.reader(file) - minutes["fields"] = next(csv_reader) - for row in csv_reader: - minutes["rows"].append(tuple(row)) # Convert rows to tuple - except Exception as e: - print("An exception occurred: ", e) - return minutes - - minutes1 = read_file("../csv/minutes1.csv") - minutes2 = read_file("../csv/minutes2.csv") - return minutes1, minutes2 - -# Test -minutes1, minutes2 = read_minutes() -print(minutes1) -print(minutes2) - -#Task 13: Create minutes_set -def create_minutes_set(): - minutes1_set = set(minutes1["rows"]) - minutes2_set = set(minutes2["rows"]) - return minutes1_set.union(minutes2_set) - -# Test -minutes_set = create_minutes_set() -print(minutes_set) - -#Task 14: Convert to datetime -from datetime import datetime - -def create_minutes_list(): - minutes_list = list(minutes_set) - return list(map(lambda x: (x[0], datetime.strptime(x[1], "%B %d, %Y")), minutes_list)) - -# Test -minutes_list = create_minutes_list() -print(minutes_list) - -#Task 15: Write Out Sorted List -def write_sorted_list(): - minutes_list.sort(key=lambda x: x[1]) # Sort by datetime - with open("./minutes.csv", mode='w', newline='') as file: - csv_writer = csv.writer(file) - csv_writer.writerow(minutes1["fields"]) - for row in minutes_list: - csv_writer.writerow([row[0], row[1].strftime("%B %d, %Y")]) - return minutes_list - -# Test -sorted_minutes = write_sorted_list() -print(sorted_minutes) + print(f"Stack trace: {stack_trace}") \ No newline at end of file diff --git a/assignment2/diary.txt b/assignment2/diary.txt index 18908cb..28c611d 100644 --- a/assignment2/diary.txt +++ b/assignment2/diary.txt @@ -17,3 +17,9 @@ done for now done for now done fornow  +went to GYM +eat +Grocery +done for now +done for now + diff --git a/assignment2/minutes.csv b/assignment2/minutes.csv index 0acabb7..84a339b 100644 --- a/assignment2/minutes.csv +++ b/assignment2/minutes.csv @@ -1,46 +1,46 @@ Name,Date Jason Tucker,"September 20, 1980" -Austin Hester,"March 8, 1981" -Daniel Jackson,"October 2, 1981" +Austin Hester,"March 08, 1981" +Daniel Jackson,"October 02, 1981" Mrs. Samantha Johnson,"December 17, 1981" -Joseph Harris,"March 3, 1982" +Joseph Harris,"March 03, 1982" Mrs. Samantha Johnson,"March 12, 1982" Gina Maldonado,"December 16, 1982" Mrs. Samantha Johnson,"December 23, 1982" Yesenia Smith,"August 10, 1983" -Lori Martin,"February 5, 1984" +Lori Martin,"February 05, 1984" Jonathan Parrish,"June 12, 1984" Mrs. Samantha Johnson,"July 20, 1984" -Amanda Brown,"August 8, 1984" +Amanda Brown,"August 08, 1984" Sarah Murray,"October 30, 1984" Mrs. Samantha Johnson,"November 28, 1984" -Austin Hester,"June 4, 1985" +Austin Hester,"June 04, 1985" Jonathan Parrish,"March 18, 1986" -Yesenia Smith,"May 6, 1986" +Yesenia Smith,"May 06, 1986" Daniel Jackson,"December 13, 1986" Gina Maldonado,"February 13, 1987" Kimberly Stewart,"December 12, 1987" Mrs. Samantha Johnson,"July 10, 1988" Sarah Murray,"August 16, 1988" Aaron Kaufman,"October 24, 1988" -Tony Henderson,"November 7, 1988" +Tony Henderson,"November 07, 1988" Sarah Murray,"November 19, 1988" Austin Hester,"January 18, 1989" -Joseph Harris,"March 1, 1989" -Gina Maldonado,"April 7, 1989" +Joseph Harris,"March 01, 1989" +Gina Maldonado,"April 07, 1989" Aaron Kaufman,"November 14, 1989" -Daniel Jackson,"April 8, 1990" -Aaron Kaufman,"May 1, 1990" +Daniel Jackson,"April 08, 1990" +Aaron Kaufman,"May 01, 1990" Aaron Kaufman,"July 21, 1990" -Tony Henderson,"October 4, 1990" +Tony Henderson,"October 04, 1990" Yesenia Smith,"November 23, 1990" -Joseph Harris,"April 3, 1991" +Joseph Harris,"April 03, 1991" Jason Tucker,"April 30, 1991" Matthew Russell,"May 31, 1991" -Lori Martin,"July 8, 1991" +Lori Martin,"July 08, 1991" Mrs. Samantha Johnson,"July 23, 1991" Tony Henderson,"November 15, 1991" -Gina Maldonado,"February 9, 1992" +Gina Maldonado,"February 09, 1992" Sarah Murray,"June 27, 1992" Gina Maldonado,"October 31, 1992" Austin Hester,"December 10, 1992" diff --git a/assignment2/sorted_minutes.csv b/assignment2/sorted_minutes.csv new file mode 100644 index 0000000..84a339b --- /dev/null +++ b/assignment2/sorted_minutes.csv @@ -0,0 +1,47 @@ +Name,Date +Jason Tucker,"September 20, 1980" +Austin Hester,"March 08, 1981" +Daniel Jackson,"October 02, 1981" +Mrs. Samantha Johnson,"December 17, 1981" +Joseph Harris,"March 03, 1982" +Mrs. Samantha Johnson,"March 12, 1982" +Gina Maldonado,"December 16, 1982" +Mrs. Samantha Johnson,"December 23, 1982" +Yesenia Smith,"August 10, 1983" +Lori Martin,"February 05, 1984" +Jonathan Parrish,"June 12, 1984" +Mrs. Samantha Johnson,"July 20, 1984" +Amanda Brown,"August 08, 1984" +Sarah Murray,"October 30, 1984" +Mrs. Samantha Johnson,"November 28, 1984" +Austin Hester,"June 04, 1985" +Jonathan Parrish,"March 18, 1986" +Yesenia Smith,"May 06, 1986" +Daniel Jackson,"December 13, 1986" +Gina Maldonado,"February 13, 1987" +Kimberly Stewart,"December 12, 1987" +Mrs. Samantha Johnson,"July 10, 1988" +Sarah Murray,"August 16, 1988" +Aaron Kaufman,"October 24, 1988" +Tony Henderson,"November 07, 1988" +Sarah Murray,"November 19, 1988" +Austin Hester,"January 18, 1989" +Joseph Harris,"March 01, 1989" +Gina Maldonado,"April 07, 1989" +Aaron Kaufman,"November 14, 1989" +Daniel Jackson,"April 08, 1990" +Aaron Kaufman,"May 01, 1990" +Aaron Kaufman,"July 21, 1990" +Tony Henderson,"October 04, 1990" +Yesenia Smith,"November 23, 1990" +Joseph Harris,"April 03, 1991" +Jason Tucker,"April 30, 1991" +Matthew Russell,"May 31, 1991" +Lori Martin,"July 08, 1991" +Mrs. Samantha Johnson,"July 23, 1991" +Tony Henderson,"November 15, 1991" +Gina Maldonado,"February 09, 1992" +Sarah Murray,"June 27, 1992" +Gina Maldonado,"October 31, 1992" +Austin Hester,"December 10, 1992" +Mrs. Samantha Johnson,"December 12, 1992"