# US Medical Insurance Costs Class Method Help

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?