WEBVTT

1
00:00:00.920 --> 00:00:02.460
<v Instructor>Hi guys and welcome back.</v>

2
00:00:02.460 --> 00:00:04.750
In this video we're going to look at some If statements

3
00:00:04.750 --> 00:00:07.490
with the in keyboard and also a few more examples

4
00:00:07.490 --> 00:00:09.600
so you get a bit more experience.

5
00:00:09.600 --> 00:00:13.130
Here we've got our movies watched which is a set of strings

6
00:00:13.130 --> 00:00:15.780
with the movie titles and then we're asking the user

7
00:00:15.780 --> 00:00:17.653
for a movie they've watched recently.

8
00:00:19.130 --> 00:00:23.510
We can then say user movie in movies watched

9
00:00:24.400 --> 00:00:27.140
and we can put that in an If statement.

10
00:00:27.140 --> 00:00:29.970
So again when Python reaches line four it's going

11
00:00:29.970 --> 00:00:33.010
to evaluate this Boolean and it's gonna say

12
00:00:33.010 --> 00:00:36.710
is the thing the user entered one of the elements

13
00:00:36.710 --> 00:00:38.923
of this collection, this set?

14
00:00:39.780 --> 00:00:42.960
And if it's true then it's going to evaluate this code here

15
00:00:42.960 --> 00:00:46.260
and remember we need indentation in front of this

16
00:00:46.260 --> 00:00:48.160
so that Python can tell what code

17
00:00:48.160 --> 00:00:50.550
is inside the If statement.

18
00:00:50.550 --> 00:00:52.610
So we're gonna print something like

19
00:00:52.610 --> 00:00:55.563
I've watched user movie too.

20
00:00:57.630 --> 00:01:01.523
Otherwise we can print I haven't watched that yet.

21
00:01:03.370 --> 00:01:07.500
If we run this then you can enter something like Green Book

22
00:01:07.500 --> 00:01:10.483
and it'll tell you that I've watched Green Book too.

23
00:01:11.640 --> 00:01:13.770
Of course if you enter something else

24
00:01:14.970 --> 00:01:18.120
then it'll tell you that I haven't watched that yet.

25
00:01:18.120 --> 00:01:20.400
So this is how you can use the in keyword

26
00:01:20.400 --> 00:01:24.800
in a If statement and it just worked in exactly the same way

27
00:01:24.800 --> 00:01:27.380
as it did in the last video when we were printing it out

28
00:01:27.380 --> 00:01:30.220
but now you can use it there in order to make decisions

29
00:01:30.220 --> 00:01:32.973
and potentially do different things in your programme.

30
00:01:33.830 --> 00:01:36.680
Let's work on a slightly different example.

31
00:01:36.680 --> 00:01:40.360
We're going to create now a magic number App.

32
00:01:40.360 --> 00:01:42.770
So in this application we're going to decide

33
00:01:42.770 --> 00:01:45.850
on a magic number, a hidden number from the user.

34
00:01:45.850 --> 00:01:48.270
We're going to ask the user to enter a number

35
00:01:48.270 --> 00:01:51.750
and then we are going to tell the user

36
00:01:51.750 --> 00:01:54.013
whether they got the number right or not.

37
00:01:54.990 --> 00:01:57.560
But before we do that we're going to ask the user

38
00:01:57.560 --> 00:02:00.070
whether they want to play the game or not.

39
00:02:00.070 --> 00:02:02.610
So we'll start by creating our magic number

40
00:02:02.610 --> 00:02:05.330
we'll say number equal seven.

41
00:02:05.330 --> 00:02:07.890
Then we're gonna ask the user whether they want to play.

42
00:02:07.890 --> 00:02:12.140
So we'll say user input equal input enter Y

43
00:02:13.070 --> 00:02:14.733
if you would like play.

44
00:02:16.910 --> 00:02:20.933
Now we're gonna say if user input equal equal Y,

45
00:02:22.120 --> 00:02:25.570
then we will ask them for a number.

46
00:02:25.570 --> 00:02:29.950
So we can do something like user number int of input,

47
00:02:29.950 --> 00:02:31.950
Guess our Number let's say.

48
00:02:31.950 --> 00:02:34.510
So we will ask them to guess our number,

49
00:02:34.510 --> 00:02:36.970
we will get the input that they type

50
00:02:36.970 --> 00:02:39.140
and then we will turn that into an integer

51
00:02:40.120 --> 00:02:42.310
and finally we can use another If statement here

52
00:02:42.310 --> 00:02:45.350
and say user number equal equal number

53
00:02:45.350 --> 00:02:47.650
then we will print that you guessed correctly.

54
00:02:50.530 --> 00:02:53.593
Otherwise we will print sorry it's wrong.

55
00:02:55.650 --> 00:02:58.180
So we're not using the in keyword here at all

