Python Binary Search
numList is not used (this is "ok" as numList[i] == i). There is value == mid or value == end several times. But this just means you are comparing a value to be found with an index. The correct way would be value == numList[mid].

Consider using a function that does the binsearch for you.

You may or may not use recursion. There is a nice way to do binsearch without recursion.

I have also incorporated some naming conventions of python. If you are interested try programs like pylint. I have also added a bit nicer string formatting and some other python features you can live without but can come handy.

"""Binary search."""
from random import randint

def bin_search(sorted_list, to_find):
    """Searches the sorted_list for a to_find.
    If the to_find is found return (True, index)
    Otherwise return (False, 0)
    """
    beg = 0
    end = len(sorted_list) - 1
    while beg &lt;= end:
        mid = (end + beg) // 2  # integer division
        if sorted_list[mid] == to_find:
            return (True, mid)
        if sorted_list[mid] &lt; to_find:
            (beg, end) = (mid + 1, end)
        else:  # sorted_list[mid] &gt; to_find
            (beg, end) = (beg, mid - 1)
    return (False, 0)

# Create a sorted list of random numbers
MY_LIST = sorted(randint(0, 100) for _ in range(20))
print(MY_LIST)

while True:
    try:
        TO_FIND = int(input('Enter value you want to find: '))
        (FOUND, INDEX) = bin_search(sorted_list=MY_LIST, to_find=TO_FIND)
        if FOUND:
            print(f'Found {TO_FIND} at index: {INDEX}!')
        else:
            print(f'Value {TO_FIND} not found!')
    except ValueError:
        print('Invalid number to find')
```