При первой попытке (попытках) понять природу использования цикла while, столкнулся со сложностями усваивания информации... возникали вопросы: "зачем?", "для чего?", "есть же цикл for, где и как применять while?"
Пробую проникнуться темой и впитать материал.
Пример использования цикла while из урока: когда у нас есть list и возникает необходимость удалить из листа элементы:
my_list = [0, 1, 2, 3, 4, 5]
while my_list:
element = my_list.pop()
print(f'element: {element}')
print(my_list)
Результат:
element: 5
element: 4
element: 3
element: 2
element: 1
element: 0
[]
Пояснение:
while my_list: -> буквально значит, что "пока в листе есть элементы, element = my_list.pop() -> pop отвечает за удаление элементов в списке" ... сложно объяснить это самому себе... однако вот подробное объяснение...:
1. Этот код использует цикл while для удаления и печати каждого элемента из конца списка my_list, пока список не станет пустым.
2. Метод pop() удаляет последний элемент списка.
3. Последний оператор печати выводит пустой список [], поскольку все элементы были удалены из my_list методом pop().
Наиподробнейшее(!) объяснение:
Данный код представляет собой скрипт, который использует цикл while и метод pop() для управления списком, а именно:
1. Инициализация: список my_list инициализируется целыми числами от 0 до 5.
my_list = [0, 1, 2, 3, 4, 5]
2. Цикл while: данный цикл продолжается до тех пор, пока my_list не пуст (в Python (в логическом контексте) пустой список считается «False» (булево значение)), а непустой список считается «True».
3. Метод Pop: внутри цикла while метод pop() вызывается для my_list. Данный метод удаляет последний элемент из списка и возвращает его. Возвращаемое значение сохраняется в переменной «element».
element = my_list.pop()
4. Печать оператора: затем печатается значение элемента f-string (форматированный строковый литерал) - это функция, которая позволяет вставлять выражения внутри строковых литералов, используя фигурные скобки {}. Выражения будут заменены их значениями при создании строки.
print (f'element: {element}')
5. Пустой список: после того, как все элементы были извлечены и напечатаны, my_list становится пустым. Условие цикла while теперь имеет значение False, поэтому цикл завершается (ура!).
6. Окончательная печать: последняя строка кода печатает теперь пустой(!) my_list.
print(my_list)
Результат:
[]
Таким образом, общий эффект кода состоит в том, чтобы напечатать каждый элемент исходного списка, начиная с конца, а затем напечатать пустой список (это ад...).
Еще пример использования цикла while:
while True:
answer = input('Enter a number: ')
if answer == 'quit':
break
print(f'You entered {answer}')
Результат:
Enter a number: 1
You entered 1
Enter a number: 2
You entered 2
Enter a number: 3
You entered 3
Enter a number: quit
Process finished with exit code 0
Пояснение:
1. Это скрипт, который постоянно просит пользователя ввести число.
2. Цикл продолжается бесконечно, пока пользователь не введет 'quit' ('выход'), после чего цикл прерывается и программа завершается.
3. Если пользователь вводит что-либо кроме 'quit', программа распечатает ввод с сообщением «You entered {answer}».
(!)Обратите внимание, что данный сценарий будет выполняться бесконечно, если его не остановить вручную или не ввести команду «quit».