yego.me
💡 Stop wasting time. Read Youtube instead of watch. Download Chrome Extension

if statements | Intro to CS - Python | Khan Academy


4m read
·Nov 10, 2024

We can use Boolean expressions to ask questions in our programs, but how can we branch control flow based on the answer? To do that, we need conditionals. Conditionals form the basis of selection; they allow the computer to decide which code to run depending on whether the answer to a specific question or condition is true or false.

The first piece of a conditional is the if statement. We start an if statement with the keyword if. Then we add our condition, which can be any Boolean expression. We always end this line with a colon because an if statement comes in two parts: this first part, which is the condition, and the second part, which is the instructions to run if that condition evaluates to true.

In Python, we indicate those instructions using indentation. Any lines of code immediately following that condition that are indented one level in are considered inside that if statement. If the condition evaluates to true, the computer will go on to execute all of the instructions indented inside the if statement in order. When it's done, it'll go on to execute the rest of the program as normal.

If the condition evaluates to false, the computer will skip all the lines of code that are indented inside that if statement. Instead, it'll jump directly to the next line of code that's outside of the if statement; that means the first line of code that is indented at the same level as that initial if.

Let's try an example. Here we have the Boolean expression num_orders == 10, which asks the question, "Is this the customer's 10th order?" We can then use this Boolean value in our if statement. We'll indent one print function call inside of the if statement and one outside. The one inside will only execute if it is the 10th order; that is, if the variable num_orders contains the Boolean value true.

We can also write this without the variable, where we just inline that whole Boolean expression in the if statement. Let's trace how the computer executes this. It starts with the first line and assigns the value 10 to the variable num_orders. Then it hits this if statement, so first, it evaluates the Boolean expression 10 == 10.

Since this evaluates to true, the computer will execute the lines of code indented inside of the if statement. First, it'll print "Your order is free," and then it'll assign the value zero to the variable num_orders. Then it just keeps moving through the rest of the program in order, so it'll print the value of num_orders, which is now zero.

Now, let's say instead num_orders was originally set to three. When the computer executes this program, it'll assign the value three to num_orders, evaluate the Boolean expression 3 != 10, which is false. Then, because it's false, we'll skip the lines of code indented inside the if statement. It'll jump to the next line of code outside, which is print(num_orders), so it'll print three.

Note that if we didn't indent the line of code num_orders = 0, it would be considered outside of the if statement. So, in the false case, num_orders would be set to zero, and then it would print zero. In the true case, we would print "Your order is free," then we would set num_orders to zero, and then we would print zero.

You can write if statements with any Boolean expressions as conditions, and you can put any and as many instructions as you want inside of them. With this conditional, I could make sure to only ask the follow-up question "Chicken or Tofu" if the user ordered Pad Thai because if they order the papaya salad, that question doesn't make sense.

Note that in most IDEs, we indent using the Tab key. Our standard lines of code should line up directly with the left margin; that is, there should be no spaces or indents before them. Lines of code indented inside of an if statement should be one tab key over. Getting the indentation right is crucial because this is the only way we can tell the computer which lines of code are inside the if statement and which are outside.

We need to be careful here, though, because now our control flow branches. If the user orders Pad Thai, this program works fine, but if the user orders something else, we get a name error. The variable protein is only defined inside the if statement. If the condition is false, this assignment statement doesn't execute, so the computer doesn't know a variable protein.

To fix this, we either need to make sure we're only accessing the variable protein inside the if statement, where we're guaranteed it exists, or we need to initialize the variable protein before the if statement, which guarantees that it's always defined. It's common in situations like this to initialize the variable to an empty or placeholder value like the empty string or "no protein."

Now there's no error on either possible path, whether the order is equal to Pad Thai or if it's not. Now that our control flow branches, when we run a program, we're only testing one of perhaps many possible paths of execution through the code. Just because it works for one case doesn't mean it works for the other, and it's up to us to test for that. Otherwise, it'll be our users who suffer when they're the first ones to find the bug.

More Articles

View All
Modal verbs | The parts of speech | Grammar | Khan Academy
Hello grammarians! Today we’re going to talk about a class of auxiliary or helper verbs called the modal verbs. These are verbs that have special properties and help other verbs. But what is modality? My fellow grammarian, I am so glad you asked! Modalit…
Why Letting Go Is True Wealth | Minimalist Philosophy for Simple Living
One day, the legendary Chinese recluse Xu You watched a mole drinking water from a pond. He then realized that the mole, when thirsty, only drinks a bellyful: no more, no less, but exactly the quantity it needs. The mole doesn’t encumber itself with exces…
New York Banning Bitcoin Mining? | DC Blockchain summit 2022
[Music] [Music] Kevin, let’s start off with stable coins. So, this has been a huge topic of conversation recently. We saw Luna that was 60 billion dollars at its peak, that turned into a failure. So what can we do with the stablecoin ecosystem to continu…
Vidit Aatrey on Building Meesho, India's Top Reselling Platform, with Adora Cheung
This is a door from YC. I’m excited to have a detox light CEO and co-founder of Meesho, which was founded in 2015, and you went through YC in 2016. So today, Meesho is probably one of the hottest startups in India, if not the hottest startup, and I’m supe…
It's Surprising How Much Small Teams Can Get Done - Sam Chaudhary of ClassDojo
Well, I don’t want to miss this story. Uh-huh. Oh, sly grin. Yeah, so little known fact: one of your first investors was Paul Graham of Y Combinator. Yeah, can you tell us about that meeting? What convinced PG to write you a check? Yeah, it was hilarious…
The Two Einsteins: Behind the Scenes | Genius
[music playing] RON HOWARD: We began thinking about how we would tell the story of Albert Einstein, and Geoffrey Rush instantly was at the top of our list. GIGI PRITZGER: The thing that has been so gratifying to watch in Geoffrey’s performance of Einste…