Hello, I am getting a key error when I run my program. It is saying that i do not have ch defined in my dictionary(the code it is referring to is towards the bottom. I thought I had defined it by this: ch= input('\nEnter your menu choice:').upper() and I have it BEFORE the choice_option= ; which is what a lot of you suggested was wrong with it. If youll look at my code, I believe the ch=input is definitely a line before choice_option =. Please correct me if I am wrong and help me figure this out. I have been beating my head against the wall for 24 hours trying to figure this out. The code I am referring to and need help on is towards the bottom. Is it maybe an indentation error; cause again everyone said its because it isnt prior to the dicitonary but it is. Please help. def display_averages_and_totals(): try: with open ("HowManyHours.txt", "r") as file:#read data from file data = file.readlines() create_report() total_credits = 0 total_study_hours = 0 total_students = 0 for line in data: values = line.strip().split(",")#using a delimiter to split the line into a list of values student = values[0] total_credits += int(values[1]) total_study_hours += int(values[2]) grade = values[3] total_students += 1#calculating total students average_credits = total_credits / total_students#calculating average credits. average_study_hours = total_study_hours / total_students#calculating average study hours. print("Study Hours Report\n") print(f"Created for:{report2.report_for},{report2.report_employee_id}\n") print(f"Department:{report2.report_department}\n") print(f"Created By: {report1.creator_name},{report1.creator_employee_id}\n") print(f"Department:{report1.creator_department}\n") print(f"Total Students: {total_students}\n") print(f"Average Credits: {average_credits:.2f}\n") print(f"Average Study Hours: {average_study_hours:.2f}\n") ## report1 = Report(creator_name, creator_employee_id, creator_department)#, report_for, report_employee_id, report_department) ## ## report_for = input("Enter the name of the report the person is for:") ## report_employee_id = input("Enter the employee id of the person the report is for:") ## report_department = input("Enter the department of the person the report is for:") ## ## report2 = Report(report_for, report_employee_id, report_department) except FileNotFoundError: raise FileNotFoundError("HowManyHours.txt is not found.") if __name__=='__main__': print('\t\t\tMain Menu')#main menu print('A: Determine Hours to Study:') print('B: Determine Grade:') print('C: Display Averages and Totals:') print('D: Quit Program'); ch= input('\nEnter your menu choice:').upper() choice_option = {#menu options the user gets to choose from 'A': determineHours, 'B': determine_grade, 'C': display_averages_and_totals, 'D': quit } choice_option[ch]()
Hello, I am getting a key error when I run my program. It is saying that i do not have ch defined in my dictionary(the code it is referring to is towards the bottom. I thought I had defined it by this: ch= input('\nEnter your menu choice:').upper() and I have it BEFORE the choice_option= ; which is what a lot of you suggested was wrong with it. If youll look at my code, I believe the ch=input is definitely a line before choice_option =. Please correct me if I am wrong and help me figure this out. I have been beating my head against the wall for 24 hours trying to figure this out. The code I am referring to and need help on is towards the bottom. Is it maybe an indentation error; cause again everyone said its because it isnt prior to the dicitonary but it is. Please help.
def display_averages_and_totals():
try:
with open ("HowManyHours.txt", "r") as file:#read data from file
data = file.readlines()
create_report()
total_credits = 0
total_study_hours = 0
total_students = 0
for line in data:
values = line.strip().split(",")#using a delimiter to split the line into a list of values
student = values[0]
total_credits += int(values[1])
total_study_hours += int(values[2])
grade = values[3]
total_students += 1#calculating total students
average_credits = total_credits / total_students#calculating average credits.
average_study_hours = total_study_hours / total_students#calculating average study hours.
print("Study Hours Report\n")
print(f"Created for:{report2.report_for},{report2.report_employee_id}\n")
print(f"Department:{report2.report_department}\n")
print(f"Created By: {report1.creator_name},{report1.creator_employee_id}\n")
print(f"Department:{report1.creator_department}\n")
print(f"Total Students: {total_students}\n")
print(f"Average Credits: {average_credits:.2f}\n")
print(f"Average Study Hours: {average_study_hours:.2f}\n")
## report1 = Report(creator_name, creator_employee_id, creator_department)#, report_for, report_employee_id, report_department)
##
## report_for = input("Enter the name of the report the person is for:")
## report_employee_id = input("Enter the employee id of the person the report is for:")
## report_department = input("Enter the department of the person the report is for:")
##
## report2 = Report(report_for, report_employee_id, report_department)
except FileNotFoundError:
raise FileNotFoundError("HowManyHours.txt is not found.")
if __name__=='__main__':
print('\t\t\tMain Menu')#main menu
print('A: Determine Hours to Study:')
print('B: Determine Grade:')
print('C: Display Averages and Totals:')
print('D: Quit Program');
ch= input('\nEnter your menu choice:').upper()
choice_option = {#menu options the user gets to choose from
'A': determineHours,
'B': determine_grade,
'C': display_averages_and_totals,
'D': quit
}
choice_option[ch]()
Step by step
Solved in 2 steps with 3 images