Цикл While вводится при True или False

#recursion #while-loop #python-3.8

#рекурсия #цикл while #python-3.8

Вопрос:

Когда я запускаю эту функцию, она выводится непрерывно.

 def func(l):
    print(f' at begining not isnull{not isnull(l)}')
    while not isnull(l):
        print(f'in while loop isnull return is {isnull(l)}')
        islat(l[1:])
    return "At return." 
  

Вывод, который просто выполняется до тех пор, пока я не нажму ctl-c.

 >>> func(["this"])
 At function begining: Not isnull(l) returns True
in while loop: Not isnull(l) returns True
 At function begining: Not isnull(l) returns False
in while loop: Not isnull(l) returns True
 At function begining: Not isnull(l) returns False
in while loop: Not isnull(l) returns True
 At function begining: Not isnull(l) returns False
in while loop: Not isnull(l) returns True
 At function begining: Not isnull(l) returns False
  

Я не понимаю, почему вводится цикл while, когда not isnull является True или False?

Комментарии:

1. какова ваша функция isnull

2. isnull проверяет, является ли список instance и пуст ли он.

3. что такое функция islat

4. Я думаю, что ваша ошибка заключается в ваших определенных методах, таких как islat и isnull. покажите эти методы, чтобы узнать, что вы там делаете

Ответ №1:

цикл while будет выполняться, пока данное выражение имеет значение True. В вашем случае данное выражение равно not isnull . Поскольку isnull False not isnull равно True, следовательно, цикл выполняется до isnull тех пор, пока не станет True

Комментарии:

1. Меня смущает, что при первом запуске он вводит цикл while со значением True, а затем вводит цикл while, когда значение равно False, для следующих случаев?