class Alien:
    """ Class that defines an alien"""
    def __init__(self, color, weight):
        """ Constructor. Set name and color"""
        self.color = color
        self.weight = weight
        
def has_property(my_alien):
    """ Check to see if an item has a property.
    In this case, is the alien green? """
    if my_alien.color.upper() == "GREEN":
        return True
    else:
        return False        
    
def check_if_one_item_has_property_v1(my_list):
    """ Return true if at least one item has a
    property. """
    i = 0
    while i < len(my_list) and not has_property(my_list[i]):
        i += 1

    if i < len(my_list):
        # Found an item with the property
        return True
    else:
        # There is no item with the property
        return False    
    
def check_if_one_item_has_property_v2(my_list):
    """ Return true if at least one item has a
    property. Works the same as v1, but less code. """
    for item in my_list:
        if has_property(item):
            return True
    return False    

def check_if_all_items_have_property(my_list):
    """ Return true if at ALL items have a property. """
    for item in my_list:
        if not has_property(item):
            return False
    return True

def get_matching_items(list):
    """ Build a brand new list that holds all the items
    that match our property. """
    matching_list = []
    for item in list:
        if has_property(item):
            matching_list.append(item)
    return matching_list

def main():
    """ Test everything out. """
    alien_list = []
    alien_list.append(Alien("Green", 42))
    alien_list.append(Alien("Red", 40))
    alien_list.append(Alien("Blue", 41))
    alien_list.append(Alien("Purple", 40))
    
    result = check_if_one_item_has_property_v1(alien_list)
    print("Result of test check_if_one_item_has_property_v1:", result)
    
    result = check_if_one_item_has_property_v2(alien_list)
    print("Result of test check_if_one_item_has_property_v2:", result)
    
    result = check_if_all_items_have_property(alien_list)
    print("Result of test check_if_all_items_have_property:", result)
    
    result = get_matching_items(alien_list)
    print("Number of items returned from test get_matching_items:", len(result))
    
if __name__ == "__main__":
    main()