I think I did everything correctly, but the base case return None, instead of False if the value does not exists. I cannot understand why.
def binary_search(lst, value):
    if len(lst) == 1:
        return lst[0] == value
    mid = len(lst)/2
    if lst[mid] < value:
        binary_search(lst[:mid], value)
    elif lst[mid] > value:
        binary_search(lst[mid+1:], value)
    else:
        return True
print binary_search([1,2,4,5], 15)
 
     
     
     
     
     
     
     
     
     
    