Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 162 additions & 0 deletions assignment2/assignment2.py
Original file line number Diff line number Diff line change
@@ -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}")
47 changes: 47 additions & 0 deletions assignment2/csv/employees.csv
Original file line number Diff line number Diff line change
@@ -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
10 changes: 10 additions & 0 deletions assignment2/custom_module.py
Original file line number Diff line number Diff line change
@@ -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


27 changes: 27 additions & 0 deletions assignment2/diary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Task 1: Diary
import traceback

try:
with open('diary.txt', 'a') as file:
first_prompt = True
while True:
if first_prompt:
entry = input("What happened today? ")
first_prompt = False
else:
entry = input("What else? ")

file.write(entry + "\n")

if entry.lower() == "done for now":
break
except Exception as e:
trace_back = traceback.extract_tb(e.__traceback__)
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}")
25 changes: 25 additions & 0 deletions assignment2/diary.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
went to gym
eat
grocery

done for now
done for now

wnet to gym
went to eat
grocery
done for now
done for now

went yo gym
eat
done for now
done for now
done fornow

went to GYM
eat
Grocery
done for now
done for now

32 changes: 16 additions & 16 deletions assignment2/minutes.csv
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
47 changes: 47 additions & 0 deletions assignment2/sorted_minutes.csv
Original file line number Diff line number Diff line change
@@ -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"