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 upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Before we look at how I solve this,
I wanna say that my solution
0:00
isn't necessarily the cleanest,
fastest, or best.
0:03
My solutions also aren't
the only solutions.
0:06
I tried to stick to solutions like
the ones you might have come up with.
0:09
But please, experiment and
0:12
see if you can find better solutions
than the ones that I'm showing.
0:13
Okay, so, problem 1 needed us
to loop through the people and
0:16
see if they like to
celebrate their birthday.
0:21
And if they do, we print out
Happy Birthday and their name.
0:23
So, first, we'll do something like for
person in BIRTHDAYS.
0:26
Because that will give us each
person as we move through the loop.
0:32
And it'll put it into
a variable called person, and
0:37
we'll move through everything that's
in BIRTHDAYS, which is what we want.
0:39
So, we're calling this a person,
not just a name, okay?
0:43
So that gives us the variable name person,
0:50
on the BIRTHDAYS as we go through
the iterations of the loop.
0:53
The first time through, it'll be James,
then Shawna, then Amaya, and so on.
0:55
Okay, so, the third item zero,
one, two, three, the third item,
0:59
so index 2 for
number three in the person tuple
1:06
is the true false boolean of whether or
not they like to celebrate their birthday.
1:10
Now if that's true, we want to print out
their name and the Happy Birthday string.
1:14
So, we can say if person[2] which is the,
this is the zero item,
1:18
this is the one item, this is the two
item, this is the three item.
1:22
So the two item, if that's true, so
just if person[2], cuz if it's true,
1:27
it will be true, if it's false,
it will be false.
1:31
Then we want to print Happy Birthday.
1:34
I'll do a comma and then a placeholder,
and I will format that with person [0],
1:38
which will get their name, all right?
1:44
So I'm gonna save that and
then I'm gonna come down here and
1:48
I'm gonna run it, python for.py.
1:51
And I should see Happy Birthday,
James, Happy Birthday, Shawna,
1:53
Happy Birthday, Kamal.
1:57
So James likes to celebrate,
Shawna likes to celebrate, and
1:58
Kamal likes to celebrate.
2:02
So, great,
that looks like we did that one.
2:03
Problem 2 is a bit trickier.
2:07
We have to look through all
the people again, but this time,
2:10
we need to calculate their half birthday.
2:13
All right, so, let's start off,
just like we did before,
2:14
with for person in BIRTHDAYS, so
that would give us each person.
2:18
Now I'm gonna make a couple
of variables here, so
2:22
that I can separate out their name and
their birthdate.
2:25
So I'm gonna do name = person[0], cuz
that's the first item in the person tuple.
2:28
And then I'm gonna do
birthdate = person[1].
2:34
And then,
I know that these are all day slash month.
2:38
So I want the day and
I want the month as their own thing.
2:43
So I'm gonna split that
on the forward slash.
2:46
So birthdate will now be a list, and the
first item on the list will be the date.
2:49
And the second item on
the list will be the month.
2:53
Cool, so now let's turn their birth month
into a number so we can do math on it.
2:56
So we'll say birthdate[1],
so the second item
3:04
in the birthdate,
is the int(birthdate[1]).
3:09
And then,
this is the place where we might differ.
3:14
So, you can look at the birthdate and
month, and
3:17
if it's bigger than six,
then just subtract six from it.
3:19
That will stop you from doing
what I'm gonna do, which is,
3:24
then I'm gonna go ahead
I'm just gonna add 6 here.
3:27
So I'm always going to add 6.
3:29
And now if birthdate[1]
is greater than 12,
3:31
which means we looped around the year,
and we don't wanna do that,
3:35
then, birthdate[1] = birthdate[1]- 12.
3:40
I can also do birthdate -= 12,
3:44
and that will give me the same output.
3:48
So, either way here,
3:52
it's up to you, whichever one
of those you would like to do.
3:53
Okay, so now,
I need to turn that back into a string
3:58
because I wanna join the two
pieces back together.
4:02
So I'm gonna change birthdate[1] to be
4:06
equal to the str(birthdate[1]), okay?
4:10
And now, I'm going to print(name,
4:15
"/".join(birthdate)).
4:21
So that will print out their name.
4:25
And then on the same line,
it will print the day and the month,
4:28
including the new month since we
changed it, joined together by a slash.
4:31
Okay, so now that should do it.
4:35
So let's test that one.
4:38
So python for.py, and
see if we can get this one on screen.
4:40
There we go.
4:48
So we'll just check a couple of these.
4:49
Let's see, let's check,
Kamal was one we figured out before.
4:51
So 29/4 should become 29/10, and it did.
4:54
And let's see, 14/3 should become,
14/9, so it did.
4:58
And 12/6 should become 12/12.
5:04
Yeah, cool, I think we did that.
5:07
All right,
let's move on to problem number 3.
5:11
So for problem number 3,
we only wanna deal with school birthdays,
5:14
only people who have birthdays
during the school year.
5:19
Now this one's kind of
a combo of problems 1 and 2.
5:23
You should know the first
couple of steps here, so
5:26
I'm not gonna really spell them out.
5:28
So for person in BIRTHDAYS,
5:30
you all know this part, name = person[0].
5:33
And birthdate =
person[1].split on the slash.
5:39
And birthdate[1] = int(birthdate[1]),
right?
5:46
That's familiar, that's what we just did.
5:53
Now I'm going to use the range function
here to get a couple of ranges of numbers.
5:56
You could do this with greater than
less than comparisons if you wanted.
6:00
So I'm gonna say if
birthdate[1] in range(1,
6:05
7), because I wanna get
the months one through six.
6:10
And ranges stop when they
get to the big number.
6:14
So this one will only go 1 to 6 and
won't include the 7.
6:17
Or birthdate[1] in range(9,
13), same idea.
6:20
Then we're going to print(name).
6:26
That should be the solution to that one.
6:29
So let's test that out.
6:31
And again,
a little bit tricky to scroll here.
6:34
Let's just run it again, there we go.
6:40
Okay, so, if their birthdays
are between 1 and 6 and 9 and 12,
6:42
so James is not, but Shawna is.
6:47
Shawna's the beginning of June, so
she has a birthday, and that comes out.
6:52
Amaya is in February,
so there's a birthday.
6:57
Kamal has one and Xan has one.
7:00
But Sam doesn't because
Sam was born in July.
7:03
James doesn't because
James was born in August.
7:06
So those two are the summer babies and
they don't have school birthdays.
7:07
So they always get that end of the year
birthday party or whatever, right?
7:12
Okay, so now let's try problem number 4.
7:17
Now I think problem number
4 might seem hard, but
7:21
I think it's actually
really pretty simple.
7:24
It's an amalgamation of a lot of
the things that we've already done.
7:27
So we need to get some data out
of each person like before.
7:30
And then we need to create a bunch of
Stars that they're celebrating and
7:33
if they're young enough.
7:35
So, this one shouldn't
introduce too many new things.
7:36
So let's say for person in BIRTHDAYS.
7:41
And again, we're gonna do the name
= person[0], age = person[-1].
7:46
So that will get the last
thing from person.
7:53
I could have also done person[3],
but -1 is just a little bit easier.
7:55
And then celebrates is
going to be person[-2].
8:00
So up here we did, what did we do?
8:06
We did person[2].
8:08
They work out to be the same thing,
8:10
whether you go from the front of
the tuple or to the back of the tuple.
8:12
And then we need to do an if condition.
8:18
So, if they celebrate,
so if celebrates and
8:20
age is less than or = 10.
8:25
And age, if we look at our
tuple again is a number, so
8:29
we don't have to convert it to anything.
8:32
So if they're under 10, we could've
also done if age is less than 11.
8:35
But I think less than or
8:39
equal to 10 is more obvious of
the logic we're trying to use.
8:41
Okay, so now, let's say stars
is equal to an empty string.
8:46
And then for star in range(age),
so for however old they are,
8:51
we're gonna make a range of that.
8:55
And then, we're going to do stars +=,
and I'm gonna use an asterisk.
8:57
Now if you wanted to use some other
fancier star, you can totally do that.
9:01
So then back here where the for loop is,
9:05
then at this point,
we're gonna say print(name, stars).
9:08
So I'm gonna print the name and
the stars on the same line.
9:13
Now, there's a much more clever way
to build the string of stars too.
9:16
I'm gonna let you find that though.
9:19
And as a hint, look up list comprehension.
9:21
Okay, so let's test this one.
9:24
And again, let's just pull this up.
9:26
And we'll do python for.py.
9:29
And if we look up here at our list,
so James is 9 and has a True.
9:34
Amaya is 8 but has a False.
9:41
And no one else is under the age of 10.
9:43
So James is the only one we should print
out, we should print out nine stars.
9:45
So there's two, there's four, there's six,
there's eight, there's nine, so
9:48
there's James and nine stars.
9:52
So great, we got all four problems.
9:55
Hopefully, you've got a bit of a better
grasp on how to use for loops now.
9:57
In the next video,
we'll check out the while loops problems.
10:00
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