Searches the shop wizard for given item and determines price with given method
        
        Searches the shop wizard x times (x being number given in searches) for the
        given item and collects the lowest price from each result. Uses the given
        pricing method to determine and return the price of the item. Below is information
        on each pricing method available:
           ShopWizard.AVERAGE -- Average of the lowest prices
           ShopWizard.LOWDEDUCT -- Deducts x (x = deduct) from the lowest price
           ShopWizard.AVGDEDUCT -- Deducts x (x = deduct) from the average of the lowest prices
           ShopWizard.LOW -- Returns the lowest price
           ShopWizard.RETLOW -- Returns an Item instance of the lowest price found
           
        Parameters:
           usr (User) -- User to search with
           item (str, Item) -- Item to search for
           searches (int) -- Number of times to search for the item
           method (str) -- Pricing method
           deduct (int) -- Amount to deduct from the price (if applicable)
           
        Returns
           int -- The item price

def price(usr, item, searches = 2, method = "AVERAGE", deduct = 0):
        """ Searches the shop wizard for given item and determines price with given method
        
        Searches the shop wizard x times (x being number given in searches) for the
        given item and collects the lowest price from each result. Uses the given
        pricing method to determine and return the price of the item. Below is information
        on each pricing method available:
           ShopWizard.AVERAGE -- Average of the lowest prices
           ShopWizard.LOWDEDUCT -- Deducts x (x = deduct) from the lowest price
           ShopWizard.AVGDEDUCT -- Deducts x (x = deduct) from the average of the lowest prices
           ShopWizard.LOW -- Returns the lowest price
           ShopWizard.RETLOW -- Returns an Item instance of the lowest price found
           
        Parameters:
           usr (User) -- User to search with
           item (str, Item) -- Item to search for
           searches (int) -- Number of times to search for the item
           method (str) -- Pricing method
           deduct (int) -- Amount to deduct from the price (if applicable)
           
        Returns
           int -- The item price
        """
        if not method in ShopWizard.methods: raise invalidMethod()
        
        if isinstance(item, Item):
            item = item.name
        
        prices = []
        dets = {}
        for x in range(0, searches):
            results = ShopWizard.search(usr, item)
            
            # Set to -1 if not found
            if not results:
                prices.append(-1)
                continue
            
            prices.append(int(results[0].price))
            dets[str(results[0].price)] = (results[0].owner, results[0].id)
            
            time.sleep(ShopWizard.waitTime)
            
        # Determines if item was UB
        if sum(prices) == len(prices) * -1:
            return False
            
        prices = list(filter(lambda x: x != -1, prices))
            
        if method == ShopWizard.RETLOW:
            price = sorted(prices)[0]
            return (price, dets[str(price)][0], dets[str(price)][1])
            
        return ShopWizard.__determinePrice(prices, method, deduct)