2015-11-24 9 views
0

У меня проблемы с настройкой правильной инструкции if.Устранение неполадок Python Устранение неполадок

Это мой код:

def task_13(): 
    Main_meal=['Meat','Cheese','Fish'] 
    addons=['Potatoes','Rice','Salad'] 
    my_meal=[(x+y) for x in Main_meal for y in addons if (x+y)!= 'FishRice' and 'CheeseRice'] 
    print(my_meal) 

Мой вопрос, почему Python отфильтровать «CheeseRice», когда он заявил там, но только отфильтровывать опцию «FishRice».

Это мой выход:

['MeatPotatoes', 'MeatRice', 'MeatSalad', 'CheesePotatoes', 'CheeseRice', 'CheeseSalad', 'FishPotatoes', 'FishSalad'] 

Спасибо за ваши советы.

ответ

1

Вот официальный reference on Python operator precedence, обратите внимание, что and имеет более низкий приоритет, чем !=, поэтому сначала оценивается !=. Также and - простой оператор, который берет булевы с обеих сторон и возвращает логическое представление, представляющее их логическое И, оно не делает то, что вы пытались сделать.

Вместо

if (x+y)!= 'FishRice' and 'CheeseRice' 

вам нужно:

if (x+y)!= 'FishRice' and (x+y) != 'CheeseRice' 

или альтернативно

if (x+y) not in ('FishRice', 'CheeseRice') 
+0

Спасибо, я понимаю, где я делаю ошибку прямо сейчас –

Смежные вопросы