Hi all,
I built this project using a class and then defining class methods. One of the analysis I am trying to perform is average cost by region. Here is the relevant code:
Class Method:
# Average cost by region*
def avg_cost_by_region(self):
southwest = 0
northwest = 0
southeast = 0
northeast = 0
counter = 0
while counter <= len(self.patient_regions):
if self.patient_dict['region'][counter] == 'southwest':
southwest += float(self.patient_dict['charges'][counter])
counter += 1
elif self.patient_dict['region'][counter] == 'northwest':
northwest += float(self.patient_dict['charges'][counter])
counter += 1
elif self.patient_dict['region'][counter] == 'southeast':
southeast += float(self.patient_dict['charges'][counter])
counter += 1
else:
northeast += float(self.patient_dict['charges'][counter])
counter += 1
print(f'''The average cost by region is:
Southwest: ${southwest}
Northwest: ${northwest}
Southeast: ${southeast}
Northeast: ${northeast}''')
Error Message when I try to call it (patients_info is the instantiated class object):
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Input In [40], in <cell line: 1>()
----> 1 patients_cost_by_region = patients_info.avg_cost_by_region()
Input In [31], in PatientsInfo.avg_cost_by_region(self)
84 counter = 0
85 while counter <= len(self.patient_regions):
---> 86 if self.patient_dict['region'][counter] == 'southwest':
87 southwest += float(self.patient_dict['charges'][counter])
88 counter += 1
IndexError: list index out of range
I’ve called a direct reference to a random index within the dictionary and it returns what I’d expect. For example:
This returns “southwest” which is what I expected.
counter = 0
print(patients_dictionary['region'][counter])
I’m not sure why I am getting this error. I believe my class method should be able to take a reference to the class method I used to create the dictionary. Any thoughts on why the script thinks I’m out of range when it was only on the first call?