Python for Absolute Beginners Transcripts
Chapter: Cleaner code with common data structures
Lecture: Demo: Better rules with dictionaries
0:00 Now it's time to work on
0:02 our rock paper scissor game.
0:03 We're going to do a couple of things
0:04 we're going to start out by taking the rules
0:06 that are encoded into the if else statement
0:08 and encode them into a dictionary.
0:10 So again, we have the old game
0:12 the game without these data structures there
0:14 and I made a copy so that we can start
0:17 you know you can have the old version
0:18 and the new version for your records.
0:20 So lets open that.
0:21 And then here, and run this just to make sure
0:23 it's still working, it says
0:24 oh we don't know where the interpreter is
0:26 lets go grab one.
0:27 That'll work, okay.
0:28 What are we going to roll?
0:29 We're going to roll rock.
0:30 I guess, lets try that again.
0:33 We're going to roll one, which is rock
0:34 and now I roll two which is paper
0:36 three which is scissors
0:38 and as I keep throwing scissors
0:40 computers, computers on to us it knows
0:42 I still am yet to win one of these rounds.
0:45 But none the less here's our game.
0:46 And let me show you a cool little trick.
0:48 I'm going to go over here and do a refactor, rename
0:51 on the project, call this RPS structures.
0:56 There we go, it didn't change the file
0:57 but then if were back here in our most recently used files
1:01 you can see that's our old, that's our old one
1:03 and this is our new one.
1:04 Okay that might help.
1:05 Also lets give this a proper name here.
1:08 And do something like this.
1:12 Put this in like that.
1:13 So we know what we're working with.
1:15 Okay great how's it looking?
1:16 Yeah, looks great.
1:17 So lets look at this again.
1:18 Down here, remember this beast?
1:21 Make this full screen and give
1:22 us a little room to work with it, so what we're going to do is
1:24 we're going to say if there's a tie
1:25 it's one thing, but then we've got to start going okay if
1:29 it's rock, what defeats rock?
1:31 Well, paper defeats rock, so the other player wins.
1:34 But what is a losing play against this, against the rock?
1:37 Well, scissors is a losing play
1:39 so the person who threw rock won.
1:42 All right so lets just take this bit up here
1:44 and I'm going to put this to the top.
1:45 Could put it inside this function
1:47 but that means every time you call it
1:49 we're going to compute this data structure.
1:50 Not terribly expensive but, you know
1:52 it really doesn't change so lets put it up here like this
1:55 I'll call it rolls like that
1:58 and lets just put, inside you can put what's called
2:01 a literal string here like this just so
2:03 we have it for a minute.
2:04 So it doesn't mess up our formatting and what not.
2:06 But we're going to have a couple of keys, have that.
2:10 That's going to have the value of none.
2:12 That's fine. You got to put a comma.
2:14 We're going to have one for paper.
2:16 And we're going to have one for scissors.
2:19 So the idea is we're going to go to this rolls thing
2:22 and we're going to ask, Hey I have paper
2:24 somebody rolled paper, I need to compare
2:26 it to another play.
2:27 So we could have none, we could have seven
2:29 we could have whatever but I also showed you that
2:30 we can have other dictionaries that are in here.
2:34 And this dictionary is going to contain two things
2:36 defeats, with none for the moment, and defeated by.
2:42 So what we're going to do is we're going to write down
2:45 what defeats rock, well what defeats rock
2:47 paper defeats rock.
2:48 At the moment we have one
2:50 as you'll see we could have many, many things there.
2:52 And actually lets put this as a set
2:55 lets put it as a list, honestly sets probably better
2:58 but where we're going you're going to see
3:00 that lists going to work slightly better.
3:01 Cause like I said there could also be sponge
3:04 there could be other things that go in here
3:05 but for now there's just one.
3:07 What is defeated by rock, well scissors are defeat by rock.
3:11 Okay so that's the thing that we put for rock
3:14 we're going to go get rock if that's what they've thrown
3:16 and then we could be able to ask, This other throw
3:18 is it in the defeats, this other throw is it defeated by?
3:21 And that'll help us answer the question.
3:23 And these are going to be exactly the same shape
3:25 but not the same values so paper defeats rock
3:28 and paper is defeated by scissors.
3:31 This one is not right.
3:34 I have this backwards hold on.
3:36 Paper, scissors.
3:37 Rock beats scissors, rock is defeated by paper, okay.
3:39 Paper defeats rock, but paper is defeated by scissors, okay.
3:43 One more time.
3:44 Got to do the same thing down here.
3:46 What defeats, what does scissors defeat.
3:49 Paper. And it's defeated by rock.
3:52 Okay so we have this data structure here now
3:54 might be wondering well, okay cool, that's nice Michael
3:58 but what does that actually get us?
3:59 It gets us two things
4:00 it gets us a much simpler way to check whether or not
4:02 we've won. I'll show you that in a second
4:04 but it also gets us the ability to add
4:07 incredibly easy like if we want sponge
4:09 we just do one more line here, sponge.
4:12 We won't even have to rewrite
4:13 the code that checked for the winner.
4:14 Just, this data structure will store that.