def binarySearchIterative(needle, haystack, left=None, right=None):
# By default, `left` and `right` span the entire range of `haystack`:
if left is None:
left = 0 # `left` defaults to the 0 index.
if right is None:
right = len(haystack) - 1 # `right` defaults to the last index.
while True:
print('Searching:', haystack[left:right + 1])
if left > right:
return None # The `needle` is not in `haystack`.
mid = (left + right) // 2
if needle == haystack[mid]:
return mid # The `needle` has been found in `haystack`
elif needle < haystack[mid]:
right = mid - 1
elif needle > haystack[mid]:
left = mid + 1
print(binarySearchIterative(13, [1, 4, 8, 11, 13, 16, 19, 19]))