Python for Absolute Beginners Transcripts
Chapter: Organizing and reusing code with functions
Lecture: Adding the best-of feature
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Well, our winner-take-all-thing was fun.
0:02
But like I said, this is not typically
0:03
how rock-paper-scissors goes.
0:05
Usually, it's best of.
0:07
So let's go over here and have rounds
0:10
and let's say we're going to play best of three.
0:12
This would be how many rounds you played.
0:14
And then in order to figure out
0:15
somebody has won the overall game
0:17
we have to know how many rounds they've won.
0:19
So the first person to win three rounds
0:22
is going to win the game in this case.
0:23
So we'll say wins
0:26
p1 is 0 and for p2.
0:29
It's a little clumsy.
0:30
We're going to come up with a better way to do this.
0:32
But, again, we're taking sort of iterative
0:33
little approaches to working on this.
0:35
We're doing simple stuff
0:37
then we're adding more ideas and more programming concepts.
0:39
Data structures will let us simplify
0:41
a lot of these things going on here.
0:43
So what we would need to do in order to play the game
0:45
is, well, we need to go have a loop.
0:47
And we already did one, these while loops.
0:49
And let's do a little test here.
0:51
We'll say, first like this, we'll say while
0:55
wins_p1 < rounds and wins_p2 < rounds.
1:00
'Cause if they're equal
1:01
that means either player_1 or player_2 has won.
1:05
Then we want to do something like this in the loop.
1:08
But we need to record who won that round
1:11
and this also, we kind of want to just print out
1:14
maybe not the game, but the game is over
1:16
this round, this round with a tie takes the round.
1:22
Then down here, we need to do a test.
1:24
So we'll say if wins one is greater than or equal to rounds
1:29
print a little output like So, player_1 wins the game
1:35
else player_2 wins the game.
1:39
Right, so this is a start here.
1:41
Now, the one thing we have to do
1:43
is figure out who has won the game
1:46
then update that.
1:47
So this is close, we're going to have this
1:51
but we have to say something like this.
1:52
If winner is equal to player_1
1:56
then wins_p1 has to get bigger by one.
2:01
If it's two, we want that to be two.
2:03
Now, this could be else, maybe if else makes sense
2:06
but it could just be else with no test
2:09
but maybe we're going to have three players
2:10
in the future or something, I don't know.
2:13
Let's keep it a little bit like that.
2:14
Down here, we could do a little bit better as well.
2:17
We could have something like this.
2:19
Overall winner, both none.
2:22
This would be player_1.
2:24
And we can just print out overall winner.
2:27
So what was less good about it before?
2:30
Well, what if we want to change the text
2:32
of Wins the game or other messages like that
2:35
we'd have to edit it in both locations.
2:37
Writing it like this means that this is only expressed once.
2:42
All we have to do is figure out
2:43
what name goes into the statement
2:45
which is a little more safe
2:46
and less repeating ourselves and so on.
2:49
Okay, so do a final cleanup.
2:52
This is cool. We should be able to have this work once again, I guess.
2:57
Yeah, I think this is going to do it.
2:58
Let's go and give it a try.
2:59
There's probably a little good message we can put out
3:01
like Hey, it's round two, it's round three
3:03
and so and so is in the lead, or something
3:05
but I think this will work.
3:06
Okay, round one, what is your roll?
3:09
I roll rock. You roll rock.
3:11
That takes the round.
3:12
What is your roll?
3:13
On this next one, I roll paper.
3:16
I roll paper, computer rolls paper.
3:17
So now that should be one win computer, zero wins me.
3:22
Let's actually print them out down here.
3:25
We print score is player_1 and player_2 is win_p2.
3:36
Let's do a little separator as well.
3:38
Okay, so now we'll be able to track this a little better.
3:41
So paper, we roll paper, they roll scissors
3:43
oh, I got crushed.
3:44
The score is you zero, computer one.
3:47
It's round two.
3:49
Let's go and say, well, if they rolled scissors
3:52
I'm going to roll rock.
3:53
Of course, it's random, it doesn't matter.
3:55
They win.
3:56
Okay, if they win one more round
3:58
and our program is right, it should exit.
4:00
But let's say scissors
4:02
I do scissors, they roll rock.
4:04
The computer takes the round, three-zero
4:06
I'll get out of the loop because this test up here
4:10
somebody has won.
4:11
I'm going to get out of this loop.
4:12
And then that's it.
4:13
The computer wins the game.
4:14
Let's do one more just to see how this works.
4:17
I'll play a lot of rock, I won.
4:19
I'm up by two, two to one, two to two.
4:22
Here it goes, somebody's going to win.
4:23
Rock, oh no, maybe not, not if there's a tie.
4:27
Oh, the computer won again.
4:28
But pretty cool.
4:29
You can see even when there's a tie
4:31
you know, let's just play again
4:33
it's the best-of-three wins
4:34
not just whatever happens after three rounds.
4:37
So there you have it.
4:38
We now and we're able to use this again over here
4:42
to this. There's one other thing we could do
4:46
that would make this a little bit nicer.
4:48
So this is starting to look a little complicated again.
4:50
All of this stuff here
4:52
it's like well, what is going on here?
4:54
So let's do one more thing.
4:57
Let's maybe make this, could be something like play a round.
5:01
So we come over and we're going to right-click
5:03
and say refactor and see if this is going to come up
5:05
with something reasonable.
5:07
No, no, it can't because this part right here.
5:12
So that's okay.
5:13
Now, one thing that happens is if this is wrong
5:16
before it was just canceling the game.
5:19
If we want to say, you know what, we can't do this
5:22
but let's just go and ask again
5:24
we can change this Return to Continue.
5:27
What that means is instead of going on down this way
5:31
oddly, Continue means go back to the top
5:33
go back up here and just start again
5:35
and then start again until you get past this.
5:37
So let's do it one more time.
5:38
If I play blah, blah, blah, sorry, that's not valid.
5:41
Can't play, exiting, I guess.
5:43
Let's just say Try again.
5:47
Try to play blah, blah, blah, nope.
5:49
This one, nope.
5:50
Rock, there we go, you play rock and scissors.
5:52
So I think our game is in pretty good shape.
5:55
Again, I think we could clean this up a little bit
5:57
but there's not a whole lot to do.
5:58
It's about as good as it's going to get.
6:00
I like it.
6:01
It's so much better and reasonable and clear to understand
6:04
than when we first started, I think
6:06
and we got through it.
6:07
This used to be like complicated.
6:09
It's just that. This was super complicated, now it's just this.
6:12
Pretty cool.
6:14
So hopefully, you can see how functions
6:15
made our code easier to think about.
6:17
We don't have to think about all the details
6:20
of checking if we're winning through
6:21
as we try to understand what this loop does.
6:23
When you have to think about
6:24
all the details of getting a roll
6:26
all we have to do is no, first, we got to get the roll
6:30
also have the computer play the roll
6:31
and then check for a win
6:33
and go and do something based on that.