Почему бинарный поиск длиться бесконечно?

Я решал 9 задачу из проекта Эйлера и решил использовать бинарный поиск. Что то пошло не так, программа доходит до поиска и на этом моменте ничего не происходит. Я анализировал что не так, но ничего кроме того что происходит именно бесконечный бинарный поиск ничего не понял. Что с ней не так:

def nums(x, y, z):
    if resx[x] + resx[y] == resx[z]:
        return True
def findx(x):
    nlist = resx[:]
    while True:
        mid = len(nlist) // 2
        if nlist[mid] == x:
            return mid
        elif nlist[mid] > x:
            nlist = nlist[:mid]
        else:
            nlist = nlist[mid:]
def findy(y):
    nlist = resx[:]
    while True:
        mid = len(nlist) // 2
        if nlist[mid] == y:
            return mid
        elif nlist[mid] > y:
            nlist = nlist[:mid]
        else:
            nlist = nlist[mid:]
def findz(z):
    nlist = resx[:]
    while True:
        mid = len(nlist) // 2
        if nlist[mid] == z:
            return mid
        elif nlist[mid] > z:
            nlist = nlist[:mid]
        else:
            nlist = nlist[mid:]

def find(x, y, z):
    return findx(x), findy(y), findz(z)


resx = list()
resy = list()
for i in range(1, 1001):
    resy.append(i)
    resx.append(i ** 2)
for x in resy:
    for y in resy:
        for z in resy:
            if x + y + z == 1000:
                 x, y, z = find(x, y, z)
                 if resx[x] * resx[y] == resx[z]:
                     print(resy[x], resy[y], resy[z], resy[x] * resy[y] * resy[z])

Вот так звучит сама задача если зачем то понадобится:
Тройка Пифагора - три натуральных числа a < b < c, для которых выполняется равенство

a2 + b2 = c2 Например, 32 + 42 = 9 + 16 = 25 = 52.

Существует только одна тройка Пифагора, для которой a + b + c = 1000. Найдите произведение abc.


Ответы (0 шт):