Почему все значения отображаются как True, когда я набираю цикл while?

В настоящее время я изучаю моржа := , и когда я делаю это кодирование и добавляю в список, а затем печатаю его, появляется список со всеми элементами True.

      foods = []
while food := input("what  food do you like: ") != 'quit':
    foods.append(food)
enter code here
print(foods)

1 ответ

Присваивание оператора моржа имеет более низкий приоритет по сравнению с операторами отношения. Итак, говоря:

      food := input("what  food do you like: ") != 'quit':

Оценивается как

      food = <result of (input("what  food do you like: ") != 'quit')>

И пока ввод не quitон всегда возвращается, вызывая все значения foodбыть и продукты, чтобы быть список всех True.
Вы можете попробовать использовать:

      (food := input("what  food do you like: ")) != 'quit':
Другие вопросы по тегам