# Please explain the how I should think here

I just took the quiz and got all right except one question where I cannot understand the way I’m supposed to think, which probably means that i have not completely understood how the control flow thing works…

Can somebody please explain to me as simple as possible the answer to that question (see attached picture) and also why the explanation in the attached picture is like it is?
Best regards and thanks in advance

1 Like

You’re being asked to evaluate the branches of the `if...else` structure, so let’s break it down.

``````if not True:
print True
``````

The code inside the `if` statement only runs if the condition is `True`. `not True` = `False`, so we don’t run this block.

``````elif 8 % 3 < 2:
print False
``````

`8 % 3` is asking for the remainder when you divide 8 by 3, which is 2. It’s then checking whether 2 is less than 2, which it isn’t so we don’t run this block either.

``````elif False and True:
print "None"
``````

Again, we need the condition to be `True` to run this block. `and` will only return True if both conditions either side are True. `False and True` evaluates to `False`, so we don’t run this block.

Therefore, we arrive here:

``````else:
print "Nothing"
``````

and we see “Nothing” gets printed to the console.

Does that help?

Ok, so is this the general case on how it works? I mean, if I understood it correctly, in an if…else structure, it will only “run the command” (in this case the command is print) ONLY if the if statement = True?
So basically, the if…else structures depend on what a boolean variable gives (True or False) and will not run if the result is False?

Yes, the code contained inside an `if` or an `elif` block will only run if the condition is met - i.e. it is `True` once fully resolved.

As a real-world analogy, let’s say you’re doing a lunch run to Subway* and your colleague Bob wants you to pick him up a sandwich.

Bob says: “I’d like a foot-long Subway Melt on Hearty Italian bread, or regular Italian if they’re out of that. 9-grain wheat is OK, but it’s not my favourite. Lettuce, onion, tomato and peppers as well, oh and honey mustard sauce please. Mayo is fine if they don’t have that sauce.”

Bob’s order can be expressed using `if-else` statements:

``````sandwich = "Subway Club"
sauce = ""

else:

if they_have_honey_mustard_sauce == True:
sauce = "Honey Mustard"
elif they_have_mayo == True:
sauce = "Mayo"
else:
sauce = None
``````

Let’s not forget about the `not` operator. For example:

``````am_i_hungry = False

while not am_i_hungry:
do_some_work()
else:
`not am_i_hungry` here resolves to `not False`, which is `True` so the `while` loop runs. If we become hungry, and flip the value of `am_i_hungry` to `True`, the while loop condition is no longer met and we run the `else` block of `buy_lunch()`.