Вложенные пока петли не работают

Я пытаюсь использовать цикл while, чтобы найти совпадение между двумя значениями. Один является статическим, а другой - записью в списке. Это код:

 while count != 10:

    for x in rawinput[pos]:
       a = ord(x)
       hash = hash + a

    print hashlist[247]
    print hash
    print wordlist[247]

    while hash != hashlist[247]:
       pass


    print wordlist[247]
    hash = 0 
    count = count + 1

В действительности, хэш ДОЛЖЕН равняться хэш-листу [247], но вместо того, чтобы распознать его и продолжить код с печатным списком слов [247], python зависает во вложенном цикле while. Есть идеи или предложения?

Спасибо!

Редактировать: Исправлены отступы и удалены не относящиеся к делу переменные.

Редактирование #2: Все переменные определены ранее в скрипте. Это всего лишь фрагмент кода, который доставляет мне неприятности. Hash и Hashlist[247] равны (выводят print hash и print hashlist[247] каждый по 848).

Редактировать № 3: решено - спасибо за помощь!

4 ответа

Решение

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

Спасибо всем за вашу помощь!

Для тех, у кого есть похожие проблемы:

ДВОЙНОЙ ПРОВЕРИТЬ СВОИ ВИДЫ!!!

Код, который вы разместили, не вкладывает циклы while.

while count != 10:

    for x in rawinput[pos]:
       a = ord(x)
       hash = hash + a

Это единственный соответствующий код. Это бесконечный цикл, предполагая, что отсчет не начался с 10.

Вещь 1: Pythonic способ сделать что-то 10 раз

for _ in range(10):
    ...

Дело 2: ясно, что Python думает, что hash != hashlist[247], или это не будет петля бесконечно. Пытаться print hash, hashlist[247], hash == hashlist[247] Проверять.

Дело 3: какой смысл while cond: pass тем не мение? Вы пытаетесь делать многопоточные вещи или что-то?

Учитывая обновленный пост (с отступом кода): верхний уровень while будет бесконечным, если начальное значение count больше, чем 10,

Кроме того, если hash != hashlist[247]следующий цикл также будет бесконечным (если нет __getitem__, __eq__ и изменение значений из другого потока):

...
while hash != hashlist[247]:
   pass
...
Другие вопросы по тегам