<-- Back to list of examples

class Alien:
    """ Clase que define un alien"""
    def __init__(self, color, peso):
        """ Constructor. Establece peso y color"""
        self.color = color
        self.peso = peso
        
def tiene_propiedad(mi_alien):
    """ Comprobamos si un item posee esa propiedad.
    En este caso, ¿es verde el alien? """
    if mi_alien.color.upper() == "VERDE":
        return True
    else:
        return False        
    
def comprueba_si_un_elemento_tiene_propiedad_v1(lista):
    """ Devuelve true si al menos un item tiene esa
    propiedad. """
    i = 0
    while i < len(lista) and not tiene_propiedad(lista[i]):
        i += 1

    if i < len(lista):
        # Encontrado un item con la propiedad
        return True
    else:
        # No hay ningún mitem con la propiedad
        return False    
    
def comprueba_si_un_elemento_tiene_propiedad_v2(lista):
    """ Devuelve true si al menos un item tiene esa
    propiedad. Funciona como v1, pero con menos código. """
    for item in lista:
        if tiene_propiedad(item):
            return True
    return False    

def comprueba_si_todos_elementos_tienen_propiedad(lista):
    """ Devuelve true si TODOS los items tienen una propiedad. """
    for item in lista:
        if not tiene_propiedad(item):
            return False
    return True

def obtener_elementos_coincidentes(lista):
    """ Construye una lista completamente nueva con todos los items
    que coincidan con nuestra propiedad. """
    listaCoincidentes = []
    for item in lista:
        if tiene_propiedad(item):
            listaCoincidentes.append(item)
    return listaCoincidentes

def main():
   """ Comprobamos todo. """
   lista_aliens = []
   lista_aliens.append(Alien("Verde", 42))
   lista_aliens.append(Alien("Rojo", 40))
   lista_aliens.append(Alien("Azul", 41))
   lista_aliens.append(Alien("Púrpura", 40))
    
   resultado = comprueba_si_un_elemento_tiene_propiedad_v1(lista_aliens)
   print("Resultado del test comprueba_si_un_elemento_tiene_propiedad_v1:", resultado)

   resultado = comprueba_si_un_elemento_tiene_propiedad_v2(lista_aliens)
   print("Resultado del test comprueba_si_un_elemento_tiene_propiedad_v1:", resultado)

   resultado = comprueba_si_todos_elementos_tienen_propiedad(lista_aliens)
   print("Resultado del test comprueba_si_todos_elementos_tienen_propiedad:", resultado)

   resultado = obtener_elementos_coincidentes(lista_aliens)
   print("Número de items devueltos por el test obtener_elementos_coincidentes:", len(resultado))
    
   
    
if __name__ == "__main__":
    main()