56
00:02:58.180 --> 00:02:59.890
but there are a few things that I wanted to tell you

57
00:02:59.890 --> 00:03:01.940
about before we do that.

58
00:03:01.940 --> 00:03:05.530
The first one is that all of these lines are inside

59
00:03:05.530 --> 00:03:06.363
this If statement.

60
00:03:06.363 --> 00:03:10.690
So they will only ever potentially run if this is true.

61
00:03:10.690 --> 00:03:13.340
So if the user enters lowercase Y

62
00:03:13.340 --> 00:03:16.770
then we will start running this line number five,

63
00:03:16.770 --> 00:03:19.640
then we will move on to six and so on.

64
00:03:19.640 --> 00:03:22.970
Number six here is another If statement,

65
00:03:22.970 --> 00:03:26.620
so if this is true then we will run this line

66
00:03:26.620 --> 00:03:29.480
and now you can see that this line has two sets

67
00:03:29.480 --> 00:03:33.910
of indentation because it is both inside this If statement

68
00:03:33.910 --> 00:03:38.910
and this one so therefore we have four eight spaces in total

69
00:03:39.360 --> 00:03:41.710
in front of it so the Python can tell that

70
00:03:41.710 --> 00:03:44.173
this one belongs inside this If statement.

71
00:03:45.220 --> 00:03:47.300
Then we've got an else paired

72
00:03:47.300 --> 00:03:50.100
with this if statement in line six,

73
00:03:50.100 --> 00:03:51.900
which means that if the user number

74
00:03:51.900 --> 00:03:55.560
was not exactly correct given our magic number.

75
00:03:55.560 --> 00:03:57.730
We're going to print sorry it's wrong

76
00:03:57.730 --> 00:04:00.030
and again notice the indentation in this line.

77
00:04:00.960 --> 00:04:03.440
We can run this code and then we'll ask the user

78
00:04:03.440 --> 00:04:05.310
to enter why if they would like to play,

79
00:04:05.310 --> 00:04:07.870
so we are gonna enter Y and then we can guess the number,

80
00:04:07.870 --> 00:04:09.750
let's say seven and you can see

81
00:04:09.750 --> 00:04:12.010
that we guessed it correctly.

82
00:04:12.010 --> 00:04:14.450
Now let's start using the in keyword

83
00:04:14.450 --> 00:04:16.770
because the first thing that you may see users do

84
00:04:16.770 --> 00:04:18.780
is that they may think that because it is a computer

85
00:04:18.780 --> 00:04:21.520
or something they have to enter uppercase Y.

86
00:04:21.520 --> 00:04:24.440
It is quite common in computing to ask the user

87
00:04:24.440 --> 00:04:27.490
for uppercase letters so they might do that

88
00:04:27.490 --> 00:04:29.680
and here you can see that we don't support

89
00:04:29.680 --> 00:04:31.503
this uppercase variant.

90
00:04:32.550 --> 00:04:34.690
So there are two things you can do.

91
00:04:34.690 --> 00:04:36.120
The first one that we've already looked at

92
00:04:36.120 --> 00:04:38.150
is you can turn this into lowercase

93
00:04:38.150 --> 00:04:40.900
and that is actually the better choice of the two.

94
00:04:40.900 --> 00:04:43.650
So I would do this I would turn the users input

95
00:04:43.650 --> 00:04:44.920
into lowercase and then

96
00:04:44.920 --> 00:04:47.470
I would compare the lowercase user input

97
00:04:47.470 --> 00:04:50.970
with the lowercase character that I wanna check.

98
00:04:50.970 --> 00:04:52.140
But in some situations

99
00:04:52.140 --> 00:04:55.120
you may want different options potentially

100
00:04:55.120 --> 00:04:57.030
or you may not wanna do that exactly.

101
00:04:57.030 --> 00:04:59.250
So there is something you can do in this If statement

102
00:04:59.250 --> 00:05:03.740
which is to replace the Equal Equal for In

103
00:05:03.740 --> 00:05:08.740
and then you can have here a tuple of the two letters

104
00:05:09.440 --> 00:05:12.280
that you're willing to accept as your input.

105
00:05:12.280 --> 00:05:14.210
So what we do here is we create a tuple

106
00:05:14.210 --> 00:05:18.050
with two strings, lowercase Y and uppercase Y

107
00:05:18.050 --> 00:05:20.930
and then we're checking whether the users input

108
00:05:20.930 --> 00:05:22.840
is one of those two.

109
00:05:22.840 --> 00:05:25.503
And if it is then we will proceed.

110
00:05:26.550 --> 00:05:28.530
So this is something you could do if you were interested

111
00:05:28.530 --> 00:05:31.400
I'm just showing you that there but I would actually prefer

112
00:05:31.400 --> 00:05:33.763
to turn the users input into the lowercase.

