Истинные значения в списке
Этот код сохраняет ваши любимые блюда в списке, но ввод превращается в символ типа 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)