Истинные значения в списке

код

Этот код сохраняет ваши любимые блюда в списке, но ввод превращается в символ типа bool. Почему это происходит и как это исправить?

      foods=list()
while food := input("what food do you like?: ") != "quit":
    foods.append(food)
print(foods)

2 ответа

Решение

Это сравнение ввода и «выхода». Когда вы вводите kl и kgh, они не равны "выйти", а еда Trueи добавляется к еде. Когда вы вводите "quit" в качестве ввода, quit равняется quit, а food is False и выражение стало while Falseтак что цикл разрывается. Вместо этого сделайте этот код:

      foods=[]
while True:
    food=input("what food do you like: ")
    if food=="quit":
        break
    else:
        foods.append(food)
print(foods)

Это происходит из-за приоритета операций. Выражение

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

читается как

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

что делает foodбулево. Вы можете исправить это, добавив круглые скобки:

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