**Heads up!** To view this whole video, sign in with your Courses account or enroll in your free 7-day trial.
Sign In
Enroll

Preview

Start a free Courses trial

to watch this video

Here's how I did it!

This video doesn't have any notes.

**Related Discussions**

Have questions about this video? Start a discussion with the community and Treehouse staff.

Sign up**Related Discussions**

Have questions about this video? Start a discussion with the community and Treehouse staff.

Sign up

So, did those problems take a while?
0:00

I feel like the while-loop is a bit of
a simpler concept than the for-loop,
0:02

probably because it's just a condition
with no variable or iteration needed.
0:06

Let's look at how I solve these problems.
0:09

The first problem, heating the oven
is a pretty normal use case for
0:12

a while-loop, so
we'll say while current_oven_temp < 350.
0:17

So as long as it's under 350,
we can go ahead and increase it, right,
0:23

so current_oven_temp + = 25, and
then print current_oven_temp.
0:28

Now, you could do these in either
order depending on how you read
0:33

the instructions.
0:35

Maybe you feel like you should
print it before you increase it or
0:36

increase it before you print it.
0:41

It really doesn't matter though and
if it's not less than 350,
0:43

so this would be where else comes in, then
we want to print out, the oven is ready.
0:47

Now, we could do this
without using the else, but
0:55

I like to include them as it makes it
a bit more obvious what's going on.
0:57

So let's go ahead and test this one,
so we'll do python while.py.
1:01

And we can see we've got 100, 125,
150 and so on, until we get to 350 and
1:07

then the oven is ready.
1:11

Great, so it looks like we're getting
all those intermediate degrees.
1:14

Onto problem number two.
1:16

Okay, so the first thing that I have
to do is have an infinite loop.
1:18

So I'm gonna go ahead and do while true,
which is a loop that will never end.
1:23

You could also do say while one,
or while a, or
1:28

anything that's always
going to evaluate as true.
1:31

So then I'm gonna ask for a number.
1:36

Now, I'm gonna go ahead and I'm gonna
lowercase it, which, of course, won't have
1:37

any effect on the numbers, but it makes
the queue comparison a little easier.
1:41

So I'm gonna say, num = input.
1:44

And i'm gonna say,
give me a number or q to quit,
1:47

and then I'm going to call lower on that.
1:52

All right, so
now let's do that comparison.
1:57

So if num == 'q' then break.
1:59

Now, I'm gonna use break here to
immediately end the while-loop.
2:04

Now, like I said,
2:08

you could do this without the break,
but I like to have the break in there.
2:08

Okay, so now,
let's try to turn it into a number,
2:13

to be a bit more flexible,
I'm just gonna turn them all into floats.
2:16

But you could make whatever decision you
want here, if you wanna make them ints,
2:19

floats, whatever, as appropriate.
2:22

So I'm gonna do,
try: numbers.append(float(num)),
2:24

the float version of the num.
2:29

And then the exception that I'm
going to catch is, ValueError.
2:32

And if the ValueError comes up,
then I'm gonna do, continue, so
2:36

I'm just gonna start that loop over again,
okay?
2:38

So if anybody gives me something
that's not a number and it's not q,
2:41

then we're just gonna ignore it.
2:44

We're gonna pretend it didn't even happen
and we're just gonna go on to the next
2:46

step of the loop, which comes right
back to the input, all right.
2:50

Now, I could leave out the continue,
I could put in, say, pass instead.
2:53

They're effectively the same in this case,
but
2:57

continue is like the more obvious thing.
2:59

Okay, so now,
we're done with the loop's code.
3:02

Because at this point they have either,
they've even wanna put in a new number, or
3:06

they've give us a q and they wanna quit.
3:10

So, I can't use the else here that I
would normally have used, because this
3:13

break counts as the loop ending early and
so, that makes it skip the else clause.
3:20

So I'm just going to do the code
that I wanted to do here.
3:24

So I'm gonna print out you entered, That,
and then the numbers that they entered,
3:28

and then I will print out the total is,
and then the sum of the numbers.
3:35

And sum, if you haven't heard
of this function before.
3:42

We'll take a list of numbers, and
it will add them all together,
3:45

and then I will print, the average is, and
3:51

then we will print
sum(numbers)/len(numbers).
3:55

And all right, so now that should do it.
4:00

So this is gonna call
total_and_average for us, so
4:03

let's go ahead and python while.py.
4:08

Give a number, okay.
4:11

So, let's do 5, 5, 5, and 5,
and then let's do a q.
4:12

So we entered 5, 5, 5, and 5.
4:20

The total is 20 and
the average of that is 5, cool.
4:23

So that's handy I guess, depending on your
needs for calculating averages and sums.
4:27

Okay, so now, let's try problem number 3,
this is our last problem.
4:36

Now, this one needs us to skip over
numbers that aren't evenly divisible by
4:42

three or five.
4:45

Now, initially, I was thinking that
I'd want to use continue on this, but
4:47

there's really no reason to.
4:49

Much like problem number one,
we need a condition in our loop.
4:51

So we're gonna say while current > 101.
4:54

Then we'll check the division,
or divisibility of the number.
4:59

Now to do this,
5:03

I'm going use the modulo operator,
which returns the remainder from division.
5:04

So, if not, current % 3, or
5:09

current % 5 == 0, then print(current).
5:13

So you probably don't wanna
do this exactly like me.
5:19

I'm showing you deliberately two
different ways of testing this right now.
5:22

You pick which ever one's
more obvious to you.
5:26

So first we have the not current % 3, and
5:28

this one will evaluate the true
if the remainder is 0.
5:32

Because 0 is falsy and the not swaps it.
5:36

So instead of being falsy,
it becomes truthy because of the not,
5:40

and then the current % 5 is equal to 0.
5:45

It should be pretty obvious, but we're
comparing to see if when I do modulo of
5:48

modulo 5 against current
if that comes out to 0.
5:53

So if so, that becomes true.
5:56

So if this is true or
5:58

if this is true, if either one of them is
true then print out the current number.
6:00

Now, finally,
we need to increment the number.
6:05

So move up to the next number, and
that should do it, let's test that out.
6:13

So python while.py, now,
I'm gonna get asked for a number.
6:20

I'm gonna put in a 1 and q, and
then we get our numbers in here.
6:24

So like 99 is divisible by three, 96 is
divisible by three, 100s divisible by 5,
6:29

90s divisible by three.
6:34

But we're not getting like say 82
which isn't divisible by 5 or 3.
6:36

So awesome that's all of our numbers.
6:41

Thanks for practicing loops with me.
6:43

Hopefully, this will help you get
6:45

more comfortable with these
super useful constructs.
6:45

Be sure to let us know if any other
topics that you'd like to see a bit
6:48

more practice on.
6:51

You need to sign up for Treehouse in order to download course files.

Sign upYou need to sign up for Treehouse in order to set up Workspace

Sign up