113
00:05:34.870 --> 00:05:38.820
The second place where we could use the in keyword

114
00:05:38.820 --> 00:05:42.870
is if we wanted to give the user a hint regarding how close

115
00:05:42.870 --> 00:05:45.740
or how far they were from our magic number.

116
00:05:45.740 --> 00:05:47.410
So let's say that we wanna tell the user

117
00:05:47.410 --> 00:05:51.793
that they are off by one, if they enter six or eight.

118
00:05:53.090 --> 00:05:54.210
Here in the If statement

119
00:05:54.210 --> 00:05:57.060
after user number equal equal number,

120
00:05:57.060 --> 00:06:02.060
we're going to say elif number minus user number,

121
00:06:02.290 --> 00:06:07.290
in one and minus one we're gonna print you were off by one.

122
00:06:09.450 --> 00:06:12.210
So what this is doing is once again it's defining a tuple

123
00:06:12.210 --> 00:06:14.740
of two numbers that we're willing to accept,

124
00:06:14.740 --> 00:06:16.880
one and minus one.

125
00:06:16.880 --> 00:06:20.240
Then we'll go into subtract from our number

126
00:06:20.240 --> 00:06:21.970
which is seven the user number.

127
00:06:21.970 --> 00:06:24.280
let's say six as an example.

128
00:06:24.280 --> 00:06:26.880
Seven minus six is going to give us one

129
00:06:26.880 --> 00:06:28.880
and then it's going to check whether one

130
00:06:28.880 --> 00:06:32.780
is in this tuple which has one and minus one.

131
00:06:32.780 --> 00:06:35.540
If it is then we're gonna print that you are off by one.

132
00:06:35.540 --> 00:06:38.950
If they enter eight then we will do seven minus eight

133
00:06:38.950 --> 00:06:41.080
which is minus one and minus one

134
00:06:41.080 --> 00:06:42.910
will also be in this tuple.

135
00:06:42.910 --> 00:06:45.143
So we will also print you were off by one.

136
00:06:46.450 --> 00:06:48.430
This is something you could do and potentially

137
00:06:48.430 --> 00:06:52.050
this can be really handy if you want a longer set of values

138
00:06:52.050 --> 00:06:55.620
but for this specific situation there's also a better ways

139
00:06:55.620 --> 00:06:57.890
of doing it without the in keyword

140
00:06:57.890 --> 00:07:00.490
which is by using absolute values.

141
00:07:00.490 --> 00:07:02.393
So you can do ABS,

142
00:07:03.980 --> 00:07:06.070
of number minus user number

143
00:07:06.070 --> 00:07:08.700
and what ABS does is it gives you the absolute value

144
00:07:08.700 --> 00:07:09.533
of this argument.

145
00:07:09.533 --> 00:07:13.633
So if you pass it the value one ABS of one

146
00:07:13.633 --> 00:07:17.260
will give you one but if you pass it minus one,

147
00:07:17.260 --> 00:07:19.900
ABS of minus one will give you one.

148
00:07:19.900 --> 00:07:22.200
It will turn it back into positive.

149
00:07:22.200 --> 00:07:25.280
So now number minus user number will always give you,

150
00:07:25.280 --> 00:07:29.440
how far away the user was from our magic number

151
00:07:29.440 --> 00:07:31.130
in positive terms.

152
00:07:31.130 --> 00:07:33.793
So you can go back to say an equal equal one.

153
00:07:34.820 --> 00:07:38.410
Because this number here will always be one, two, three

154
00:07:38.410 --> 00:07:39.900
and so on.

155
00:07:39.900 --> 00:07:43.357
So if they were off by one then we can just print that.

156
00:07:43.357 --> 00:07:45.420
And I think this is a slightly better approach

157
00:07:45.420 --> 00:07:48.340
than using the in keyword but again the in keyword can

158
00:07:48.340 --> 00:07:50.500
be useful in a wide number of scenarios

159
00:07:50.500 --> 00:07:52.423
where this may not be enough.

160
00:07:53.840 --> 00:07:57.690
If we run this again you'll see that we can type Y

161
00:07:57.690 --> 00:08:00.830
to play then we can guess the number let's say eight

162
00:08:00.830 --> 00:08:03.640
and then it says that you were off by one.

163
00:08:03.640 --> 00:08:06.370
Feel free to play around with this code and change it

164
00:08:06.370 --> 00:08:08.670
and do more things with it if you'd like.

165
00:08:08.670 --> 00:08:11.270
This is a great exercise and will be good practise for you

166
00:08:11.270 --> 00:08:14.120
if you're starting to learn to code.

167
00:08:14.120 --> 00:08:15.510
Thanks for joining me in this video

168
00:08:15.510 --> 00:08:18.303
I hope it's been useful and I'll see you in the next one.

