 Now, open up timer underscore o3.pi. This code does the exact same thing as timer underscore o2.pi, but it does it a little differently. There are usually two or three or ten ways to do the same thing in Python, and that's okay just like there's a bunch of different ways to say the same thing in English. You can choose the one that best suits your needs and your style as you become more comfortable with it. In Python, by convention, the language was created in order to make code more easily readable, more natural to interpret. So as you're making these small decisions about how to do things, keep that in mind. This particular way is not necessarily more readable than the one we just did, but it is an alternative that illustrates some useful concepts, so we're going to call it out. Instead of a for loop, we have reintroduced our while loop. If you remember when we were working on the clock, we set up a while true to make a loop of code that's just going to keep running forever. Well, now we're going to use while with something that won't always be true to show how this works. So we're going to play with logic just a little bit. This variable called done on line five, we're initializing it to the value false. So it's a Boolean variable, which means it can either be true or false, one of two values, that's it. Then in line six we say while not done. So done is false. Not false is true. Not is a special word to Python. It says whatever this Boolean thing is, do the opposite. Interpret it the opposite. So if done is false, then not done is true. So for this pass at least, not done is true. The thing in the while parentheses is true, so execute this loop of code. Start by sleeping one second, then print how many seconds are left in the timer. We use our same construction with the carriage return, end character, the F string with seconds left and the spaces after it to overwrite extra digits. Then we take that seconds left value and we subtract one from it. So we do this trick where we say seconds left equals seconds left minus one. Whatever it was, it's now one less. Then we do another thing that is new for us. We check whether something is true. So in this case, the thing we're checking is seconds left is less than or equal to zero. If that little expression is true, then do the code that comes after, which in this case says take our done variable and assign it to be true. So the if statement says if, and that's this expression, evaluates to be true colon. Do whatever is in the code block below, and you know what that code block is because it's indented. So we're up to two indents now. This second indent, line 11, is the code block for the if statement. So what this will do is it will go through, it starts at 11 seconds left, and then each time it'll print 11, 10, 9, it'll count down. Each time it will decrement seconds left by one, finally seconds left will be zero. Once it is zero, done will be true, then when we go up to line six and we check again, this time through the while loop, not done is now false. So the while loop is finished. It moves on, the code moves on to line 12, line 13, and prints ding. So just to rehash that flow, it starts at the beginning, seconds left gets assigned to 11 on line three. Done gets initialized to false, and our while loop then is while not false. So while true, do this loop, line seven through 11, repeat again and again. Each time the check at line 10 fails, because seconds left is not equal to zero, and it's not less than zero, it's greater than zero. Also finally, after going through this 11 times, seconds left is equal to zero, done becomes true, the while loop completes, and we print a ding. We can run it and verify that this is indeed the case. It starts at 11, counts down, one by one, second at a time, ding, and we're done.