Source code for gradecalculatorpy.construct_course

import pandas as pd
import os

[docs]def construct_course(course_name, output_file_path): """ Allow user to input course components' information (component name and coresponding weight) one by one. Course components could be the following for example: 1. Assignment(s) 2. Quiz(s) 3. Lab(s) 4. Midterm(s) 5. Final(s) 6. Any user self-defined course component name(s) Save the course information as a .csv file (named based on the 'course_name' paramater) to the file path specified by 'output_file_path' paramater Parameters ---------- course_name: str The course name as a string. It will be used as the output file name output_file_path: str Path to the output .csv file (named based on the 'course_name' paramater) under the current working directory as a string. The purpose to save under the current working directory it to avoid permission issue. Returns ------- None Examples -------- >>> construct_course('dsci524', '/') """ course_total_weight = 0 course_df = pd.DataFrame(columns = ["Components", "Weights (%)", "Grades (%)"]) index = 0 while course_total_weight < 100: curr_component = [] curr_component_name = input(f"What is name of {course_name} component #{index+1}? ") # Check if the weight input can be parsed as integer curr_component_weight_input = input(f"What is weight(%) of {course_name} component #{index+1}? ") while not curr_component_weight_input.isdigit(): curr_component_weight_input = input(f"Input weight(%) of {course_name} component #{index+1} as integer? ") curr_component_weight = int(curr_component_weight_input) # Check if the total weight not over 100% while course_total_weight + curr_component_weight > 100: curr_component_weight = int(input(f"Double check the weight of {course_name} component #{index+1}, ensure total weight not over 100%? ")) curr_component.append(curr_component_name) curr_component.append(curr_component_weight) curr_component.append(float('nan')) course_df.loc[index] = curr_component course_total_weight += curr_component_weight index += 1 # save course construction dataframe as csv file cwd = os.getcwd() path = cwd + output_file_path filepath = os.path.join(path, course_name + ".csv") course_df.to_csv(filepath) print(course_df)