Не работает блок if в цикле while Python 3.7.2

Почему при первом вводе "quit" моя программа не прерывает циклвведите сюда описание изображения while? В переменно answer уже сохранено значение "quit", но программа все ровно продолжает цикл while, игнорируя проверку if

file = "answer.txt"
active = True
message2 = "do you have any other reasons? (if you wanna to quit press'quit')"
message = "Why do you like programming? (if you wanna to quit press'quit')"
answer = input(message)
while active:
    if answer == "quit":
        active = False
    with open(file, "a") as file_object:
        file_object.write(f"{answer}\n")
    answer = input(message2)

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

Автор решения: Миша

Потому что когда вы вводите quit, цикл продолжается, потому что цикл проверяет условие только когда начинается новая итерация. То есть:

Цикл начинается, потому что условие active верно

Вы вводите quit, active становится неверным, но цикл продолжается

вы снова что-то вводите

цикл завершается, потому что условие active неверно

→ Ссылка
Автор решения: 4500zenja

Как уже подметили выше, Вы после получения строки quit продолжаете цикл, записывая в файл ответ и требуя ещё одну строку для завершения цикла, который должен был закончиться ещё раньше.

Если ввод ответа в файл обязателен, то можно избавиться от флага active, сделать цикл вечным и прерывать его после ввода quit. Перед проверкой, конечно, записываем ответ в файл.

file = "answer.txt"
message2 = "do you have any other reasons? (if you wanna to quit press'quit')"
message = "Why do you like programming? (if you wanna to quit press'quit')"
answer = input(message)
while True:
    with open(file, "a") as file_object:
        file_object.write(f"{answer}\n")
    if answer == "quit":
        break
    answer = input(message2)
→ Ссылка
Автор решения: MRX

Там прежде чем with нужно добавить

elif answer != "quit":
    with open(file, "a") as file_object:
        file_object.write(f"{answer}\n")

А вообще то не нужно добавить переменную как "active". Лучше пишите так:

file = "answer.txt"
message2 = "do you have any other reasons? (if you wanna to quit press'quit'):"
message = "Why do you like programming? (if you wanna to quit press'quit'):"
answer = input(message)
while answer != 'quit':
    with open(file, "a") as file_object:
        file_object.write(f"{answer}\n")
    answer = input(message2)
→ Ссылка