Question: I'm wondering if there is a way to type hint when I expect a list that I **know** will end with `bool` and start with a variable number of `int`s?

What I'm effectively trying to do is

```py
def f(xs: List[int, ..., bool]):
    pass

```

where `...` is some variable number of `int`s (zero or more).

Answer: 
The problem lies in your \_get\_user\_info function. I added the missing entries in the function below. Also, as Tim Roberts said, you don't need to wrap input with str. input function returns a string in python 3. Find the new code below

```
def _get_user_info():
    while True:
        try:
            pid = int(input("Please enter your 5-digit patient id: "))
            p_name = input("Please enter patient first name and last name: ")          
            weight = float(input('Enter weight in pounds: '))
            height = float(input('Enter height in inches: '))

            if 0 < weight and 0 < height < 107:
                return pid, p_name,weight, height
            else:
                raise ValueError('Invalid height or weight. Let us start over.')
        except ValueError:
            print('Invalid height or weight input')
            continue

```
The return statement was missing the pid and the p\_name values at lines 39 and 49.

The new code looks like this:

```
class BodyMassIndex:

    def __init__(self, pid, name, weight, height):
        self.patient_id = pid
        self.name = name
        self.weight = weight
        self.height = height

    @property
    def body_mass_index(self):
        return round((self.weight * 703) / self.height ** 2, 1)

    @property
    def score(self):
        if 18.5 < self.body_mass_index < 25:
            return 'normal weight'
        elif 25 < self.body_mass_index < 30:
            return 'overweight'
        elif self.body_mass_index > 30:
            return 'obese'
        else:
            return 'underweight'

    def print_score(self):
        ##print('For {}:{}'.format(self.patient_id, self.name))
        print('Your Body Mass Index score is: {}'.format(self.body_mass_index))
        print('You are {}'.format(self.score))

def _get_user_info():
    while True:
        try:
            pid = int(input("Please enter your 5-digit patient id: "))
            p_name = str(input("Please enter patient first name and last name: "))            
            weight = float(input('Enter weight in pounds: '))
            height = float(input('Enter height in inches: '))

            if 0 < weight and 0 < height < 107:
                return pid, p_name, weight, height
            else:
                raise ValueError('Invalid height or weight. Let us start over.')
        except ValueError:
            print('Invalid height or weight input')
            continue

def calculate_bmi():
    pid, name, weight, height = _get_user_info()
    return BodyMassIndex(pid, name, weight, height)

if __name__ == '__main__':
    bmi = calculate_bmi()
    bmi.print_score()

```