Почему у Python нет цикла «делать пока», как и многие другие языки программирования, такие как C?Python: Почему нет цикла while в python
Пример: В C мы делаем во время цикла, как показано ниже: не
do {
statement(s);
} while(condition);
Почему у Python нет цикла «делать пока», как и многие другие языки программирования, такие как C?Python: Почему нет цикла while в python
Пример: В C мы делаем во время цикла, как показано ниже: не
do {
statement(s);
} while(condition);
Существует нет do...while
цикла, потому что нет хороший способ определить, что соответствует в схеме statement: indented block
используется любой другой Составной оператор Python. Поскольку такие предложения для добавления такого синтаксиса никогда не достигали согласия.
Не является ли на самом деле необходимость иметь такую конструкцию, не тогда, когда вы можете просто сделать:
while True:
# statement(s)
if not condition:
break
и имеют тот же эффект, как C do { .. } while condition
цикла.
См PEP 315 -- Enhanced While Loop:
Отклонено [...] потому что синтаксис не возникло, что может конкурировать с следующей форме:
while True: <setup code> if not <condition>: break <loop body>
Синтаксис альтернативы предложенному в PEP был найдена для базовой петли, но она получила небольшую поддержку, так как состояние было наверху:
do ... while <cond>: <loop body>
или, как Guido van Rossum put it:
Пожалуйста отвергаем PEP. Больше изменений в этих строках не сделает язык более элегантным или более простым в изучении. Они просто сэкономили несколько поспешных людей, которые печатали, делая других, которые должны читать/поддерживать свой код. интересно, что это значит.
Статус * Отклонено *: https://www.python.org/dev/peps/pep-0315/ –
Возможный дубликат [Эмуляция сделай, а цикл в Python?] (HTTP: // StackOverflow. com/questions/743164/emulate-a-do-while-loop-in-python) – miradulo
Повторное уведомление: ссылка, предоставленная Martijn, не выглядит очень основанной на мнениях: «Последующие усилия по возрождению ОПТОСОЗ в апреле 2009 года не встречаются с успехом, потому что не возникло синтаксиса, который мог бы состязаться ... » –