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
168 changes: 167 additions & 1 deletion assignment1/assignment1.py
Original file line number Diff line number Diff line change
@@ -1 +1,167 @@
# Write your code here.
# Write your code here.

# task 1
def hello():
return "Hello!"

# task 2


def greet(name):
return f"Hello, {name}!"

# task 3


def calc(a, b, operation="multiply"):
try:
match operation:
case "add":
return a + b
case "subtract":
return a - b
case "multiply":
return a * b
case "divide":
return a/b
case "modulo":
return a % b
case "int_divide":
return a // b
case "power":
return a ** b
except ZeroDivisionError:
return "You can't divide by 0!"
except TypeError:
return "You can't multiply those values!"

# task 4


def data_type_conversion(value, requested_type):
try:
if requested_type == "float":
return float(value)
elif requested_type == "str":
return str(value)
elif requested_type == "int":
return int(value)
except (ValueError, TypeError):
return f"You can't convert {value} into a {requested_type}."

# task 5


# Task 5
def grade(*args):
try:
average = sum(args) / len(args)

if average >= 90:
return "A"
elif average >= 80:
return "B"
elif average >= 70:
return "C"
elif average >= 60:
return "D"
else:
return "F"
except (TypeError, ZeroDivisionError):
return "Invalid data was provided."

# task 6


def repeat(text, count):
result = ""
for _ in range(count):
result += text
return result


print(repeat("hi", 3))

# task 7


def student_scores(option, **kwargs):
if option == "best":
best_student = ""
highest_score = -1

for key, value in kwargs.items():
if value > highest_score:
highest_score = value
best_student = key

return best_student
elif option == "mean":
total = 0

for value in kwargs.values():
total += value

return total / len(kwargs)


print(student_scores("mean", Alice=90, Bob=85, Carol=95))


# task 8

def titleize(text):
little_words = ["a", "on", "an", "the", "of", "and", "is", "in"]
words = text.split()

for index, word in enumerate(words):
lower_word = word.lower()

if index == 0 or index == len(words) - 1:
words[index] = word.capitalize()
elif word in little_words:
words[index] = word.lower()
else:
words[index] = word.capitalize()
return " ".join(words)


# task 9
def hangman(secret, guess):
result = ""

for letter in secret:
if letter in guess:
result += letter
else:
result += "_"
return result


print(hangman("alphabet", "ab"))


# Task 10
def pig_latin(text):
vowels = "aeiou"
words = text.split()
result = []

for word in words:
if word[0] in vowels:
result.append(word + "ay")
else:
index = 0

while index < len(word) and word[index] not in vowels:
if word[index:index + 2] == "qu":
index += 2
break
index += 1

result.append(word[index:] + word[:index] + "ay")

return " ".join(result)


print(pig_latin("apple"))
1 change: 1 addition & 0 deletions assignment1/tempCodeRunnerFile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

226 changes: 226 additions & 0 deletions assignment2/assignment2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
# Task 2: Read a CSV File
import csv
import traceback
import os
import custom_module
from datetime import datetime


def read_employees():
employees_dict = {}
rows = []

try:
with open("../csv/employees.csv", "r", newline="") as file:
reader = csv.reader(file)

for index, row in enumerate(reader):
if index == 0:
employees_dict["fields"] = row
else:
rows.append(row)

employees_dict["rows"] = rows
return employees_dict

except (Exception, KeyboardInterrupt) as e:
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("An exception occurred.")
print(f"Exception type: {type(e).__name__}")

message = str(e)
if message:
print(f"Exception message: {message}")

print(f"Stack trace: {stack_trace}")
raise


employees = read_employees()
print(employees)


# Task 3: Find the Column Index
def column_index(column_name):
return employees["fields"].index(column_name)


employee_id_column = column_index("employee_id")
print(employee_id_column)


# Task 4: Find the Employee First Name
def first_name(row_number):
first_name_column = column_index("first_name")
return employees["rows"][row_number][first_name_column]


# Task 5: Find the Employee
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


# 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


# 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"]


sort_by_last_name()
print(employees)


# Task 8: Create a dict for an Employee
def employee_dict(row):
employee = {}

for index, field in enumerate(employees["fields"]):
if field != "employee_id":
employee[field] = row[index]

return employee


print(employee_dict(employees["rows"][0]))


# Task 9: A dict of dicts, for All Employees
def all_employees_dict():
all_employees = {}

for row in employees["rows"]:
employee_id = row[employee_id_column]
all_employees[employee_id] = employee_dict(row)

return all_employees


print(all_employees_dict())


# Task 10: Use the os Module
def get_this_value():
return os.getenv("THISVALUE")


# Task 11: Creating Your Own Module
def set_that_secret(new_secret):
custom_module.set_secret(new_secret)


set_that_secret("open sesame")
print(custom_module.secret)


# Task 12: Read minutes1.csv and minutes2.csv
def read_csv_to_dict(path):
data = {}
rows = []

try:
with open(path, "r", newline="") as file:
reader = csv.reader(file)

for index, row in enumerate(reader):
if index == 0:
data["fields"] = row
else:
rows.append(tuple(row))

data["rows"] = rows
return data

except (Exception, KeyboardInterrupt) as e:
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("An exception occurred.")
print(f"Exception type: {type(e).__name__}")

message = str(e)
if message:
print(f"Exception message: {message}")

print(f"Stack trace: {stack_trace}")
raise


def read_minutes():
minutes1 = read_csv_to_dict("../csv/minutes1.csv")
minutes2 = read_csv_to_dict("../csv/minutes2.csv")
return minutes1, minutes2


minutes1, minutes2 = read_minutes()
print(minutes1)
print(minutes2)


# Task 13: Create minutes_set
def create_minutes_set():
set1 = set(minutes1["rows"])
set2 = set(minutes2["rows"])
return set1.union(set2)


minutes_set = create_minutes_set()
print(minutes_set)


# Task 14: Convert to datetime
def create_minutes_list():
minutes = list(minutes_set)
minutes = list(
map(lambda x: (x[0], datetime.strptime(x[1], "%B %d, %Y")), minutes)
)
return minutes


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])

converted_list = list(
map(lambda x: (x[0], datetime.strftime(
x[1], "%B %d, %Y")), minutes_list)
)

with open("./minutes.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(minutes1["fields"])
writer.writerows(converted_list)

return converted_list


print(write_sorted_list())
Loading