Search code examples
pythonpython-3.xconditional-statementsmultiple-conditions

Easier way to add arguments to an "or" statement?


Is there an easier way to do the following without me having to write out outputbodypixel == everytime? Ideally I want to pull the data from a list where I can just add #ebebeb, #ececec, #212121.

if(outputbodypixel == "#356044" or outputbodypixel == "#22402b" or
   outputbodypixel == "#213f2c" or outputbodypixel == "#356043" or
   outputbodypixel == "#22402c" or outputbodypixel == "#346044"):
    output_body = "green"
elif(outputbodypixel == "#7c3d15" or outputbodypixel == "#493613" or
     outputbodypixel == "#4a3612" or outputbodypixel == "#6a553e" or
     outputbodypixel == "#785735" or outputbodypixel == "#5e4b37" or
     outputbodypixel == "#6a553e" or outputbodypixel == "#86623c" or
     outputbodypixel == "#8b4f0d" or outputbodypixel == "#7c3d14" or
     outputbodypixel == "#6a553d" or outputbodypixel == "#7c3d14" or
     outputbodypixel == "#6a553d" or outputbodypixel == "#7c3d14" or
     outputbodypixel == "#87623c" or outputbodypixel == "#6e3612" or
     outputbodypixel == "#87613c"):
    output_body = "brown"
elif(outputbodypixel == "#8b8b8a" or outputbodypixel == "#8b8b8b" or
     outputbodypixel == "#8b8a8b"):
    output_body = "silver"
else:
    output_body = "NOT DEFINED"

I'm using Python 3.x.


Solution

  • Simply use in with a tuple (or a list if you already have one for each case) of all possible values per each condition, it's exactly the same as asking if outputbodypixel is one value or the other or the other etc.

    if outputbodypixel in ("#356044", "#22402b", "#213f2c", "#356043", "#22402c", "#346044"):
        output_body = "green"
    elif outputbodypixel in ("#7c3d15", "#493613", "#4a3612", "#6a553e", "#785735", "#5e4b37", "#6a553e", "#86623c", "#8b4f0d", "#7c3d14", "#6a553d", "#7c3d14", "#6a553d", "#7c3d14", "#87623c", "#6e3612", "#87613c"):
        output_body = "brown"
    elif outputbodypixel in ("#8b8b8a", "#8b8b8b", "#8b8a8b"):
        output_body = "silver"
    else:
        output_body = "NOT DEFINED"