All language subtitles for Learn Python - Full Course for Beginners [Tutorial]_HIGH

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,150 --> 00:00:04,560 in this course I'm gonna teach you everything you need to know to get started programming in 2 00:00:04,590 --> 00:00:05,310 python. 3 00:00:05,700 --> 00:00:09,270 Python is one of the most popular programming languages out there, 4 00:00:09,450 --> 00:00:13,200 and it's by far one of the most sought after for jobs 5 00:00:13,410 --> 00:00:14,910 and so if you're trying to get a job 6 00:00:14,940 --> 00:00:16,170 or you're trying to you know, 7 00:00:16,200 --> 00:00:17,400 automate your life 8 00:00:17,520 --> 00:00:20,580 or you try to write awesome scripts to do a bunch of different things than 9 00:00:20,610 --> 00:00:21,840 python's for you 10 00:00:21,990 --> 00:00:22,410 honestly 11 00:00:22,440 --> 00:00:27,600 more and more developers every day are moving their projects over to python because it's such a powerful 12 00:00:27,780 --> 00:00:28,350 and the surgeon 13 00:00:28,380 --> 00:00:29,640 easy to use language, 14 00:00:29,910 --> 00:00:33,330 a lot of programming languages out there just aren't very beginner friendly there's 15 00:00:33,690 --> 00:00:38,490 a lot of syntax there's a lot of like little things that if you get wrong the program will yell at you. 16 00:00:38,700 --> 00:00:39,930 python is the complete 17 00:00:39,960 --> 00:00:40,890 opposite of that. 18 00:00:41,010 --> 00:00:45,660 you basically just type out what you want to do in python does it it's that simple there's not 19 00:00:45,870 --> 00:00:50,460 a whole lot of syntax to learn the learning curve is literally zero you jump in, 20 00:00:50,610 --> 00:00:53,100 you can start writing your first program in seconds. 21 00:00:53,370 --> 00:00:54,180 in this course 22 00:00:54,210 --> 00:00:55,260 I'm gonna teach you guys. 23 00:00:55,470 --> 00:00:57,840 everything you need to know to get started in python. 24 00:00:58,020 --> 00:00:59,070 I designed this course 25 00:00:59,100 --> 00:01:00,840 especially for python, 26 00:01:00,960 --> 00:01:03,810 and each lesson has been specially designed with examples 27 00:01:03,840 --> 00:01:05,130 that will help you along the way. 28 00:01:05,190 --> 00:01:07,800 with so many people starting to learn python the question isn't, 29 00:01:08,010 --> 00:01:11,130 why should you learn pipe on the question is why shouldn't you ? 30 00:01:11,460 --> 00:01:17,910 and I think for a lot of people the reason they might not want to learn python is because they're intimidated or they're afraid that it's going to be too hard. 31 00:01:18,240 --> 00:01:24,810 trust me I am going to hold your hand through this entire course we're going to talk about all the core concepts in python we're going to look at 32 00:01:25,170 --> 00:01:26,490 everything you need to know 33 00:01:26,580 --> 00:01:34,110 to start programming in python and start being confidence are writing scripts and start writing programs that are awesome in doing cool things in your life. 34 00:01:34,320 --> 00:01:34,800 anyway 35 00:01:34,890 --> 00:01:37,140 I'm super pumped to be teaching you guys python. 36 00:01:37,200 --> 00:01:38,850 I can't wait to get started in this course 37 00:01:38,880 --> 00:01:44,100 and I hope you guys stick around and fall along with the course and learn this amazing programming language 38 00:01:48,150 --> 00:01:52,320 in this tutorial dominates three guys how to install python onto your computer. 39 00:01:52,650 --> 00:01:56,220 and we're also going to install a text editor that we can use to write 40 00:01:56,250 --> 00:01:57,720 our python programs 41 00:01:57,780 --> 00:01:58,110 in. 42 00:01:58,590 --> 00:02:01,560 so the first order of business is to actually install 43 00:02:01,590 --> 00:02:03,360 python on your computer. 44 00:02:03,660 --> 00:02:06,120 so we want to do is head over to your web browser 45 00:02:06,630 --> 00:02:07,140 and 46 00:02:07,170 --> 00:02:09,330 you want to go over here to this page it's just 47 00:02:09,690 --> 00:02:12,180 www dot python dot org 48 00:02:12,210 --> 00:02:13,260 forward slash 49 00:02:13,290 --> 00:02:14,130 downloads 50 00:02:14,430 --> 00:02:14,940 and on this 51 00:02:14,970 --> 00:02:15,780 page there's 52 00:02:15,810 --> 00:02:16,350 going to be 53 00:02:16,380 --> 00:02:17,700 two buttons down here 54 00:02:18,030 --> 00:02:21,540 and this is going to say download python three point six point three. 55 00:02:21,990 --> 00:02:22,590 and at least 56 00:02:22,620 --> 00:02:26,850 the version that I have right now or download python two point seven point one four. 57 00:02:27,420 --> 00:02:31,770 so here's the thing about python there's actually two major versions of python 58 00:02:31,800 --> 00:02:32,940 that are in use 59 00:02:32,970 --> 00:02:33,570 currently 60 00:02:33,930 --> 00:02:34,440 there is 61 00:02:34,470 --> 00:02:35,640 python two 62 00:02:35,700 --> 00:02:38,130 and there's python theories you can see over here, 63 00:02:38,340 --> 00:02:40,920 this is like two point seven point one four 64 00:02:41,610 --> 00:02:43,890 basically any python two 65 00:02:43,980 --> 00:02:46,170 version we would just refer to as like python two 66 00:02:46,440 --> 00:02:47,670 and here's like the latest 67 00:02:47,700 --> 00:02:49,200 python three version. 68 00:02:49,380 --> 00:02:55,230 and so there's these two versions that you can download and the first thing we have to decide on which version do we want to download. 69 00:02:55,500 --> 00:02:56,760 and here's the basic difference 70 00:02:56,820 --> 00:02:57,540 python 71 00:02:57,570 --> 00:02:58,230 two 72 00:02:58,500 --> 00:03:01,920 is a legacy version of python which basically means that 73 00:03:02,160 --> 00:03:02,760 it's like an 74 00:03:02,790 --> 00:03:07,170 old version and it's not being like actively maintained or supported 75 00:03:07,350 --> 00:03:09,570 like officially by python anymore. 76 00:03:09,870 --> 00:03:10,380 python 77 00:03:10,410 --> 00:03:16,830 three is like the future of python it's like the newest version it's the one that's getting actively maintained and supported. 78 00:03:17,130 --> 00:03:19,830 so there's pros and cons to picking either won 79 00:03:20,490 --> 00:03:22,770 a lot of people say like python too 80 00:03:22,830 --> 00:03:25,440 has been around longer and so there's more like 81 00:03:25,590 --> 00:03:30,270 libraries there's basically just more python code written in python two 82 00:03:30,600 --> 00:03:35,400 so therefore like there's a few more things that you can do in pipe onto then you can do in python three 83 00:03:35,730 --> 00:03:36,630 but then again 84 00:03:36,780 --> 00:03:38,880 python two is not supported and you know, 85 00:03:38,970 --> 00:03:40,350 five or ten years from now 86 00:03:40,380 --> 00:03:42,120 probably no one's going to be using it. 87 00:03:42,810 --> 00:03:47,100 python three it like a site is like the future of python it's the newest version it's the one that 88 00:03:47,130 --> 00:03:49,800 you know it's sort of being maintained going forward. 89 00:03:50,280 --> 00:03:53,460 so for the purposes of this tutorial I'm going to be teaching you guys 90 00:03:53,490 --> 00:03:54,240 python 91 00:03:54,270 --> 00:03:55,020 three 92 00:03:55,200 --> 00:03:57,120 so we're going to want to download python 93 00:03:57,150 --> 00:03:57,600 three 94 00:03:57,840 --> 00:03:58,860 now here's vaguely 95 00:03:59,040 --> 00:04:03,450 if you learn python three or you learn python to the differences aren't very big. 96 00:04:03,720 --> 00:04:07,050 there are a few differences in like some syntax and just so 97 00:04:07,080 --> 00:04:08,700 you know little things here and there, 98 00:04:08,760 --> 00:04:11,700 but if you learn python three you'll be able to jump right in and 99 00:04:11,730 --> 00:04:14,610 code in python two as well don't let anyone 100 00:04:14,940 --> 00:04:15,630 tell you that 101 00:04:15,720 --> 00:04:17,040 you have to learn one of the other. 102 00:04:17,100 --> 00:04:21,840 we're going to learn python three just because it's I think probably the best for a beginner to learn. 103 00:04:22,050 --> 00:04:26,159 and so that's the one that we want to download so I'm just going to click download python three 104 00:04:26,489 --> 00:04:27,749 and we're gonna go ahead and download 105 00:04:27,779 --> 00:04:28,649 this version. 106 00:04:29,009 --> 00:04:33,089 and when that's done downloading I'm going to head down to my downloads folder 107 00:04:33,989 --> 00:04:35,969 and you'll see here we just have this file 108 00:04:36,989 --> 00:04:37,679 doubleclick, 109 00:04:37,949 --> 00:04:41,609 and we get this like python installer so I'm going to click through here, 110 00:04:42,029 --> 00:04:45,359 and we'll be able to install python three on our computer 111 00:04:45,509 --> 00:04:51,449 right when that's done and stalling we can just close out of this and we should begin to get us now we have python three 112 00:04:51,719 --> 00:04:53,159 installed on our computer. 113 00:04:53,549 --> 00:04:54,479 the next step 114 00:04:54,509 --> 00:04:56,399 is we need to choose a text 115 00:04:56,429 --> 00:04:57,239 editor so 116 00:04:57,899 --> 00:05:04,529 we're going to be writing a bunch of code so we're going to need some you know environment of some program that we can write all that code in. 117 00:05:04,829 --> 00:05:09,959 and really you can write python in any text editor you could write it in like a note pad or tax at it, 118 00:05:10,199 --> 00:05:11,099 it doesn't really matter 119 00:05:11,339 --> 00:05:13,019 but there are special 120 00:05:13,049 --> 00:05:14,699 text editors that are designed 121 00:05:14,729 --> 00:05:16,979 just for writing python code. 122 00:05:17,249 --> 00:05:18,209 and these are called 123 00:05:18,269 --> 00:05:20,129 id ease and not stands for 124 00:05:20,159 --> 00:05:22,019 integrated development environment. 125 00:05:22,379 --> 00:05:27,269 it's basically just a special environment where we can you know ron and execute our python code. 126 00:05:27,479 --> 00:05:30,569 and it'll you know basically like tell us how we're doing so were 127 00:05:30,629 --> 00:05:32,879 the only if we write something that's wrong or we 128 00:05:32,909 --> 00:05:34,109 have errors it'll kind of 129 00:05:34,529 --> 00:05:37,259 point us in the right direction of what we need to do to fix that stuff, 130 00:05:37,649 --> 00:05:39,779 so in this course we're going to be using an idea 131 00:05:39,809 --> 00:05:40,229 and 132 00:05:40,259 --> 00:05:41,219 one of my favorites 133 00:05:41,249 --> 00:05:44,879 and one of the most popular ity ease for python is called pi charm. 134 00:05:45,239 --> 00:05:46,889 so I'm over here on this website. 135 00:05:46,949 --> 00:05:47,489 it's called 136 00:05:47,519 --> 00:05:48,599 jet brains 137 00:05:48,629 --> 00:05:49,559 dotcom 138 00:05:49,589 --> 00:05:50,519 forward slash 139 00:05:50,549 --> 00:05:51,329 pi charm. 140 00:05:51,659 --> 00:05:54,569 and this is the idea that we're gonna be using in this course 141 00:05:54,599 --> 00:05:57,029 so I'm just gonna come over here and click this big download 142 00:05:57,059 --> 00:05:57,809 now button 143 00:05:58,319 --> 00:05:59,668 and we'll go ahead and 144 00:05:59,698 --> 00:06:00,629 download this 145 00:06:00,659 --> 00:06:01,979 pie charm program 146 00:06:02,309 --> 00:06:06,268 right so I'm getting this page are here you can see there's two versions of pi charm 147 00:06:06,478 --> 00:06:09,958 one as a professional version and that one's like paid they have to pay for it. 148 00:06:10,228 --> 00:06:14,878 but then there's this community version down here and that's free and open source so I'm going to download this one 149 00:06:15,268 --> 00:06:18,688 and this should have everything we need to get started using python 150 00:06:19,258 --> 00:06:21,658 right when that finishes downloading I'm just going to 151 00:06:21,688 --> 00:06:23,458 pull that up in my downloads folder 152 00:06:23,938 --> 00:06:24,538 and 153 00:06:24,598 --> 00:06:25,738 again we can just sort of 154 00:06:25,768 --> 00:06:26,818 run this guy 155 00:06:26,938 --> 00:06:30,778 and I'm on a mac so I'm going to have to drag it over to my applications folder. 156 00:06:31,258 --> 00:06:33,058 all right so now have pi charm 157 00:06:33,088 --> 00:06:34,498 and we have python 158 00:06:34,528 --> 00:06:36,328 three installed on your computer. 159 00:06:36,748 --> 00:06:39,118 so we're ready to start programming in 160 00:06:39,148 --> 00:06:39,868 python. 161 00:06:43,768 --> 00:06:46,108 in this tutorial we're going to create our first 162 00:06:46,138 --> 00:06:47,248 python program. 163 00:06:47,518 --> 00:06:48,988 and we're going to be able to run it and 164 00:06:49,048 --> 00:06:50,848 see how everything works. 165 00:06:51,088 --> 00:06:52,708 the first thing I want to do is open up 166 00:06:52,738 --> 00:06:54,808 pi charm so pi charm was the 167 00:06:54,838 --> 00:06:55,948 idea he the 168 00:06:56,008 --> 00:06:57,658 integrated development environment 169 00:06:57,928 --> 00:07:00,388 that we downloaded in the last tutorial so 170 00:07:00,658 --> 00:07:02,698 I'm just going to go out and search for it on my computer 171 00:07:03,508 --> 00:07:04,708 and I can just open it up 172 00:07:04,768 --> 00:07:07,918 and we first opened up high charm we should basically just get a window 173 00:07:07,948 --> 00:07:10,588 prompting us to create a project. 174 00:07:10,858 --> 00:07:12,058 so you can see that down here. 175 00:07:12,328 --> 00:07:15,777 actually the first thing I want to do though is come over here to configure 176 00:07:16,287 --> 00:07:17,247 and I'm just going to 177 00:07:17,277 --> 00:07:18,627 click on preferences. 178 00:07:19,077 --> 00:07:20,757 and I actually want to 179 00:07:20,787 --> 00:07:22,347 change the appearance 180 00:07:22,377 --> 00:07:22,887 so 181 00:07:23,337 --> 00:07:24,627 I'm gonna go ahead and 182 00:07:25,167 --> 00:07:28,707 give this a theme so I just went over here to appearance and behavior appearance 183 00:07:29,067 --> 00:07:30,927 and I'm gonna change the theme to 184 00:07:31,047 --> 00:07:31,767 darker color 185 00:07:31,917 --> 00:07:33,807 because I think it's a little bit easier to 186 00:07:33,897 --> 00:07:35,037 use and look at, 187 00:07:35,247 --> 00:07:36,957 but you don't have to do that if you don't want you 188 00:07:37,437 --> 00:07:38,037 so 189 00:07:38,067 --> 00:07:38,727 down here 190 00:07:38,757 --> 00:07:39,507 I'm just going to click 191 00:07:39,537 --> 00:07:40,917 create new projects 192 00:07:41,307 --> 00:07:41,967 and it's going to 193 00:07:41,997 --> 00:07:45,567 give us this little window right here so I can just name my project. 194 00:07:45,897 --> 00:07:47,157 and I'm just going to name this 195 00:07:47,217 --> 00:07:47,967 graph. 196 00:07:48,597 --> 00:07:51,777 and then there's other option down here where it says interpreter. 197 00:07:52,167 --> 00:07:52,677 now 198 00:07:53,487 --> 00:07:54,657 what we wanna select 199 00:07:54,687 --> 00:07:55,287 is 200 00:07:55,377 --> 00:07:57,087 python version three 201 00:07:57,117 --> 00:08:00,837 so if I click down here you'll notice that there's a couple different options. 202 00:08:01,077 --> 00:08:02,907 so I'm on a mac computer 203 00:08:02,937 --> 00:08:03,387 and 204 00:08:03,417 --> 00:08:05,517 by default mac has 205 00:08:05,577 --> 00:08:06,237 python 206 00:08:06,267 --> 00:08:08,127 version two installed on it. 207 00:08:08,427 --> 00:08:11,277 if you're on a windows machine I'm not sure if it does but 208 00:08:11,907 --> 00:08:16,437 in this tutorial we're going to be using python three so you wanna make sure that you have python 209 00:08:16,467 --> 00:08:18,807 three selected as the interpreter, 210 00:08:19,077 --> 00:08:19,587 otherwise 211 00:08:19,737 --> 00:08:19,977 you 212 00:08:20,007 --> 00:08:23,007 might not be able to fully follow along with what we're doing in this video. 213 00:08:23,307 --> 00:08:25,377 so now it's going to come down here and click 214 00:08:25,407 --> 00:08:26,007 create. 215 00:08:26,277 --> 00:08:28,737 and this is going to go ahead and create our projects 216 00:08:28,767 --> 00:08:29,517 for us 217 00:08:29,607 --> 00:08:30,807 right so now we have 218 00:08:30,837 --> 00:08:31,377 our 219 00:08:31,407 --> 00:08:32,307 python project 220 00:08:32,337 --> 00:08:32,967 up and running, 221 00:08:33,327 --> 00:08:36,177 and I'm sure you guys how we can create our first 222 00:08:36,297 --> 00:08:37,617 python program, 223 00:08:37,917 --> 00:08:42,297 so over here in this draft folder and this is just that project that we created. 224 00:08:42,747 --> 00:08:43,737 I'm just going to right click 225 00:08:43,767 --> 00:08:44,937 and I'm saying new 226 00:08:45,627 --> 00:08:46,857 and I'm going to come down and click 227 00:08:46,887 --> 00:08:50,487 python file so we want to create a new python file this will be our first 228 00:08:50,517 --> 00:08:51,567 python program. 229 00:08:52,137 --> 00:08:52,467 and 230 00:08:52,497 --> 00:08:53,787 I can just give this a name, 231 00:08:53,847 --> 00:08:55,197 so why don't we just call this 232 00:08:55,287 --> 00:08:55,617 app 233 00:08:55,737 --> 00:08:56,817 and it's going to click ok 234 00:08:56,937 --> 00:08:59,097 all right so now we have our first 235 00:08:59,127 --> 00:08:59,937 python file 236 00:08:59,967 --> 00:09:00,507 open 237 00:09:01,017 --> 00:09:04,407 and we can just start typing in some python so I want to show you guys. 238 00:09:04,617 --> 00:09:06,837 does a very basic python program. 239 00:09:07,047 --> 00:09:11,698 and this is just going to be a hello world programs so we're just gonna print something out onto the screen. 240 00:09:11,998 --> 00:09:12,538 so when I say 241 00:09:12,598 --> 00:09:15,928 what I want to do is I want to type out p r iyer anti prince 242 00:09:16,348 --> 00:09:17,008 and wanted to have an 243 00:09:17,038 --> 00:09:17,938 open and closed 244 00:09:17,968 --> 00:09:18,808 parentheses 245 00:09:19,048 --> 00:09:19,348 now 246 00:09:19,378 --> 00:09:21,838 inside of those parentheses we can make some 247 00:09:21,868 --> 00:09:22,798 quotation marks 248 00:09:23,008 --> 00:09:25,408 and inside of the quotation marks I'm just going to tape out 249 00:09:25,468 --> 00:09:26,218 hello 250 00:09:26,278 --> 00:09:26,818 world. 251 00:09:27,148 --> 00:09:29,968 so this is like a very basic python program. 252 00:09:30,178 --> 00:09:31,438 and what this is gonna do is 253 00:09:31,468 --> 00:09:33,718 it's just going to print out hello world 254 00:09:33,748 --> 00:09:34,828 onto the screen. 255 00:09:35,278 --> 00:09:36,568 and so now what I can do 256 00:09:36,658 --> 00:09:41,068 is I can actually run this file and we're actually getting a little arrow here it wants us to create a new line 257 00:09:41,368 --> 00:09:42,448 at the end of the file. 258 00:09:42,988 --> 00:09:47,518 and so now in order to run our python program I'm just going to come up here to the top 259 00:09:47,908 --> 00:09:49,348 and I'm cinematic run 260 00:09:49,468 --> 00:09:51,448 and we'll click this run button right here 261 00:09:51,868 --> 00:09:52,948 and I will see what happens 262 00:09:52,979 --> 00:09:53,729 so it's 263 00:09:53,789 --> 00:09:56,249 asking me what I want to run I can just click add up 264 00:09:56,939 --> 00:09:57,359 and 265 00:09:57,389 --> 00:10:01,679 down here at the bottom you'll notice that we have this text that just got printed out 266 00:10:01,709 --> 00:10:02,639 hello world, 267 00:10:02,999 --> 00:10:03,509 so 268 00:10:03,569 --> 00:10:04,349 whatever I 269 00:10:04,409 --> 00:10:04,919 print 270 00:10:05,159 --> 00:10:08,219 or whatever I put inside of this print statement is going to get printed out 271 00:10:08,249 --> 00:10:10,079 down below in the council so 272 00:10:10,319 --> 00:10:13,019 as long as you're getting that print statements work then you 273 00:10:13,109 --> 00:10:15,359 actually written your first python program. 274 00:10:15,659 --> 00:10:16,499 and as we go through it 275 00:10:16,529 --> 00:10:18,059 forward in the course were can be writing 276 00:10:18,089 --> 00:10:20,159 all sorts of awesome python programs. 277 00:10:20,219 --> 00:10:21,059 and we're going to do an 278 00:10:21,089 --> 00:10:22,379 all sorts of cool stuff 279 00:10:26,129 --> 00:10:33,299 in this tutorial I wanna talk to you about writing a basic python programs so we're going to write it as a very simple python program. 280 00:10:33,449 --> 00:10:36,929 we're going to look at how we can go ahead and write up programs we're going to talk about 281 00:10:37,079 --> 00:10:40,229 how our programs are getting executed by python 282 00:10:40,529 --> 00:10:44,099 and we're also going to draw out a little shape onto the screen so 283 00:10:44,339 --> 00:10:46,109 this is going to be pretty cool I'm excited to 284 00:10:46,139 --> 00:10:47,519 talk you guys about just the 285 00:10:47,549 --> 00:10:49,200 bare basics of python, 286 00:10:49,440 --> 00:10:51,720 and really just sort of give you an introduction so 287 00:10:51,810 --> 00:10:52,470 over here 288 00:10:52,650 --> 00:10:53,790 we have our 289 00:10:53,820 --> 00:10:55,320 basic text editor and so 290 00:10:55,680 --> 00:10:56,880 any of the 291 00:10:56,940 --> 00:10:59,790 python code that I write inside of this file 292 00:10:59,970 --> 00:11:02,910 is actually going to get executed by a python so 293 00:11:03,120 --> 00:11:04,440 this python file 294 00:11:04,470 --> 00:11:05,430 has a bunch of 295 00:11:05,460 --> 00:11:06,960 python code inside of it. 296 00:11:07,410 --> 00:11:09,600 and basically what we're doing when we're 297 00:11:09,630 --> 00:11:13,770 programming in python is we're just giving the computer a set of instructions. 298 00:11:14,070 --> 00:11:18,150 right that's really what programming is it's just like we're specifying a set of instructions 299 00:11:18,390 --> 00:11:22,470 and the computer is going to go off and execute those instructions that we give it. 300 00:11:22,980 --> 00:11:23,460 and so 301 00:11:23,490 --> 00:11:27,030 the more complex the instructions we give to the computer the more complex 302 00:11:27,060 --> 00:11:27,900 the tasks 303 00:11:27,930 --> 00:11:28,890 the computer can 304 00:11:28,950 --> 00:11:29,610 carry up. 305 00:11:30,090 --> 00:11:34,620 so I'll show you guys how we can use some python instructions or some python code 306 00:11:34,890 --> 00:11:37,710 in order to draw out a shape onto the screen so 307 00:11:37,950 --> 00:11:39,090 I'm actually going to draw out 308 00:11:39,120 --> 00:11:40,230 a little triangle. 309 00:11:40,650 --> 00:11:41,490 so over here, 310 00:11:41,550 --> 00:11:43,950 we can actually print something out onto the 311 00:11:43,980 --> 00:11:48,060 screen and python using something called a print statement so I can just type out 312 00:11:48,090 --> 00:11:48,540 print. 313 00:11:48,960 --> 00:11:50,970 and inside of these parentheses. 314 00:11:51,390 --> 00:11:52,260 I can just type 315 00:11:52,410 --> 00:11:53,700 some quotation marks 316 00:11:53,730 --> 00:11:54,990 and inside the quotation marks 317 00:11:55,020 --> 00:11:55,410 we can 318 00:11:55,440 --> 00:11:57,480 put whatever we want to print out onto the screen. 319 00:11:57,990 --> 00:11:58,890 so I'm gonna 320 00:11:58,980 --> 00:12:00,631 copy this and I'm actually going to make 321 00:12:00,661 --> 00:12:02,761 a few of these little prince statements 322 00:12:02,971 --> 00:12:04,441 and we're going actually draw a sheep. 323 00:12:04,801 --> 00:12:05,371 so 324 00:12:05,431 --> 00:12:06,391 we're gonna draw like 325 00:12:06,421 --> 00:12:07,921 a triangle type shape 326 00:12:07,951 --> 00:12:10,201 so down here it's gonna draw a forward slash 327 00:12:10,531 --> 00:12:13,951 and then up here I'll make a space and we'll do another foreign sash 328 00:12:14,371 --> 00:12:14,911 here will make 329 00:12:14,941 --> 00:12:16,051 two spaces 330 00:12:16,411 --> 00:12:17,791 with united forward slash. 331 00:12:17,851 --> 00:12:18,691 and over here 332 00:12:18,751 --> 00:12:20,731 we can make three spaces and afford sash. 333 00:12:21,301 --> 00:12:24,721 and now I'm going to draw like a vertical bar is going all the way down. 334 00:12:27,391 --> 00:12:29,701 and actually we can do some underscores here as well. 335 00:12:29,791 --> 00:12:30,511 I think high school 336 00:12:32,011 --> 00:12:35,191 right so now we have our triangle looking shave and you can see 337 00:12:35,461 --> 00:12:37,381 it looks kind of like a right triangle 338 00:12:37,501 --> 00:12:38,911 so I can save my file. 339 00:12:39,211 --> 00:12:41,971 and I can either come up here to run and 340 00:12:42,031 --> 00:12:43,231 click run app 341 00:12:43,531 --> 00:12:47,281 or of using pie charm you can also just come over here and click this play button 342 00:12:47,881 --> 00:12:51,451 and when I click the play button I want you to notice what happens down here 343 00:12:51,751 --> 00:12:52,231 so 344 00:12:52,291 --> 00:12:54,481 down here we have this little window and 345 00:12:54,511 --> 00:12:56,101 this is called the consul 346 00:12:56,611 --> 00:13:00,182 and it basically the council is a place where python is going to 347 00:13:00,242 --> 00:13:02,042 output some information so 348 00:13:02,341 --> 00:13:05,612 when we use this print statement were basically telling python late 349 00:13:05,822 --> 00:13:08,012 hey can you print something out onto the consul. 350 00:13:08,282 --> 00:13:08,612 so 351 00:13:08,642 --> 00:13:12,722 there's a lot of situations where we're gonna wanna see what's going on in our code. 352 00:13:13,052 --> 00:13:14,852 and we can use that print statement and 353 00:13:14,912 --> 00:13:16,562 print things out to the council. 354 00:13:16,802 --> 00:13:20,582 and we can basically like have a little window into what our programs doing 355 00:13:20,972 --> 00:13:24,512 in our case we're just going to be printing out this triangle onto the consul. 356 00:13:24,962 --> 00:13:27,242 so I'm gonna come over here and click this play button 357 00:13:27,722 --> 00:13:28,742 and you'll see down here 358 00:13:28,772 --> 00:13:30,302 we're actually printing out that 359 00:13:30,332 --> 00:13:30,932 triangle 360 00:13:31,172 --> 00:13:34,172 so mission accomplished we were able to print out our shape. 361 00:13:34,502 --> 00:13:37,592 so I can really draw any shape I want it as long as I was 362 00:13:37,622 --> 00:13:38,252 able to 363 00:13:38,282 --> 00:13:39,092 specify 364 00:13:39,122 --> 00:13:40,622 inside of these print statements. 365 00:13:41,162 --> 00:13:41,552 so 366 00:13:41,583 --> 00:13:44,883 essentially what python's doing when I click that play button 367 00:13:45,062 --> 00:13:49,623 is it's going into this file and it's looking at all of these instructions in order. 368 00:13:49,833 --> 00:13:52,623 so the first thing it does is it goes to this instruction and it says 369 00:13:52,653 --> 00:13:53,073 ok, 370 00:13:53,253 --> 00:13:57,903 they want me to draw out these like little forward slash in this vertical bar onto the strain, 371 00:13:58,203 --> 00:14:01,083 once it does that it goes down to this instruction it says 372 00:14:01,113 --> 00:14:01,413 ok 373 00:14:01,443 --> 00:14:02,883 they want me to print something on again 374 00:14:03,183 --> 00:14:05,613 when it prints dot out it goes down to this instruction 375 00:14:05,643 --> 00:14:06,273 etc 376 00:14:06,723 --> 00:14:07,203 so 377 00:14:07,233 --> 00:14:11,223 python is actually going to execute the lines of code that we write 378 00:14:11,523 --> 00:14:12,303 in order. 379 00:14:12,513 --> 00:14:12,933 so 380 00:14:12,963 --> 00:14:14,913 the order in which I write the instructions 381 00:14:14,943 --> 00:14:16,083 matters a lot. 382 00:14:16,173 --> 00:14:18,963 so for example if I was to take this last line here 383 00:14:19,263 --> 00:14:20,944 and put it up here at the top. 384 00:14:22,264 --> 00:14:23,704 now when I save the file. 385 00:14:23,764 --> 00:14:25,744 instead of just drawing up that triangle. 386 00:14:26,014 --> 00:14:27,034 it's going to draw out 387 00:14:27,064 --> 00:14:28,534 this little upside down 388 00:14:28,564 --> 00:14:30,154 bottom thing at the top and then 389 00:14:30,184 --> 00:14:31,864 the rest of the triangle down here so 390 00:14:32,194 --> 00:14:35,854 the order of the instructions actually matters a lot. 391 00:14:35,974 --> 00:14:39,154 so this is basically how your python programs are going to go. 392 00:14:39,214 --> 00:14:48,304 as we go through this course we're going to learn more and more of these little lines so here we're just using this little print function basically and just print something out on to the screen, 393 00:14:48,484 --> 00:14:51,634 there's a bunch of little things like this that we can learn as we go through 394 00:14:51,844 --> 00:14:55,504 will learn more and more instructions that we can give to the computer. 395 00:14:55,864 --> 00:14:58,984 but in this lesson I just wanted to kind of show you guys the basics right. 396 00:14:59,224 --> 00:14:59,674 oh 397 00:15:00,184 --> 00:15:03,934 we can essentially just define these little instructions for the computer 398 00:15:04,114 --> 00:15:06,004 and the computer will execute them 399 00:15:06,034 --> 00:15:06,694 in order. 400 00:15:10,504 --> 00:15:14,555 and this tutorial I wanna talk to you guys about using variables in 401 00:15:14,585 --> 00:15:15,395 python. 402 00:15:15,875 --> 00:15:17,945 now in python and you're going to be dealing with 403 00:15:17,975 --> 00:15:19,235 a lot of data 404 00:15:19,265 --> 00:15:21,935 and so a lot of times in our program we're going to be working with 405 00:15:21,965 --> 00:15:25,205 all types of information and data and values, 406 00:15:25,625 --> 00:15:27,005 and sometimes that data 407 00:15:27,035 --> 00:15:28,835 can be difficult to manage. 408 00:15:29,165 --> 00:15:32,465 so in python we have this thing called a variable. 409 00:15:32,705 --> 00:15:34,715 and it's basically just a container 410 00:15:34,985 --> 00:15:36,485 where we can store certain 411 00:15:36,515 --> 00:15:37,565 data values. 412 00:15:37,775 --> 00:15:40,055 and when we use a variable when we put those 413 00:15:40,115 --> 00:15:42,065 data values inside containers. 414 00:15:42,245 --> 00:15:43,145 it makes it a lot 415 00:15:43,175 --> 00:15:45,605 easier for us to work with and manage 416 00:15:45,635 --> 00:15:46,565 all of the different 417 00:15:46,595 --> 00:15:48,515 data inside of our programs. 418 00:15:48,815 --> 00:15:51,995 so variables are extremely helpful and it's sort of like a 419 00:15:52,025 --> 00:15:53,585 core topic in 420 00:15:53,735 --> 00:15:56,195 python that you're really going to want to know and master. 421 00:15:56,585 --> 00:15:58,655 so in this tutorial omelets each you guys. 422 00:15:58,745 --> 00:16:02,616 everything you need to know to get started with variables we're going to look at what they are 423 00:16:02,826 --> 00:16:05,916 why they're useful and we'll look at the different types of variables 424 00:16:05,946 --> 00:16:06,936 and the different types of 425 00:16:07,026 --> 00:16:08,616 data that we can store 426 00:16:08,646 --> 00:16:09,846 inside of variables, 427 00:16:10,026 --> 00:16:11,256 who over here in my 428 00:16:11,286 --> 00:16:13,806 python file I just have a very simple program. 429 00:16:14,196 --> 00:16:17,406 and it's basically just printing some text out onto the screen. 430 00:16:17,826 --> 00:16:20,556 and so this is actually a little story that I wrote it says. 431 00:16:20,796 --> 00:16:22,686 there once was a man named george 432 00:16:23,016 --> 00:16:24,636 he was seventy years old. 433 00:16:24,966 --> 00:16:26,646 he really liked the name george 434 00:16:26,826 --> 00:16:28,836 but didn't like being seventy. 435 00:16:29,166 --> 00:16:32,136 so this is a valid python program I can go ahead and 436 00:16:32,166 --> 00:16:33,156 run this program 437 00:16:33,546 --> 00:16:35,676 and you'll see down here in the council 438 00:16:35,706 --> 00:16:37,056 everything prints out and 439 00:16:37,116 --> 00:16:38,076 it looks great so 440 00:16:38,376 --> 00:16:40,386 we have an awesome little python program here. 441 00:16:40,806 --> 00:16:44,586 well let's say that inside of our story I wanted to change 442 00:16:44,617 --> 00:16:46,026 the character's name 443 00:16:46,057 --> 00:16:49,597 so instead of naming the character george let's say I wanted to name the character 444 00:16:49,627 --> 00:16:50,197 jon 445 00:16:50,617 --> 00:16:51,067 well 446 00:16:51,247 --> 00:16:59,557 I'm going to have to go through and I'm going to have to manually change the name george to the name john at every place inside of this story where it's mentioned. 447 00:16:59,647 --> 00:17:01,927 so I'm not to go over here and I'll say 448 00:17:01,957 --> 00:17:02,227 ok 449 00:17:02,257 --> 00:17:04,537 john I'm going to have to manually change that 450 00:17:04,777 --> 00:17:05,467 and then 451 00:17:05,497 --> 00:17:09,846 ok it's out here we're going up to again manually type in john and change it to john. 452 00:17:10,386 --> 00:17:15,606 so in order to change the character's name I had to manually go in and change it in both places. 453 00:17:16,086 --> 00:17:17,046 and now let's say 454 00:17:17,076 --> 00:17:17,376 ok 455 00:17:17,406 --> 00:17:19,626 maybe we want to change the characters ne 456 00:17:19,806 --> 00:17:22,446 age also so in addition to changing the name. 457 00:17:22,716 --> 00:17:28,656 we also want to change the age let's make him a little bit younger so why don't we say john is going to be thirty five. 458 00:17:29,406 --> 00:17:34,747 so you see here I had to come here and manually change the age and then come down here 459 00:17:35,017 --> 00:17:36,787 and manually change it again 460 00:17:37,207 --> 00:17:37,627 right. 461 00:17:38,017 --> 00:17:39,247 and now that we changed it like 462 00:17:39,277 --> 00:17:41,587 it's going to work it's going to be updated in our program. 463 00:17:41,977 --> 00:17:47,947 but you'll notice that in order to make that change like I had to look through the entire program find it where that 464 00:17:47,977 --> 00:17:49,597 value was and change it, 465 00:17:49,657 --> 00:17:50,077 and 466 00:17:50,137 --> 00:17:51,517 this was only with 467 00:17:51,547 --> 00:17:52,447 four lines 468 00:17:52,477 --> 00:17:55,357 of the story imagine if I had a story that was like 469 00:17:55,537 --> 00:17:57,067 thousands of lines long. 470 00:17:57,337 --> 00:17:59,017 and we mentioned that the character's name and 471 00:17:59,047 --> 00:17:59,707 age like 472 00:17:59,737 --> 00:18:00,847 hundreds of times. 473 00:18:01,177 --> 00:18:03,637 we don't have to look through each one of those lines and 474 00:18:03,847 --> 00:18:05,887 manually change the character's name 475 00:18:06,067 --> 00:18:09,127 and that is not a very good way for us to do this 476 00:18:09,487 --> 00:18:09,997 and 477 00:18:10,117 --> 00:18:14,077 it's really not a good way for us to manage the data in our program right the 478 00:18:14,107 --> 00:18:15,637 character's name in the age. 479 00:18:15,967 --> 00:18:18,187 and so we can actually use a variable 480 00:18:18,367 --> 00:18:19,777 in order to store 481 00:18:19,807 --> 00:18:21,788 the character's name and the characters. 482 00:18:21,848 --> 00:18:22,358 age. 483 00:18:22,568 --> 00:18:25,147 and when we use that variable it'll make it a lot 484 00:18:25,177 --> 00:18:27,758 easier for us to put the character's name and age. 485 00:18:27,818 --> 00:18:29,648 inside of our little program here. 486 00:18:30,038 --> 00:18:33,698 so I'm gonna show you guys how we can create a variable for the character's name and age. 487 00:18:33,998 --> 00:18:36,698 now it's going to go up here above this print statement. 488 00:18:37,088 --> 00:18:37,508 and 489 00:18:37,538 --> 00:18:40,238 up here I want to create a variable. 490 00:18:40,538 --> 00:18:42,518 so when we create a variable in 491 00:18:42,548 --> 00:18:44,828 python we actually need to give 492 00:18:45,008 --> 00:18:45,578 python 493 00:18:45,608 --> 00:18:47,228 a couple pieces of information. 494 00:18:47,708 --> 00:18:53,948 the first piece of information we need to give python is the name of the variable so I need to actually assign a name 495 00:18:54,128 --> 00:18:57,218 to this container where we're going to be storing information. 496 00:18:57,698 --> 00:18:59,528 so all I have to do is just type out 497 00:18:59,558 --> 00:19:00,818 the name of the variable 498 00:19:00,848 --> 00:19:02,708 that I want to create so I'm going to create a 499 00:19:02,798 --> 00:19:04,808 variable called character name. 500 00:19:05,288 --> 00:19:06,338 so I'm just going to say 501 00:19:07,028 --> 00:19:07,808 character 502 00:19:08,408 --> 00:19:09,758 adam's they underscore 503 00:19:09,788 --> 00:19:10,478 name 504 00:19:10,778 --> 00:19:12,998 so generally when you're creating a name 505 00:19:13,028 --> 00:19:14,738 for a variable in python. 506 00:19:14,888 --> 00:19:17,108 you want to separate different words 507 00:19:17,258 --> 00:19:21,788 with an underscore so I have two words here and I'm separating them with an underscore. 508 00:19:22,328 --> 00:19:24,249 and now what I need to do is I need to 509 00:19:24,279 --> 00:19:25,359 put a value 510 00:19:25,389 --> 00:19:27,399 inside of this very more so 511 00:19:27,459 --> 00:19:29,229 basically what I can do is I can just say 512 00:19:29,649 --> 00:19:30,459 equals 513 00:19:30,579 --> 00:19:32,439 and over here I can type a value 514 00:19:32,469 --> 00:19:34,839 so I'm just gonna type out the character's name inside of 515 00:19:35,019 --> 00:19:35,859 quotation marks. 516 00:19:36,159 --> 00:19:37,749 so we're just gonna type out john. 517 00:19:38,289 --> 00:19:41,499 so now we have a variable for the character's name 518 00:19:42,159 --> 00:19:46,629 and below this character named variable I want to create another variable called 519 00:19:46,719 --> 00:19:47,319 character 520 00:19:47,349 --> 00:19:49,149 age certain just going to tape out 521 00:19:49,719 --> 00:19:50,469 character 522 00:19:50,709 --> 00:19:51,459 underscore 523 00:19:51,519 --> 00:19:52,239 age. 524 00:19:52,599 --> 00:19:53,919 and I'm going to set this 525 00:19:53,949 --> 00:19:56,949 equal to the characters age which is thirty five. 526 00:19:58,120 --> 00:19:59,679 so we now have two variables, 527 00:19:59,949 --> 00:20:03,069 one representing the character's name and one representing the characters 528 00:20:03,099 --> 00:20:03,549 age. 529 00:20:03,819 --> 00:20:06,219 so what I can do now as I can replace 530 00:20:06,249 --> 00:20:08,559 the character's name inside of this story 531 00:20:08,589 --> 00:20:09,069 with 532 00:20:09,189 --> 00:20:10,359 this variable. 533 00:20:10,659 --> 00:20:12,130 and I'm gonna show you guys how to do that 534 00:20:12,160 --> 00:20:15,340 so if we want to put a variable inside of this print statement. 535 00:20:15,580 --> 00:20:17,500 I'm actually going to have to do a couple of things. 536 00:20:17,710 --> 00:20:19,840 the first thing I'm going to have to do is 537 00:20:20,020 --> 00:20:21,370 end off this 538 00:20:21,400 --> 00:20:23,380 text in here so I'm going to have to put 539 00:20:23,770 --> 00:20:24,220 a 540 00:20:24,280 --> 00:20:26,110 quotation marks here the end 541 00:20:26,410 --> 00:20:27,910 and you can see I'm basically 542 00:20:27,940 --> 00:20:29,890 wrapping this whole thing into a 543 00:20:29,950 --> 00:20:31,750 single like quoted line. 544 00:20:32,320 --> 00:20:36,760 and now I also have this tax overhear the end so I'm going to have to put a quotation mark here. 545 00:20:37,210 --> 00:20:37,990 so now I have 546 00:20:38,021 --> 00:20:38,470 a 547 00:20:38,531 --> 00:20:40,660 bunch of tax year in quotation marks. 548 00:20:41,080 --> 00:20:43,810 and then I also have tax over here in quotation marks 549 00:20:44,050 --> 00:20:45,520 now inside of here 550 00:20:45,610 --> 00:20:46,090 instead of 551 00:20:46,120 --> 00:20:47,650 saying the character's name 552 00:20:47,680 --> 00:20:49,750 I want to refer to that character name 553 00:20:49,780 --> 00:20:50,500 variable 554 00:20:50,920 --> 00:20:52,810 so I'm just going to say plus 555 00:20:54,430 --> 00:20:55,240 character 556 00:20:56,230 --> 00:20:57,340 underscore name 557 00:20:57,910 --> 00:21:01,421 and I want to say another plus sign so I basically I'm saying I want to 558 00:21:01,451 --> 00:21:03,100 print out all of this text, 559 00:21:03,641 --> 00:21:04,480 plus 560 00:21:04,661 --> 00:21:07,181 the value that stored inside of character name 561 00:21:07,511 --> 00:21:08,351 plus 562 00:21:08,651 --> 00:21:09,791 all of this text. 563 00:21:10,481 --> 00:21:14,021 and what this will do is they will actually print out the character's name we print this 564 00:21:14,291 --> 00:21:16,031 so I'm gonna go ahead and run this program 565 00:21:16,601 --> 00:21:18,041 and you'll see down here 566 00:21:18,101 --> 00:21:19,961 and actually let me put a space over here, 567 00:21:20,681 --> 00:21:21,641 and we'll run it again. 568 00:21:21,911 --> 00:21:23,381 so you can see down here, 569 00:21:23,561 --> 00:21:26,171 we still are printing out there once was a man named 570 00:21:26,201 --> 00:21:26,891 john. 571 00:21:27,491 --> 00:21:31,241 and so what python is doing is when it executes this line of code 572 00:21:31,541 --> 00:21:33,371 it's coming over here and it's seeing 573 00:21:33,461 --> 00:21:34,931 ok they want to turn out. 574 00:21:35,021 --> 00:21:37,331 the value inside of character name 575 00:21:37,661 --> 00:21:38,141 so it 576 00:21:38,171 --> 00:21:41,051 python's going to go up here it's going to get the value, 577 00:21:41,291 --> 00:21:41,801 and it's going to 578 00:21:41,831 --> 00:21:43,361 insert it inside of there 579 00:21:43,781 --> 00:21:48,611 so I can basically do this for every instance of the character name in my file so I can 580 00:21:48,911 --> 00:21:49,271 you know 581 00:21:49,331 --> 00:21:51,311 r is copy this guy right here 582 00:21:51,911 --> 00:21:52,421 and 583 00:21:52,481 --> 00:21:55,661 I can just paste it down here where the characters name is 584 00:21:55,871 --> 00:21:56,891 so apace this 585 00:21:57,071 --> 00:22:00,912 and you can see now were doing exactly the same thing that we did up there. 586 00:22:01,302 --> 00:22:03,792 I can also do this for the characters 587 00:22:03,852 --> 00:22:05,592 age someone to come down here 588 00:22:05,832 --> 00:22:07,872 and I'll paste in what we just paste it in. 589 00:22:08,832 --> 00:22:12,312 and I'm going to change this instead of character name was changed to character 590 00:22:12,342 --> 00:22:12,912 age. 591 00:22:14,502 --> 00:22:15,552 and I'm going to do this 592 00:22:15,582 --> 00:22:19,302 in one more spots are going to do this over here we're mentioning the age 593 00:22:19,992 --> 00:22:22,152 and again I'll just change this to 594 00:22:22,212 --> 00:22:22,482 carry 595 00:22:22,512 --> 00:22:23,142 your age. 596 00:22:23,832 --> 00:22:29,082 and so now when I run this program it's going to print out the same story they were printing out before, 597 00:22:29,502 --> 00:22:29,892 but 598 00:22:29,922 --> 00:22:34,632 now I don't actually have to type in the character's name and the characters age. 599 00:22:34,872 --> 00:22:36,312 I can just refer to this 600 00:22:36,342 --> 00:22:37,062 variable. 601 00:22:37,482 --> 00:22:41,352 and the cool thing about variables as if I wanted to change the character's name. 602 00:22:41,892 --> 00:22:46,212 now all I have to do is change it up here so I could change the characters names you like 603 00:22:46,242 --> 00:22:47,352 tom or something. 604 00:22:47,682 --> 00:22:49,902 and we could also change their age so I could change 605 00:22:50,052 --> 00:22:51,732 the age to be like fifty 606 00:22:52,032 --> 00:22:55,872 and now that's going to automatically update throughout our entire story 607 00:22:56,262 --> 00:22:58,002 when I click this play button you'll see 608 00:22:58,212 --> 00:23:00,312 now we're using the name tom 609 00:23:00,522 --> 00:23:02,382 and he's fifty years old. 610 00:23:02,652 --> 00:23:04,812 so that's where variables can come in handy and 611 00:23:04,842 --> 00:23:08,742 this can be a really awesome way to control and manage 612 00:23:08,982 --> 00:23:11,172 the data that's inside of our programs 613 00:23:11,592 --> 00:23:13,152 with variables you can also 614 00:23:13,182 --> 00:23:14,742 modify their values 615 00:23:14,772 --> 00:23:15,282 so 616 00:23:15,432 --> 00:23:19,602 for example let's say that halfway through the story I wanted to change the character's name 617 00:23:20,022 --> 00:23:22,122 why can just make some new lines over here, 618 00:23:22,482 --> 00:23:23,532 and down here 619 00:23:23,562 --> 00:23:25,452 I can actually assign a new 620 00:23:25,482 --> 00:23:27,222 value to one of these variables. 621 00:23:27,462 --> 00:23:28,662 so I can say like 622 00:23:29,532 --> 00:23:30,312 character 623 00:23:30,372 --> 00:23:31,512 underscore name, 624 00:23:31,962 --> 00:23:35,442 and in order to give it a different value all I have to do is just say equals 625 00:23:35,472 --> 00:23:37,182 and will give it a different value and so 626 00:23:37,693 --> 00:23:41,293 let's say halfway through the story we want to change the character's name to mike 627 00:23:42,313 --> 00:23:43,873 one now when I run my program 628 00:23:44,683 --> 00:23:47,263 you'll see here in the first part of the story it says 629 00:23:47,293 --> 00:23:48,433 there once was a man named 630 00:23:48,463 --> 00:23:49,123 tom. 631 00:23:49,453 --> 00:23:51,163 and in the second part of the story, 632 00:23:51,253 --> 00:23:53,083 it's referring to the name as 633 00:23:53,143 --> 00:23:53,803 mike. 634 00:23:54,013 --> 00:23:55,033 so I actually 635 00:23:55,063 --> 00:23:56,653 updated the variable 636 00:23:56,683 --> 00:23:58,153 inside of my program 637 00:23:58,183 --> 00:23:58,993 over here 638 00:23:59,383 --> 00:24:00,943 and that's a really awesome way 639 00:24:00,973 --> 00:24:05,533 you know a lot of times in these programs you're going to want to be modifying the values of variables 640 00:24:05,743 --> 00:24:06,553 so you can do it 641 00:24:06,583 --> 00:24:07,603 just like that. 642 00:24:07,663 --> 00:24:10,363 and so finally I want to talk to you guys about the different 643 00:24:10,573 --> 00:24:14,293 types of data that we can store inside of these variables. 644 00:24:14,593 --> 00:24:15,523 so over here 645 00:24:15,553 --> 00:24:18,073 I have the character name and character age 646 00:24:18,313 --> 00:24:18,643 and 647 00:24:18,703 --> 00:24:21,794 I'm actually storing what are called strings, 648 00:24:21,974 --> 00:24:24,314 so a string is basically just 649 00:24:24,524 --> 00:24:25,874 plain tax straight 650 00:24:26,114 --> 00:24:28,664 so the name tom that's just plain text 651 00:24:29,084 --> 00:24:31,574 down here these guys are strings as well. 652 00:24:31,844 --> 00:24:34,154 so there's a data type in python, 653 00:24:34,394 --> 00:24:36,554 called a string and it's just 654 00:24:36,584 --> 00:24:38,054 basically going to store 655 00:24:38,115 --> 00:24:38,955 plain text 656 00:24:38,985 --> 00:24:39,345 so 657 00:24:39,615 --> 00:24:43,185 you know any text that you would have like in a story early know someone's name 658 00:24:43,395 --> 00:24:45,344 you can store inside of a string. 659 00:24:45,885 --> 00:24:47,924 there's also another type of data 660 00:24:47,954 --> 00:24:49,935 that we can store inside of python 661 00:24:49,965 --> 00:24:51,075 which is numbers 662 00:24:51,105 --> 00:24:53,835 so an additional storing text we can also store 663 00:24:53,865 --> 00:24:54,495 numbers. 664 00:24:54,885 --> 00:24:57,165 so if I wanted to start a number for example 665 00:24:57,195 --> 00:25:00,705 let's say we wanted to store the character age instead of inside of a string. 666 00:25:01,005 --> 00:25:03,135 we can store it inside of a number so 667 00:25:03,915 --> 00:25:05,805 I could just type out fifty. 668 00:25:06,255 --> 00:25:09,915 and when we're storing a number we don't need these quotation marks 669 00:25:09,945 --> 00:25:11,625 you only need that quotation mark 670 00:25:11,895 --> 00:25:15,016 when you're storing a string so if I wanted to a number I can just 671 00:25:15,046 --> 00:25:16,216 write it out like this, 672 00:25:16,666 --> 00:25:20,295 and in addition to using whole numbers I can also use decimal numbers. 673 00:25:20,355 --> 00:25:23,205 so I could say like fifty point five six seven eight 674 00:25:23,235 --> 00:25:24,196 to one three 675 00:25:24,586 --> 00:25:26,536 and pythons are going to be able to store 676 00:25:26,566 --> 00:25:27,886 that number as well. 677 00:25:28,126 --> 00:25:29,956 you can store all different types of numbers 678 00:25:30,286 --> 00:25:32,206 and we can also store 679 00:25:32,236 --> 00:25:34,306 what's called a boolean value 680 00:25:34,576 --> 00:25:39,046 and a boolean value is essentially a true or false value. 681 00:25:39,376 --> 00:25:43,306 and there's a lot of instances in programming where we're going to want to represent 682 00:25:43,336 --> 00:25:44,566 true or false 683 00:25:44,626 --> 00:25:45,196 data 684 00:25:45,616 --> 00:25:47,836 for example I can have a variable called like 685 00:25:47,956 --> 00:25:48,976 his mail 686 00:25:49,306 --> 00:25:52,156 and this would tell me whether or not someone was a male, 687 00:25:52,486 --> 00:25:55,906 and in my case it will be true because I'm a guy right so I can 688 00:25:56,176 --> 00:25:57,346 actually this needs to be 689 00:25:57,376 --> 00:25:57,916 capital 690 00:25:58,756 --> 00:25:59,236 so 691 00:25:59,476 --> 00:26:01,876 I could sort of value of either true 692 00:26:02,416 --> 00:26:02,986 or 693 00:26:03,916 --> 00:26:04,696 false. 694 00:26:04,846 --> 00:26:07,036 and actually if we were naming this in python 695 00:26:07,066 --> 00:26:08,896 we want to use an underscore or so I would say 696 00:26:08,956 --> 00:26:10,546 is underscore mail 697 00:26:10,846 --> 00:26:12,706 and this can be either true or false 698 00:26:12,736 --> 00:26:13,126 so 699 00:26:13,366 --> 00:26:17,957 true or false values is maybe not something that you're used to dealing with like in the real world 700 00:26:18,497 --> 00:26:18,947 but 701 00:26:18,977 --> 00:26:22,007 in programming we're going to be using a true or false values 702 00:26:22,067 --> 00:26:24,707 all the time they're super important so 703 00:26:25,427 --> 00:26:29,537 like I said there's three basic types of data that we can work with in python there's 704 00:26:29,597 --> 00:26:32,117 strings which is just like a plain text, 705 00:26:32,177 --> 00:26:36,587 numbers which would be like either decimal numbers or whole numbers like this, 706 00:26:36,827 --> 00:26:38,207 and there's true or false 707 00:26:38,237 --> 00:26:38,927 values. 708 00:26:39,257 --> 00:26:45,857 and these are the basic types of data I mean there's a bunch of other types of data that we can use but I would say ninety nine percent of the time. 709 00:26:46,097 --> 00:26:47,597 as a new user 710 00:26:47,627 --> 00:26:49,398 in a new programmer to python, 711 00:26:49,608 --> 00:26:51,198 you're just going to be dealing with these 712 00:26:51,288 --> 00:26:52,668 three types of data 713 00:26:52,698 --> 00:26:53,118 so 714 00:26:53,388 --> 00:26:54,378 those are the basics 715 00:26:54,438 --> 00:26:55,398 of the data 716 00:26:55,428 --> 00:26:55,818 and 717 00:26:55,908 --> 00:26:57,228 also with variables 718 00:26:57,288 --> 00:26:58,548 and you're going to be using variables 719 00:26:58,578 --> 00:27:01,998 all the time in python so you definitely want to practice up and get comfortable 720 00:27:02,028 --> 00:27:02,748 using them 721 00:27:06,768 --> 00:27:11,298 in this tutorial are talks you guys about working with strings in python. 722 00:27:11,748 --> 00:27:13,458 now what the most common types of 723 00:27:13,488 --> 00:27:17,148 data that we're going to be working with in python is going to be strings 724 00:27:17,418 --> 00:27:19,308 and strings are basically just 725 00:27:19,428 --> 00:27:21,408 plain text so any text 726 00:27:21,708 --> 00:27:23,478 that we want to have inside of our program 727 00:27:23,688 --> 00:27:25,848 we can store inside of a string. 728 00:27:26,148 --> 00:27:30,318 so I wanna talk to you guys about all the cool things we can do with strings and we're basically just going to get a 729 00:27:30,558 --> 00:27:33,408 full introduction into why strings are awesome. 730 00:27:33,948 --> 00:27:34,938 so over here, 731 00:27:35,118 --> 00:27:36,918 I'm just going to actually print out 732 00:27:36,948 --> 00:27:39,109 a strings I'm just going to say print 733 00:27:39,529 --> 00:27:39,889 and 734 00:27:39,919 --> 00:27:41,359 inside of these parentheses. 735 00:27:41,419 --> 00:27:42,799 I can type out a string 736 00:27:43,219 --> 00:27:47,269 in order to create a string I need to use quotation marks so I can make an 737 00:27:47,299 --> 00:27:48,799 open and close quotation marks 738 00:27:48,829 --> 00:27:49,729 just like that 739 00:27:50,059 --> 00:27:50,389 now 740 00:27:50,449 --> 00:27:51,019 inside 741 00:27:51,049 --> 00:27:53,209 the quotation mark I can put whatever text 742 00:27:53,239 --> 00:27:55,549 I want the string to have so we could say like 743 00:27:56,059 --> 00:27:56,689 draff 744 00:27:56,749 --> 00:27:57,439 academy. 745 00:27:58,309 --> 00:27:59,989 and so now we have a string 746 00:28:00,019 --> 00:28:00,829 with the text 747 00:28:00,859 --> 00:28:02,359 draff academy inside of it 748 00:28:02,719 --> 00:28:04,129 so if I run my program. 749 00:28:04,249 --> 00:28:07,879 now down here we're going to print out draff academy as you can see, 750 00:28:08,059 --> 00:28:12,199 and when we have these strings there's actually a bunch of cool things that we can do with them so 751 00:28:12,499 --> 00:28:18,529 one thing I could do would be to create a new line inside of the string so if I wanted I could come over here, 752 00:28:18,799 --> 00:28:20,269 and I could save backslash 753 00:28:20,329 --> 00:28:20,870 n 754 00:28:21,290 --> 00:28:23,840 and you can see it got highlighted in a different color. 755 00:28:24,140 --> 00:28:30,320 and what this is gonna do is it's actually going to insert a new line into the string so now it's going to say draff on one line 756 00:28:30,530 --> 00:28:32,420 and academy on another line. 757 00:28:32,900 --> 00:28:34,400 so I'm gonna click play. 758 00:28:34,580 --> 00:28:37,130 and you'll see down here we just get draff academy, 759 00:28:37,520 --> 00:28:39,110 an addition to the backslash 760 00:28:39,140 --> 00:28:39,470 n 761 00:28:39,500 --> 00:28:40,910 I could also use 762 00:28:41,090 --> 00:28:42,110 a backslash 763 00:28:42,140 --> 00:28:43,430 quotation marks so 764 00:28:43,670 --> 00:28:46,760 if I wanted to put a quotation mark inside of my string. 765 00:28:47,180 --> 00:28:49,370 I can't just put a quotation mark like that 766 00:28:49,640 --> 00:28:52,371 because pythons going to think that I'm trying to end 767 00:28:52,401 --> 00:28:53,421 this strength. 768 00:28:53,691 --> 00:28:55,881 so if I want to include a quotation mark I can just use this 769 00:28:55,911 --> 00:28:57,531 special backslash character 770 00:28:57,981 --> 00:28:59,991 and that's called the escape character and it 771 00:29:00,021 --> 00:29:02,031 basically just tells python that 772 00:29:02,361 --> 00:29:05,391 whatever character comes after it we want to 773 00:29:05,452 --> 00:29:06,922 render a literally so 774 00:29:07,161 --> 00:29:08,572 when I say backslash 775 00:29:08,602 --> 00:29:09,472 quotation mark. 776 00:29:09,652 --> 00:29:10,522 it basically means like 777 00:29:10,552 --> 00:29:11,302 hey python 778 00:29:11,332 --> 00:29:12,772 I want to point out a quotation mark. 779 00:29:13,102 --> 00:29:14,572 and so now we'll be able to print 780 00:29:14,602 --> 00:29:14,842 out 781 00:29:14,872 --> 00:29:16,042 a quotation mark 782 00:29:16,072 --> 00:29:16,642 right there. 783 00:29:16,972 --> 00:29:20,752 I can also use this to print out of backslash so if I needed to put out a backslash. 784 00:29:20,812 --> 00:29:22,102 I could see backslash, 785 00:29:22,402 --> 00:29:22,912 and 786 00:29:23,152 --> 00:29:25,282 it'll just print out a normal backslash now 787 00:29:26,002 --> 00:29:27,622 so you can see just like that so 788 00:29:27,772 --> 00:29:29,752 if you want and you can use that backslash to make 789 00:29:29,782 --> 00:29:31,672 new lines or pronounce quotation marks, 790 00:29:31,943 --> 00:29:33,683 or you can just use it as a normal 791 00:29:33,713 --> 00:29:34,373 backslash 792 00:29:35,123 --> 00:29:39,503 in addition to just typing out a string here I could also create a string 793 00:29:39,533 --> 00:29:40,283 variable. 794 00:29:40,793 --> 00:29:41,933 so I could come down here 795 00:29:41,963 --> 00:29:44,423 up here and we can create a variable and let's call it 796 00:29:44,513 --> 00:29:45,443 phrase. 797 00:29:45,803 --> 00:29:46,523 and I'm going to set it 798 00:29:46,553 --> 00:29:47,543 equal to 799 00:29:47,633 --> 00:29:48,593 drop off a colony, 800 00:29:49,073 --> 00:29:49,763 so I can 801 00:29:49,823 --> 00:29:54,114 store this string value inside of a variable called phrase 802 00:29:54,384 --> 00:29:55,524 and then when I want to print 803 00:29:55,554 --> 00:29:56,664 out that variable, 804 00:29:56,754 --> 00:29:58,884 or I want to access that string variable. 805 00:29:59,094 --> 00:29:59,844 I can just 806 00:30:00,024 --> 00:30:01,344 type the name of 807 00:30:01,404 --> 00:30:02,184 the variable. 808 00:30:02,394 --> 00:30:06,204 and you'll see that it's going to print out the value that was stored inside of it. 809 00:30:06,564 --> 00:30:09,534 I can also use something called concatenation 810 00:30:09,774 --> 00:30:13,464 and concatenation is basically the process of taking a string and 811 00:30:13,644 --> 00:30:15,504 appending another string onto it. 812 00:30:15,834 --> 00:30:18,144 so I could come over here and I could say phrase, 813 00:30:18,414 --> 00:30:18,894 and I can say 814 00:30:18,924 --> 00:30:19,734 plus. 815 00:30:19,884 --> 00:30:23,035 and now I can add in another string so I could say like 816 00:30:23,305 --> 00:30:24,205 is cool. 817 00:30:24,445 --> 00:30:25,795 and now this is going to say 818 00:30:25,825 --> 00:30:26,995 druff academy 819 00:30:27,025 --> 00:30:27,625 is 820 00:30:27,655 --> 00:30:28,195 cool, 821 00:30:28,675 --> 00:30:31,345 so I'm basically appending another string 822 00:30:31,435 --> 00:30:33,655 onto another one they call that concatenation. 823 00:30:34,045 --> 00:30:38,815 and so in addition to doing all that stuff we can also use a special thing is called 824 00:30:38,845 --> 00:30:39,745 functions 825 00:30:40,045 --> 00:30:43,945 and a function is basically just a little block of code that we can run 826 00:30:44,215 --> 00:30:45,865 and it will perform a specific 827 00:30:45,895 --> 00:30:47,275 operation for us, 828 00:30:47,515 --> 00:30:50,756 so we can use functions to modify our strings. 829 00:30:50,996 --> 00:30:55,046 we can also use functions to get information about our strings. 830 00:30:55,256 --> 00:30:55,736 so 831 00:30:55,886 --> 00:30:59,486 I'm gonna show you guys a couple common functions we can use with the strings. 832 00:30:59,756 --> 00:31:00,086 and 833 00:31:00,116 --> 00:31:02,156 they're actually going to do awesome stuff so 834 00:31:02,426 --> 00:31:06,146 in order to access one of these functions I can just say phrase and then I can say 835 00:31:06,176 --> 00:31:06,716 dot. 836 00:31:07,016 --> 00:31:07,376 and 837 00:31:07,466 --> 00:31:10,586 I'm gonna show you guys a function that we can use to convert this 838 00:31:10,616 --> 00:31:14,786 string entirely into lowercase so I could just say phrase dot lower. 839 00:31:15,116 --> 00:31:16,136 and I'm going to want to type an 840 00:31:16,166 --> 00:31:17,786 open and close parentheses, 841 00:31:17,996 --> 00:31:19,706 and this will take this phrase, 842 00:31:19,826 --> 00:31:22,526 it'll take my string and it will convert it to lower case. 843 00:31:22,706 --> 00:31:27,086 so you can see now we just have a draft academy done here but it's entirely in lower case. 844 00:31:27,356 --> 00:31:31,076 I could also do the same thing for upper case so I could say phrase dot 845 00:31:31,196 --> 00:31:31,766 upper 846 00:31:32,216 --> 00:31:34,586 and this will convert the entire string into 847 00:31:34,616 --> 00:31:36,116 upper case so you can see now it's 848 00:31:36,146 --> 00:31:37,406 entirely upper case. 849 00:31:37,466 --> 00:31:38,996 so in addition to 850 00:31:39,026 --> 00:31:40,587 converting the string into upper case 851 00:31:40,617 --> 00:31:41,157 lower case 852 00:31:41,187 --> 00:31:41,727 I can also 853 00:31:41,757 --> 00:31:46,167 check to see if a string is entirely upper case are entirely lowercase. 854 00:31:46,617 --> 00:31:48,627 so for example I could say phrase dot 855 00:31:48,657 --> 00:31:49,647 is upper. 856 00:31:49,917 --> 00:31:53,517 and this is going to give me back a true or false value 857 00:31:53,547 --> 00:31:54,837 so it's going to be true 858 00:31:55,077 --> 00:31:57,057 if the string is entirely upper case 859 00:31:57,087 --> 00:31:57,777 or false 860 00:31:57,807 --> 00:31:58,617 if it's not. 861 00:31:59,097 --> 00:32:02,067 and you can see here we're getting a false value because this 862 00:32:02,097 --> 00:32:02,457 is an 863 00:32:02,487 --> 00:32:03,207 upper case 864 00:32:03,747 --> 00:32:08,817 I can also use these functions in combination with each other so for example, 865 00:32:08,877 --> 00:32:10,647 I could say phrase 866 00:32:11,457 --> 00:32:11,907 dot 867 00:32:11,967 --> 00:32:12,627 upper 868 00:32:13,017 --> 00:32:13,557 and that a 869 00:32:13,617 --> 00:32:14,577 parentheses 870 00:32:14,937 --> 00:32:16,647 and then after this I can say 871 00:32:16,677 --> 00:32:17,037 dot 872 00:32:17,068 --> 00:32:17,698 is upper 873 00:32:17,728 --> 00:32:20,398 and now what it's going to do is it's going to run this 874 00:32:20,428 --> 00:32:21,418 upper function, 875 00:32:21,628 --> 00:32:23,458 it's going to convert it into upper case. 876 00:32:23,638 --> 00:32:24,928 and then it's going to run this 877 00:32:24,988 --> 00:32:27,088 is upper function right after that 878 00:32:27,208 --> 00:32:33,028 and you'll see now we're going to get a true value back because it will have converted the whole thing into upper case. 879 00:32:33,298 --> 00:32:36,058 so you can see now we're getting a true value so 880 00:32:36,388 --> 00:32:37,468 the news these functions 881 00:32:37,498 --> 00:32:39,808 one after another it can be really useful. 882 00:32:40,318 --> 00:32:43,379 and there's a few other ones that I want to show you so we can also 883 00:32:43,469 --> 00:32:44,849 figure out the length 884 00:32:44,909 --> 00:32:45,329 of 885 00:32:45,389 --> 00:32:46,829 this string so 886 00:32:47,159 --> 00:32:50,099 if I wanted to figure out how many characters were inside of this 887 00:32:50,129 --> 00:32:51,509 string I could just say 888 00:32:51,539 --> 00:32:52,349 l e n 889 00:32:52,709 --> 00:32:53,759 and I'm actually going to make an 890 00:32:53,789 --> 00:32:54,959 open parentheses, 891 00:32:55,169 --> 00:32:57,149 and I'm going to make a close parentheses. 892 00:32:57,389 --> 00:32:58,679 so I'm essentially saying 893 00:32:58,709 --> 00:33:01,859 alien and this is another function it's the length function. 894 00:33:02,129 --> 00:33:05,519 and inside of this alien function I'm actually passing 895 00:33:05,549 --> 00:33:06,059 this 896 00:33:06,269 --> 00:33:07,529 phrase variable 897 00:33:07,829 --> 00:33:12,509 basically giving the length function this and it's going to spit out a number so tell me how many 898 00:33:12,569 --> 00:33:14,369 characters are inside of this string. 899 00:33:15,059 --> 00:33:20,639 as you can see here we get fifteen because there's fifteen characters inside of draff academy. 900 00:33:20,999 --> 00:33:25,889 so that's how you can get the whole length of the string and that's going to be really useful as we go forward in python. 901 00:33:25,949 --> 00:33:26,969 we can also get 902 00:33:26,999 --> 00:33:29,789 individual characters inside of a string so 903 00:33:30,089 --> 00:33:34,589 imagine if I wanted to just grab one of these characters like imagine if I wanted to 904 00:33:34,619 --> 00:33:37,379 figure out what the first character in the string is 905 00:33:37,739 --> 00:33:38,969 we're going to actually use 906 00:33:39,029 --> 00:33:40,020 and open a closed 907 00:33:40,050 --> 00:33:41,190 square bracket 908 00:33:41,220 --> 00:33:42,120 just like that. 909 00:33:42,360 --> 00:33:44,340 and in here I can specify the 910 00:33:44,370 --> 00:33:46,620 index of the character that I want to graph. 911 00:33:46,920 --> 00:33:49,860 so if I wanted to grab the first character in the string 912 00:33:49,890 --> 00:33:51,390 I can put in a zero. 913 00:33:51,690 --> 00:33:53,100 so if I say phrase 914 00:33:53,130 --> 00:33:54,570 square bracket zero, 915 00:33:54,750 --> 00:33:57,060 this is going to give me that capital g 916 00:33:57,300 --> 00:33:58,710 and you can see down here 917 00:33:58,740 --> 00:34:00,090 that's what gets printed out. 918 00:34:00,450 --> 00:34:01,771 now I want to point something out 919 00:34:01,860 --> 00:34:02,401 in 920 00:34:02,521 --> 00:34:03,421 python. 921 00:34:03,541 --> 00:34:05,131 when we're working with strings. 922 00:34:05,461 --> 00:34:06,211 a string 923 00:34:06,241 --> 00:34:07,141 gets indexed 924 00:34:07,171 --> 00:34:08,460 starting with zero. 925 00:34:08,730 --> 00:34:11,700 so you'll notice that in order to access this g. 926 00:34:11,791 --> 00:34:13,501 I had to put a zero in here. 927 00:34:13,801 --> 00:34:15,361 that's because in python. 928 00:34:15,781 --> 00:34:18,931 when we use indexes on a string we start with zero 929 00:34:19,171 --> 00:34:21,841 so if python is counting the characters 930 00:34:22,051 --> 00:34:25,771 or its indexing the characters in a string it's going to start with zero so it's going to say 931 00:34:25,981 --> 00:34:27,001 g is zero 932 00:34:27,361 --> 00:34:28,981 I as one are as to 933 00:34:29,011 --> 00:34:29,761 a history. 934 00:34:30,061 --> 00:34:32,431 so we would say that g is at position 935 00:34:32,461 --> 00:34:33,871 zero in the string. 936 00:34:33,931 --> 00:34:35,402 I is at position one 937 00:34:35,732 --> 00:34:36,962 r is at position two 938 00:34:36,992 --> 00:34:38,702 a's at position three etc. 939 00:34:38,942 --> 00:34:40,382 so we start counting 940 00:34:40,412 --> 00:34:41,462 at zero. 941 00:34:42,302 --> 00:34:43,712 so if I wanted to access 942 00:34:43,952 --> 00:34:44,672 the first 943 00:34:45,122 --> 00:34:46,413 character in the string. 944 00:34:46,593 --> 00:34:48,753 this g I have to say phrase 945 00:34:48,783 --> 00:34:50,613 zero and that's just a special thing 946 00:34:51,062 --> 00:34:53,942 in python and actually most programming languages 947 00:34:53,972 --> 00:34:55,322 do that so they'll start with 948 00:34:55,352 --> 00:34:55,982 zero. 949 00:34:56,342 --> 00:34:58,262 so for example if I wanted to access this 950 00:34:58,292 --> 00:34:58,802 ei, 951 00:34:59,042 --> 00:35:00,002 I'm going to have to put 952 00:35:00,032 --> 00:35:00,873 zero 953 00:35:02,493 --> 00:35:03,033 one 954 00:35:03,063 --> 00:35:06,213 two three so I put three inside of here 955 00:35:06,453 --> 00:35:08,643 now will be able to access that first 956 00:35:08,703 --> 00:35:09,123 a. 957 00:35:09,363 --> 00:35:10,474 as you can see we get an 958 00:35:10,504 --> 00:35:11,434 a right here, 959 00:35:11,824 --> 00:35:12,784 so this 960 00:35:12,844 --> 00:35:16,924 is actually really useful being able to grab a specific character inside of a string 961 00:35:16,984 --> 00:35:17,914 and you're gonna be using it 962 00:35:17,944 --> 00:35:19,895 that a lot as we go forward and python 963 00:35:20,015 --> 00:35:23,795 is also another really awesome function that we can use and it's called the 964 00:35:23,825 --> 00:35:24,905 index function. 965 00:35:25,685 --> 00:35:28,895 and basically what the index function will do is it'll tell us 966 00:35:28,925 --> 00:35:30,635 where a specific 967 00:35:30,666 --> 00:35:33,335 character or string is located 968 00:35:33,365 --> 00:35:35,615 inside of our strings like unsafe phrase 969 00:35:36,005 --> 00:35:36,335 dot 970 00:35:36,365 --> 00:35:37,085 index. 971 00:35:37,415 --> 00:35:37,895 and 972 00:35:38,105 --> 00:35:42,906 I can actually give this a value so sometimes when we use these functions in python, 973 00:35:43,146 --> 00:35:45,966 we can actually give them information so I can give this 974 00:35:45,996 --> 00:35:46,746 of value 975 00:35:47,076 --> 00:35:50,286 and we would call this passing a parameter so 976 00:35:50,376 --> 00:35:53,076 I would call a value that I would give to a function 977 00:35:53,106 --> 00:35:55,266 a parameter and you'll hear that word a lot. 978 00:35:55,656 --> 00:35:56,346 so 979 00:35:56,436 --> 00:35:58,686 for example I can say inside of here 980 00:35:58,716 --> 00:35:59,886 capitol g, 981 00:36:00,066 --> 00:36:01,926 and now this is going to return 982 00:36:01,956 --> 00:36:02,826 the index 983 00:36:02,856 --> 00:36:03,276 of 984 00:36:03,306 --> 00:36:05,526 the capitol g inside of our string 985 00:36:05,736 --> 00:36:07,236 so it should give us back 986 00:36:07,266 --> 00:36:09,907 a zero because g is at the zero of index 987 00:36:10,267 --> 00:36:13,717 and you'll see down here that we get a zero because that's where g is. 988 00:36:14,137 --> 00:36:15,847 so for example if I put in 989 00:36:15,877 --> 00:36:17,677 a inside it here like the lower case 990 00:36:17,707 --> 00:36:18,037 a 991 00:36:18,067 --> 00:36:21,247 it should give me zero one two three 992 00:36:21,457 --> 00:36:22,987 because that's where the first 993 00:36:23,047 --> 00:36:24,697 aid is inside of this string, 994 00:36:25,207 --> 00:36:26,527 so I can click the play button 995 00:36:26,917 --> 00:36:28,327 and you'll see it's giving us 996 00:36:28,357 --> 00:36:28,957 a three. 997 00:36:29,257 --> 00:36:32,647 you can also put actual words in here so for example I could put like 998 00:36:32,948 --> 00:36:34,177 academy in here, 999 00:36:34,448 --> 00:36:35,857 or I could even just put like 1000 00:36:35,917 --> 00:36:37,208 a c a d. 1001 00:36:37,508 --> 00:36:40,507 and this is going to tell me where this starts 1002 00:36:40,537 --> 00:36:42,787 inside of my string so when I click play, 1003 00:36:43,177 --> 00:36:43,957 it's going to give me an 1004 00:36:43,987 --> 00:36:44,287 a 1005 00:36:44,317 --> 00:36:44,887 because 1006 00:36:44,917 --> 00:36:45,698 that's where 1007 00:36:45,758 --> 00:36:47,138 a cat and he starts right 1008 00:36:47,438 --> 00:36:49,928 zero one two three four five six seven 1009 00:36:49,958 --> 00:36:50,319 eight 1010 00:36:51,129 --> 00:36:55,749 if I put something in here that wasn't in the strings of for example if I put a z in here, 1011 00:36:56,109 --> 00:36:57,039 that's not in here. 1012 00:36:57,129 --> 00:37:01,389 it's actually going to throw an error so when I play this you'll see that we get this error down here 1013 00:37:01,419 --> 00:37:01,839 because 1014 00:37:01,989 --> 00:37:04,809 the z is not found inside of our program so 1015 00:37:04,959 --> 00:37:08,709 that the next function again can be really useful we'll be using that a lot. 1016 00:37:08,769 --> 00:37:11,049 there's also one more than I want to show you which 1017 00:37:11,079 --> 00:37:12,579 is called replace 1018 00:37:12,609 --> 00:37:15,010 so we can say phrase not replace 1019 00:37:15,310 --> 00:37:17,410 and in here I can actually give this 1020 00:37:17,440 --> 00:37:20,440 two parameters so I can give this replace function 1021 00:37:20,770 --> 00:37:22,510 two values that it can use. 1022 00:37:22,750 --> 00:37:24,100 and the first thing I want to you 1023 00:37:24,130 --> 00:37:27,221 to give it is what I want to replace so for example I could say 1024 00:37:27,251 --> 00:37:27,941 giraffe. 1025 00:37:28,421 --> 00:37:30,341 and then I'm going to put a comma in here, 1026 00:37:30,611 --> 00:37:33,101 and I want to put in here what I want to replace 1027 00:37:33,131 --> 00:37:35,260 draft with so I could just say like 1028 00:37:35,381 --> 00:37:36,041 elephant 1029 00:37:36,401 --> 00:37:39,641 and now instead of saying draff academy this is going to print out 1030 00:37:39,671 --> 00:37:40,901 elephant academy. 1031 00:37:41,321 --> 00:37:43,991 so you can see down here it just says elephant academy so 1032 00:37:44,201 --> 00:37:45,161 this replace 1033 00:37:45,191 --> 00:37:45,701 function 1034 00:37:45,731 --> 00:37:46,181 can be 1035 00:37:46,211 --> 00:37:47,831 really awesome because we can replace 1036 00:37:48,041 --> 00:37:48,641 certain 1037 00:37:48,911 --> 00:37:50,802 words or even certain letters 1038 00:37:50,832 --> 00:37:52,092 inside of our springs with 1039 00:37:52,182 --> 00:37:52,842 other ones. 1040 00:37:52,932 --> 00:37:58,002 so those are some basic ways that we can work with strings inside of python 1041 00:37:58,032 --> 00:37:58,302 and 1042 00:37:58,542 --> 00:38:01,842 there's a lot of these different functions that we can use with strings. 1043 00:38:02,052 --> 00:38:05,202 these are some of the most common the ones that I just showed you right now, 1044 00:38:05,472 --> 00:38:08,263 but if you just do a google search you can find all sorts of 1045 00:38:08,503 --> 00:38:11,353 python functions that you can try out in use and you know, 1046 00:38:11,563 --> 00:38:12,523 see what they do, 1047 00:38:12,913 --> 00:38:17,322 but you definitely want to get comfortable working with strings and python because you're going to be working with them 1048 00:38:17,352 --> 00:38:17,892 a lot. 1049 00:38:21,912 --> 00:38:25,902 in this tutorial I wanna talk to you about working with numbers in 1050 00:38:25,962 --> 00:38:26,652 python 1051 00:38:27,042 --> 00:38:28,362 and numbers are one most 1052 00:38:28,392 --> 00:38:30,882 common data types in python and 1053 00:38:31,212 --> 00:38:35,173 any python program you write is most likely going to be dealing with numbers at 1054 00:38:35,203 --> 00:38:36,073 some point 1055 00:38:36,103 --> 00:38:36,403 so 1056 00:38:36,703 --> 00:38:43,003 I want to talk to you guys about the basics of using numbers we can talk about the different types of numbers that we can represent in python. 1057 00:38:43,453 --> 00:38:44,924 and I also want to show you guys some 1058 00:38:44,954 --> 00:38:51,194 awesome functions that we can use with number so we can do a certain like mathematical operations mechanism 1059 00:38:51,224 --> 00:38:52,214 awesome things 1060 00:38:52,484 --> 00:38:54,014 with numbers I'm going to show you guys 1061 00:38:54,044 --> 00:38:56,385 all of that in this video it's gonna be awesome so 1062 00:38:57,014 --> 00:38:58,034 first thing we can do is 1063 00:38:58,334 --> 00:39:00,375 we can actually just like print out a number. 1064 00:39:00,615 --> 00:39:05,865 so if I want to write a number in python it's really easy I basically just write the number so I could say like print 1065 00:39:05,896 --> 00:39:06,466 too. 1066 00:39:06,796 --> 00:39:10,096 and this is just going to print the number two out onto the screen, 1067 00:39:10,666 --> 00:39:15,977 so I can use a whole number like this I could also use a decimal number so I can say like two point 1068 00:39:16,007 --> 00:39:17,237 oh nine eight seven 1069 00:39:17,657 --> 00:39:20,988 and pythons are gonna be just fine with that we'll be able to print that on 1070 00:39:21,018 --> 00:39:21,918 the screen as well. 1071 00:39:22,368 --> 00:39:23,658 I can also make numbers 1072 00:39:23,688 --> 00:39:25,428 negative so I could make this 1073 00:39:25,458 --> 00:39:25,908 two point 1074 00:39:25,938 --> 00:39:26,418 oh nine 1075 00:39:26,478 --> 00:39:27,168 eight seven 1076 00:39:27,198 --> 00:39:28,668 a negative number and 1077 00:39:28,968 --> 00:39:31,548 python to be able to handle that just fine too. 1078 00:39:32,358 --> 00:39:35,057 in python we can also use 1079 00:39:35,117 --> 00:39:39,048 basic arithmetic so I could do things like addition subtraction multiplication 1080 00:39:39,348 --> 00:39:40,008 fancy like 1081 00:39:40,038 --> 00:39:40,638 three 1082 00:39:40,668 --> 00:39:41,868 plus four 1083 00:39:41,958 --> 00:39:45,108 and now this is going to print this out or was he like three plus 1084 00:39:45,138 --> 00:39:46,428 four point five. 1085 00:39:46,999 --> 00:39:50,509 and this will be able to print out the answer so we get seven point five. 1086 00:39:50,779 --> 00:39:53,149 and we can do a dish in we can do subtraction. 1087 00:39:53,479 --> 00:39:54,530 we can do division 1088 00:39:54,560 --> 00:39:56,930 or we could do like multiplication as well so you can 1089 00:39:56,960 --> 00:39:59,690 pretty much do whatever you want inside of python, 1090 00:40:00,170 --> 00:40:05,031 and if you want to make more complex mathematical equations we can also use 1091 00:40:05,571 --> 00:40:08,121 things to specify order of operations 1092 00:40:08,151 --> 00:40:09,591 so I could use parentheses. 1093 00:40:10,071 --> 00:40:13,730 so for example if I said three times four plus five 1094 00:40:14,601 --> 00:40:23,031 what python is gonna do is it's gonna multiply three and four together so it's going to be twelve and then we'll add five to that so we should get seventeen. 1095 00:40:24,201 --> 00:40:26,301 but let's say that we wanted to change up the order 1096 00:40:26,331 --> 00:40:26,631 right 1097 00:40:26,661 --> 00:40:29,991 I could actually put a parentheses around four and five 1098 00:40:30,501 --> 00:40:31,401 and now 1099 00:40:31,461 --> 00:40:38,391 it's going to add them first social ad foreign fighters will get nine and will multiply that times three so we should end up with twenty seven, 1100 00:40:38,871 --> 00:40:45,141 so you can see we can use those parentheses to specify order of operations so I could make like a very complex 1101 00:40:45,711 --> 00:40:49,011 little equation here and just by using numbers and parentheses. 1102 00:40:49,161 --> 00:40:50,421 we can also 1103 00:40:50,481 --> 00:40:54,861 use one other operation which is called the modulates operator so I could say like 1104 00:40:54,891 --> 00:40:55,641 ted, 1105 00:40:55,941 --> 00:40:57,741 and use this percent sign 1106 00:40:58,011 --> 00:40:59,961 three and this is actually read 1107 00:40:59,991 --> 00:41:00,501 ten 1108 00:41:00,531 --> 00:41:01,221 mod 1109 00:41:01,251 --> 00:41:01,791 three 1110 00:41:02,181 --> 00:41:05,211 and basically what this is gonna do is it's going to take the first number 1111 00:41:05,421 --> 00:41:07,221 divided by the second number, 1112 00:41:07,312 --> 00:41:09,232 and it's going to spit out the remainder. 1113 00:41:09,472 --> 00:41:10,552 so it's basically going to say 1114 00:41:10,582 --> 00:41:10,912 ok 1115 00:41:10,942 --> 00:41:12,562 ten divided by three. 1116 00:41:12,772 --> 00:41:14,062 that's going to be three 1117 00:41:14,092 --> 00:41:15,562 with a remainder of one. 1118 00:41:15,832 --> 00:41:17,872 so this is going to give us the remainder. 1119 00:41:18,172 --> 00:41:18,682 and 1120 00:41:18,742 --> 00:41:20,932 you'll see down here we get one because 1121 00:41:20,962 --> 00:41:23,422 that's the remainder of ten divided by three 1122 00:41:23,692 --> 00:41:26,512 that modulates operator can come in handy quite a bit. 1123 00:41:26,662 --> 00:41:28,192 we can also store these 1124 00:41:28,852 --> 00:41:30,623 numbers inside of variables 1125 00:41:30,653 --> 00:41:32,393 so we can store them inside of these 1126 00:41:32,423 --> 00:41:33,653 variable containers, 1127 00:41:33,923 --> 00:41:34,523 so I could 1128 00:41:34,553 --> 00:41:35,573 come over here 1129 00:41:35,663 --> 00:41:37,523 and I could create a variable called like 1130 00:41:37,613 --> 00:41:39,143 my underscored gnome 1131 00:41:39,833 --> 00:41:41,663 and we'll just store a value 1132 00:41:41,693 --> 00:41:43,313 of let's say like five and here 1133 00:41:43,673 --> 00:41:47,364 is why have you come down here and I can just print out my underscore numb. 1134 00:41:47,694 --> 00:41:50,154 and we'll be able to print that number out to the screen 1135 00:41:50,184 --> 00:41:50,964 just fine. 1136 00:41:51,114 --> 00:41:54,054 so in addition to doing things like a basic arithmetic 1137 00:41:54,084 --> 00:41:55,584 we can also 1138 00:41:55,734 --> 00:42:00,923 do some other stuff so one thing I could do is I could actually convert this number into a string. 1139 00:42:01,283 --> 00:42:05,244 so if I wanted to convert this number into a string I can just say s t r 1140 00:42:05,664 --> 00:42:08,274 and I can put the number that I want to convert 1141 00:42:08,304 --> 00:42:10,134 inside of these parentheses. 1142 00:42:10,434 --> 00:42:14,125 and so what's going to happen now is this number is going to be converted 1143 00:42:14,425 --> 00:42:14,905 into 1144 00:42:14,935 --> 00:42:16,434 a strings when I click 1145 00:42:16,554 --> 00:42:17,694 the run button you'll see it's 1146 00:42:17,904 --> 00:42:22,434 just printing out five but now instead of being a number this is actually a string. 1147 00:42:22,764 --> 00:42:26,814 and this is going to come in handy when you want to print out numbers alongside 1148 00:42:26,844 --> 00:42:27,715 strings, 1149 00:42:28,045 --> 00:42:29,995 so I can come over here and I can say like 1150 00:42:30,475 --> 00:42:31,195 my 1151 00:42:32,245 --> 00:42:33,415 favorite number, 1152 00:42:33,895 --> 00:42:35,395 and we'll be able to print this 1153 00:42:35,425 --> 00:42:37,345 number along with this 1154 00:42:37,375 --> 00:42:39,085 string so I click play, 1155 00:42:39,295 --> 00:42:41,155 and it's as five my favorite number, 1156 00:42:41,485 --> 00:42:43,314 if I was to get rid of this 1157 00:42:43,344 --> 00:42:44,094 string 1158 00:42:44,155 --> 00:42:44,814 right here 1159 00:42:44,844 --> 00:42:47,515 and I wasn't converting the number into a string. 1160 00:42:47,815 --> 00:42:49,855 now pythons gonna have a problem with this. 1161 00:42:50,035 --> 00:42:52,585 it's not going to allow us to do that you can see we get an 1162 00:42:52,615 --> 00:42:53,305 error so 1163 00:42:53,545 --> 00:42:55,255 anytime you want to print out a number 1164 00:42:55,285 --> 00:42:59,245 next to a string you gotta make sure that you use that little string function. 1165 00:42:59,995 --> 00:43:00,445 so 1166 00:43:00,475 --> 00:43:03,505 there's a bunch of other stuff that we can do with numbers and 1167 00:43:03,625 --> 00:43:05,096 a lot of times in python 1168 00:43:05,126 --> 00:43:07,315 you're gonna want to be using specific 1169 00:43:07,345 --> 00:43:10,135 metabolic more advanced math operator so 1170 00:43:10,525 --> 00:43:12,145 there's a bunch of different math 1171 00:43:12,175 --> 00:43:14,605 functions that we can use on our numbers 1172 00:43:14,815 --> 00:43:19,435 and a function is basically just like a little collection of code that does something so 1173 00:43:19,705 --> 00:43:24,235 a function could perform an operation like a mathematical operation on our number, 1174 00:43:24,715 --> 00:43:27,385 we can also give us information about our number, 1175 00:43:27,625 --> 00:43:32,036 so I'm sure you guys some of the most common functions that you'll be using in python 1176 00:43:32,066 --> 00:43:33,176 related to numbers. 1177 00:43:33,746 --> 00:43:35,456 the first one is called 1178 00:43:35,906 --> 00:43:36,626 abs 1179 00:43:36,656 --> 00:43:40,255 and it stands for absolute value so we can get the absolute value 1180 00:43:40,555 --> 00:43:41,005 of 1181 00:43:41,035 --> 00:43:41,666 a number. 1182 00:43:42,476 --> 00:43:43,676 and so over here I'm going to 1183 00:43:43,706 --> 00:43:45,656 make this variable negative five 1184 00:43:46,135 --> 00:43:47,396 and basically I can just say 1185 00:43:47,426 --> 00:43:48,385 abs 1186 00:43:48,476 --> 00:43:49,106 and I can make an 1187 00:43:49,166 --> 00:43:51,146 open enclosing parentheses over here, 1188 00:43:51,536 --> 00:43:54,445 and this is going to give me the absolute value of 1189 00:43:54,475 --> 00:43:55,825 this number up here, 1190 00:43:56,215 --> 00:43:57,655 so when I click the play button, 1191 00:43:57,925 --> 00:44:03,445 you'll see it's just giving us five because five is the absolute value of negative five, 1192 00:44:03,625 --> 00:44:06,205 I can use a few other functions there is another one 1193 00:44:06,235 --> 00:44:07,105 which is called 1194 00:44:07,225 --> 00:44:09,745 pau at so it says p o w 1195 00:44:10,105 --> 00:44:12,956 and I'm actually not going to use this variable we just as a normal number 1196 00:44:13,436 --> 00:44:13,766 and 1197 00:44:13,796 --> 00:44:16,166 this function is going to allow us to pass it 1198 00:44:16,226 --> 00:44:19,346 to pieces of information so I can give this function 1199 00:44:19,376 --> 00:44:20,606 two pieces of information. 1200 00:44:20,967 --> 00:44:22,227 the first is going to be 1201 00:44:22,646 --> 00:44:23,636 like a number. 1202 00:44:23,816 --> 00:44:28,827 and the second is going to be the power that I want to take that number two so I could say like three 1203 00:44:29,187 --> 00:44:29,727 comma 1204 00:44:29,757 --> 00:44:30,327 two 1205 00:44:30,597 --> 00:44:32,517 and this is basically just going to be 1206 00:44:32,577 --> 00:44:33,297 three 1207 00:44:33,327 --> 00:44:34,917 raised to the power of two, 1208 00:44:35,217 --> 00:44:35,757 so 1209 00:44:35,817 --> 00:44:38,817 it's just going to be three squared so we should get nine down here, 1210 00:44:39,177 --> 00:44:40,167 you can see that we do, 1211 00:44:40,557 --> 00:44:41,787 so I could pass in like 1212 00:44:41,817 --> 00:44:42,177 you know 1213 00:44:42,208 --> 00:44:43,318 some crazy number like 1214 00:44:43,558 --> 00:44:45,088 we could pass in a four 1215 00:44:45,118 --> 00:44:47,488 and we can raise it to the power of six, 1216 00:44:47,788 --> 00:44:49,588 and so we should get like a pretty big number here 1217 00:44:50,008 --> 00:44:52,648 and you can see we get four thousand ninety six so 1218 00:44:53,098 --> 00:44:53,458 this 1219 00:44:53,489 --> 00:44:56,938 power function is really useful for taking numbers to specific 1220 00:44:56,969 --> 00:44:57,598 powers. 1221 00:44:57,988 --> 00:45:02,638 so in addition to using this power function we can also use another function which is called 1222 00:45:02,668 --> 00:45:03,628 max. 1223 00:45:03,898 --> 00:45:05,188 so I can say max. 1224 00:45:05,338 --> 00:45:08,248 and what this is gonna do is it's basically gonna return 1225 00:45:08,278 --> 00:45:11,128 the larger of the two numbers that we pass into it 1226 00:45:11,398 --> 00:45:12,748 so right now I'm giving this 1227 00:45:12,778 --> 00:45:14,338 a four and a six 1228 00:45:14,518 --> 00:45:16,828 and this should tell us which number is higher 1229 00:45:17,158 --> 00:45:20,458 so over here it's just pulling out six because that's the bigger number. 1230 00:45:20,728 --> 00:45:22,558 I cannot see is another function called 1231 00:45:22,588 --> 00:45:28,739 men and this is going to do the opposite so now instead of printing out the max number it's going to print out the smallest number. 1232 00:45:29,009 --> 00:45:31,739 and it's going to turn out for down here as you can see. 1233 00:45:32,039 --> 00:45:34,919 another cool function is called the round function 1234 00:45:34,949 --> 00:45:40,409 and this is going to allow us to round a number so it's just going to follow like standard rounding rules. 1235 00:45:40,709 --> 00:45:43,469 so if I said like three point to inside of here 1236 00:45:43,739 --> 00:45:44,999 now is going around it 1237 00:45:45,029 --> 00:45:47,099 down to just normal three 1238 00:45:47,129 --> 00:45:49,229 but if I said like three point seven. 1239 00:45:49,949 --> 00:45:54,150 it's going to round it up to four so that'll allow you to round a number. 1240 00:45:54,660 --> 00:45:58,500 so there's a few other functions that I want to show you guys but in order to 1241 00:45:58,530 --> 00:46:01,830 get access to them I'm actually going to have to do something called 1242 00:46:01,890 --> 00:46:02,640 importing 1243 00:46:03,180 --> 00:46:05,430 and in python we can actually 1244 00:46:05,460 --> 00:46:06,270 import 1245 00:46:06,360 --> 00:46:07,650 external code 1246 00:46:08,040 --> 00:46:10,890 into our files and so if I want to access these 1247 00:46:10,920 --> 00:46:11,610 specific 1248 00:46:11,640 --> 00:46:12,720 math functions. 1249 00:46:13,260 --> 00:46:15,601 I have to import something called python math 1250 00:46:15,631 --> 00:46:17,281 so I can just say from 1251 00:46:17,521 --> 00:46:18,990 up here math 1252 00:46:19,591 --> 00:46:20,431 import 1253 00:46:21,331 --> 00:46:24,450 and this star and basically what this is gonna do is it's going to 1254 00:46:24,690 --> 00:46:26,130 go out and it's going to grab 1255 00:46:26,190 --> 00:46:29,371 a bunch of different math functions that we can use so 1256 00:46:29,611 --> 00:46:33,961 I already showed you guys a few of the zipper math functions but there's actually a bunch more. 1257 00:46:34,322 --> 00:46:38,762 and in order to access them we're going to need to include this line of code inside of our file. 1258 00:46:39,062 --> 00:46:42,032 so once we have that now I can access a few other so 1259 00:46:42,062 --> 00:46:44,942 is another function which is called the floor method and it's just 1260 00:46:45,002 --> 00:46:46,082 f l o r 1261 00:46:46,472 --> 00:46:48,962 and what this will do is it'll basically just grab 1262 00:46:48,992 --> 00:46:49,532 the 1263 00:46:49,562 --> 00:46:53,252 lowest number so it's essentially just going to chop off this decimal point. 1264 00:46:53,762 --> 00:46:55,292 and you can see over here now 1265 00:46:55,322 --> 00:46:57,872 we get a three because we're using that floor function. 1266 00:46:58,232 --> 00:46:59,462 there's also another one called 1267 00:46:59,492 --> 00:47:00,302 seal. 1268 00:47:00,722 --> 00:47:04,382 and that's just going to do the exact opposite so that's just going around the number up 1269 00:47:04,412 --> 00:47:05,552 no matter what so 1270 00:47:05,612 --> 00:47:07,652 no matter what will always get for 1271 00:47:07,922 --> 00:47:10,022 which we have a three point whatever here 1272 00:47:10,322 --> 00:47:14,732 and there's another one which is called square root so it's just asking you our team 1273 00:47:15,062 --> 00:47:19,712 and essentially this is just going to return the square root of a number so I can say like 1274 00:47:19,742 --> 00:47:20,702 thirty six. 1275 00:47:20,972 --> 00:47:22,772 and now we should get six back. 1276 00:47:23,522 --> 00:47:24,242 so 1277 00:47:24,332 --> 00:47:26,552 those are also very interesting functions and 1278 00:47:26,912 --> 00:47:28,082 inside of this 1279 00:47:28,112 --> 00:47:34,202 math module so we would call this a module and you don't have to worry too much about what that is right now, 1280 00:47:34,532 --> 00:47:37,862 just know that when we put this line of code into our program 1281 00:47:37,892 --> 00:47:40,232 it gives us access to a lot more 1282 00:47:40,262 --> 00:47:41,012 math 1283 00:47:41,492 --> 00:47:42,332 function so though 1284 00:47:42,572 --> 00:47:45,842 it basically allows us to do a lot more things with math 1285 00:47:45,872 --> 00:47:46,982 inside of our program 1286 00:47:47,312 --> 00:47:49,653 and there's a bunch of different math functions 1287 00:47:49,863 --> 00:47:54,483 in python and if you why you can basically just go online and search for different math functions. 1288 00:47:54,783 --> 00:47:58,804 I showed you guys a few here and I would say the ones that we looked at here are 1289 00:47:59,074 --> 00:48:02,524 probably the most commonly used but there's a bunch more. 1290 00:48:02,764 --> 00:48:03,034 and 1291 00:48:03,124 --> 00:48:04,174 like I said you know there's 1292 00:48:04,204 --> 00:48:07,324 tons of documentation on all this stuff so you can just look up 1293 00:48:07,564 --> 00:48:09,004 your math functions in 1294 00:48:09,034 --> 00:48:12,814 python and there's going to be tons and tons like lists of these things 1295 00:48:13,114 --> 00:48:16,594 that you can use inside of your programs to perform different math 1296 00:48:16,624 --> 00:48:17,404 operations, 1297 00:48:17,524 --> 00:48:24,334 but for now that has been a little bit of by using numbers a little bit about doing it on certain math operations and using functions 1298 00:48:24,425 --> 00:48:25,625 with those numbers 1299 00:48:29,495 --> 00:48:31,715 in this tutorial I'm going to show you how to get 1300 00:48:31,745 --> 00:48:33,455 input from the user. 1301 00:48:33,725 --> 00:48:36,575 so we're basically going to allow a user to 1302 00:48:36,635 --> 00:48:39,305 input information into our program. 1303 00:48:39,605 --> 00:48:42,785 and I'm actually going to take the information that the user inputs. 1304 00:48:42,995 --> 00:48:43,895 I'm gonna store it 1305 00:48:43,925 --> 00:48:47,646 inside of a variable and then we're going to be able to do something with 1306 00:48:47,706 --> 00:48:48,786 that variable. 1307 00:48:49,266 --> 00:48:52,146 so I want to show you guys how we can actually go about getting 1308 00:48:52,206 --> 00:48:53,316 input from someone. 1309 00:48:53,586 --> 00:48:55,656 and down here in my python file. 1310 00:48:56,166 --> 00:48:59,826 all I have to do to get input from someone is I just have to type out 1311 00:48:59,886 --> 00:49:00,546 input 1312 00:49:01,026 --> 00:49:02,556 and then an open and closed 1313 00:49:02,586 --> 00:49:03,576 parentheses. 1314 00:49:03,936 --> 00:49:07,056 and what this is basically going to do is it's going to tell python like 1315 00:49:07,086 --> 00:49:08,315 hey we want to get 1316 00:49:08,406 --> 00:49:09,305 input from 1317 00:49:09,335 --> 00:49:10,745 a user in python will 1318 00:49:10,955 --> 00:49:12,485 allow the user to 1319 00:49:12,515 --> 00:49:14,255 type in some information 1320 00:49:14,795 --> 00:49:17,585 and inside of these parentheses we can actually type 1321 00:49:17,615 --> 00:49:18,485 a prompt 1322 00:49:18,935 --> 00:49:22,175 and so generally when we want the user to enter in some information 1323 00:49:22,205 --> 00:49:23,915 we want to tell them what we want them 1324 00:49:23,945 --> 00:49:24,605 to enter. 1325 00:49:24,965 --> 00:49:27,545 and that's what we can put inside of here so I'm just going to say. 1326 00:49:28,115 --> 00:49:29,225 enter your 1327 00:49:29,255 --> 00:49:29,915 name, 1328 00:49:30,875 --> 00:49:33,966 so we're actually going to create a little python app, 1329 00:49:34,296 --> 00:49:36,756 which is going to allow the user to enter in their name 1330 00:49:37,056 --> 00:49:40,806 and then will store the name inside of a variable and then we'll basically just 1331 00:49:40,836 --> 00:49:43,327 say hi to the user so we'll say like high 1332 00:49:43,597 --> 00:49:45,697 and then whatever the name they entered was 1333 00:49:46,447 --> 00:49:49,117 so what I want to do is I actually wanna store 1334 00:49:49,147 --> 00:49:52,057 whatever the user and put it into our program 1335 00:49:52,477 --> 00:49:54,007 inside of a variable. 1336 00:49:54,217 --> 00:49:58,927 so I can actually go over here and I can create a variable I could just call it name 1337 00:49:59,347 --> 00:50:01,147 and I could set this variable 1338 00:50:01,207 --> 00:50:02,317 equal to 1339 00:50:02,737 --> 00:50:03,307 input. 1340 00:50:03,727 --> 00:50:07,957 so what I'm doing now is I'm taking the value that the user inputs 1341 00:50:08,437 --> 00:50:08,827 and I'm 1342 00:50:09,037 --> 00:50:10,537 storing it inside of this 1343 00:50:10,567 --> 00:50:12,277 variable container called 1344 00:50:12,337 --> 00:50:12,967 name 1345 00:50:13,447 --> 00:50:14,407 and so now 1346 00:50:14,827 --> 00:50:17,467 I have access to whatever they entered it. 1347 00:50:17,797 --> 00:50:19,537 so what we can do is we can say 1348 00:50:19,567 --> 00:50:20,287 print 1349 00:50:21,007 --> 00:50:22,027 and inside of the 1350 00:50:22,057 --> 00:50:24,127 parentheses I can just print out 1351 00:50:24,577 --> 00:50:25,207 hello 1352 00:50:26,257 --> 00:50:28,028 and then I'm just going to add on to this 1353 00:50:28,177 --> 00:50:28,778 name 1354 00:50:29,588 --> 00:50:31,688 and actually want to put an exclamation point. 1355 00:50:32,318 --> 00:50:35,498 so essentially we're getting a name from the user. 1356 00:50:35,648 --> 00:50:37,868 restoring it inside of the named variable 1357 00:50:38,018 --> 00:50:38,888 and I'm printing it 1358 00:50:38,918 --> 00:50:40,508 out onto the screen. 1359 00:50:40,778 --> 00:50:42,458 so I'm gonna go ahead and play this ? 1360 00:50:42,848 --> 00:50:45,698 and when we run the program you'll notice down here 1361 00:50:45,728 --> 00:50:47,978 python is giving us this little problem 1362 00:50:48,008 --> 00:50:48,668 so it saying 1363 00:50:48,698 --> 00:50:49,448 enter your name. 1364 00:50:49,838 --> 00:50:50,198 now 1365 00:50:50,229 --> 00:50:54,099 in here I can actually type in of values so I could type in might. 1366 00:50:54,999 --> 00:50:56,528 and then I can just hit enter 1367 00:50:57,218 --> 00:51:01,448 and pythons going to go ahead and store this value inside of that variable 1368 00:51:01,779 --> 00:51:03,159 and then it's going to print out 1369 00:51:03,219 --> 00:51:03,879 hello 1370 00:51:03,909 --> 00:51:04,449 mike. 1371 00:51:04,539 --> 00:51:05,979 and so this is kind of cool and 1372 00:51:06,009 --> 00:51:07,989 actually what we could do is we could 1373 00:51:08,199 --> 00:51:11,919 prompt the user to enter in more than one piece of information. 1374 00:51:12,549 --> 00:51:13,839 so I can actually 1375 00:51:13,869 --> 00:51:15,429 copy this line of code. 1376 00:51:16,119 --> 00:51:16,599 and I'm an 1377 00:51:16,629 --> 00:51:17,889 pasted below here 1378 00:51:18,069 --> 00:51:21,310 and why don't we have the user enter in another variable. 1379 00:51:21,520 --> 00:51:23,679 so we could have them enter in for example their 1380 00:51:23,709 --> 00:51:24,339 age. 1381 00:51:24,699 --> 00:51:26,859 and over here we just want to say enter your 1382 00:51:26,949 --> 00:51:27,550 age. 1383 00:51:27,850 --> 00:51:28,540 so now 1384 00:51:28,570 --> 00:51:31,750 we're able to get two pieces of information from the user. 1385 00:51:32,020 --> 00:51:33,640 and I could say hello name. 1386 00:51:34,030 --> 00:51:35,020 and then I can say 1387 00:51:35,830 --> 00:51:36,820 you are 1388 00:51:37,240 --> 00:51:38,410 and I'll print out their 1389 00:51:38,440 --> 00:51:38,860 age 1390 00:51:38,890 --> 00:51:40,030 so I'm going to print 1391 00:51:40,390 --> 00:51:40,930 age. 1392 00:51:41,170 --> 00:51:45,521 so now I'm basically able to get both of these pieces of information 1393 00:51:45,551 --> 00:51:47,831 from the user I can get their name 1394 00:51:48,161 --> 00:51:50,981 and I can get their age so when we run this program. 1395 00:51:52,421 --> 00:51:55,901 I can type in both of those pieces of information so as they enter your name. 1396 00:51:56,231 --> 00:51:56,801 so 1397 00:51:56,831 --> 00:51:57,371 we could just 1398 00:51:57,431 --> 00:51:58,961 make up a name like john 1399 00:51:59,261 --> 00:52:02,292 and then enter the age that say john is twenty five 1400 00:52:02,802 --> 00:52:05,532 and now is going to say hello john you are twenty five. 1401 00:52:05,922 --> 00:52:09,102 so the program is able to get input from the user and then it's 1402 00:52:09,132 --> 00:52:11,292 able to use that information 1403 00:52:11,502 --> 00:52:13,572 in order to say hi to the user and 1404 00:52:13,602 --> 00:52:15,102 tell them how old they are, 1405 00:52:15,432 --> 00:52:15,882 so 1406 00:52:15,942 --> 00:52:20,922 getting input from the user is a great way to make your programs more interactive and 1407 00:52:21,222 --> 00:52:27,012 here we're just scratching the surface right word just basically getting to know a piece of information from the user but 1408 00:52:27,312 --> 00:52:29,143 you can use these inputs to do 1409 00:52:29,203 --> 00:52:32,263 awesome things in python and as we go through this course. 1410 00:52:32,503 --> 00:52:33,193 you're going to see some 1411 00:52:33,223 --> 00:52:34,903 really cool things that we can do 1412 00:52:34,963 --> 00:52:36,283 with these inputs 1413 00:52:40,124 --> 00:52:41,984 in this tutorial I'm going to show you how to build 1414 00:52:42,014 --> 00:52:45,254 a very basic calculator in python. 1415 00:52:45,584 --> 00:52:49,454 we're basically going to build a calculator where we'll get to numbers from a user, 1416 00:52:49,664 --> 00:52:50,174 and then we'll 1417 00:52:50,204 --> 00:52:53,714 add those numbers together and print the answer out onto the screen. 1418 00:52:54,044 --> 00:52:58,664 so this will give us some practice in getting input from users and we'll also talk about getting 1419 00:52:58,694 --> 00:53:01,034 numbers from users as opposed to just 1420 00:53:01,094 --> 00:53:01,904 strings. 1421 00:53:02,204 --> 00:53:03,434 so I'm really excited to 1422 00:53:03,674 --> 00:53:04,964 get started on this calculator. 1423 00:53:05,474 --> 00:53:07,005 the first thing we want to do is 1424 00:53:07,035 --> 00:53:07,665 create 1425 00:53:07,695 --> 00:53:09,045 two variables and 1426 00:53:09,105 --> 00:53:11,685 inside of those variables we want to store 1427 00:53:11,745 --> 00:53:14,745 the two numbers that the user wants to add together 1428 00:53:15,195 --> 00:53:16,005 so down here, 1429 00:53:16,095 --> 00:53:17,086 I'm just going to say, 1430 00:53:18,046 --> 00:53:18,855 number one, 1431 00:53:19,125 --> 00:53:20,776 and that's what we'll call our first variable 1432 00:53:21,076 --> 00:53:21,316 is 1433 00:53:21,346 --> 00:53:22,216 equal to. 1434 00:53:22,456 --> 00:53:25,396 and now I need to get input from the user so I'm going to say. 1435 00:53:25,456 --> 00:53:26,146 input 1436 00:53:26,566 --> 00:53:28,006 and inside these parentheses 1437 00:53:28,036 --> 00:53:28,846 I'm going to say. 1438 00:53:28,996 --> 00:53:30,826 enter a number, 1439 00:53:33,496 --> 00:53:36,046 and now I basically want to do the same exact 1440 00:53:36,076 --> 00:53:36,736 thing 1441 00:53:36,766 --> 00:53:37,696 but for 1442 00:53:37,726 --> 00:53:38,506 the second number, 1443 00:53:38,956 --> 00:53:40,606 so we'll piece this guy down here, 1444 00:53:41,296 --> 00:53:43,456 and I'm just going to say gnome 1445 00:53:43,486 --> 00:53:44,086 two 1446 00:53:44,686 --> 00:53:45,796 and then we'll just say 1447 00:53:45,976 --> 00:53:47,356 enter another number. 1448 00:53:47,927 --> 00:53:50,207 so now we're able to store the user's input 1449 00:53:50,447 --> 00:53:51,377 inside of these 1450 00:53:51,407 --> 00:53:51,887 two 1451 00:53:51,917 --> 00:53:52,637 variables. 1452 00:53:52,817 --> 00:53:56,507 so now all I want to do is just print out the results so 1453 00:53:56,867 --> 00:54:01,308 I'm actually going to create a variable called result somebody's going to say a result 1454 00:54:01,548 --> 00:54:02,538 is equal to 1455 00:54:02,568 --> 00:54:06,168 and basically we just want to add these two numbers together something as a number one 1456 00:54:06,468 --> 00:54:06,948 plus 1457 00:54:06,978 --> 00:54:07,518 numb 1458 00:54:07,548 --> 00:54:07,998 too. 1459 00:54:08,988 --> 00:54:12,318 and now all we have to do is print out the results I'm just going to print 1460 00:54:12,918 --> 00:54:13,519 result 1461 00:54:14,329 --> 00:54:14,899 so 1462 00:54:14,929 --> 00:54:18,259 we basically have our entire program written out here 1463 00:54:18,469 --> 00:54:22,878 and this will allow us to enter in two numbers and then we'll add them together and print out the answer 1464 00:54:24,948 --> 00:54:25,998 so I could play. 1465 00:54:26,418 --> 00:54:29,268 and down here we can enter our number, 1466 00:54:29,328 --> 00:54:31,368 so I'm gonna enter the first number we'll say five, 1467 00:54:32,088 --> 00:54:35,118 and I'm going to enter my second number so let's say 1468 00:54:35,148 --> 00:54:36,828 eight point zero 1469 00:54:37,338 --> 00:54:38,508 or else a point 1470 00:54:38,718 --> 00:54:39,258 three 1471 00:54:40,278 --> 00:54:41,958 it's now should print out the answer, 1472 00:54:42,228 --> 00:54:42,888 but 1473 00:54:43,038 --> 00:54:44,628 if you look over here. 1474 00:54:45,288 --> 00:54:49,188 that's not quite the answer we were looking for at five plus 1475 00:54:49,218 --> 00:54:49,698 eight point 1476 00:54:49,728 --> 00:54:52,968 three is definitely not fifty eight points three 1477 00:54:53,328 --> 00:54:54,558 and here's what happened 1478 00:54:55,218 --> 00:54:57,648 when we get input from a user 1479 00:54:57,708 --> 00:54:59,178 by default. 1480 00:54:59,808 --> 00:55:01,518 python is just going to convert 1481 00:55:01,548 --> 00:55:02,508 it into a string, 1482 00:55:02,718 --> 00:55:04,458 so it doesn't matter what we put 1483 00:55:04,488 --> 00:55:06,408 down their when we're entering the numbers 1484 00:55:06,738 --> 00:55:08,328 python's always is going to be like. 1485 00:55:08,388 --> 00:55:08,808 ok 1486 00:55:08,838 --> 00:55:09,829 this is a string 1487 00:55:09,859 --> 00:55:10,579 that's it 1488 00:55:10,969 --> 00:55:12,019 sounds good right ? 1489 00:55:12,198 --> 00:55:13,879 it's just going to make it a string 1490 00:55:14,179 --> 00:55:16,578 in order for us to make these number one and number 1491 00:55:16,608 --> 00:55:18,018 two variables numbers, 1492 00:55:18,168 --> 00:55:22,368 we're actually going to have to convert the strings that we get from the user 1493 00:55:22,758 --> 00:55:24,018 into numbers, 1494 00:55:24,108 --> 00:55:24,618 and so 1495 00:55:24,858 --> 00:55:26,988 the way that we can do that is by 1496 00:55:27,018 --> 00:55:28,548 basically just coming over here 1497 00:55:28,818 --> 00:55:30,918 and when we add the two numbers together 1498 00:55:30,948 --> 00:55:33,618 I can use a special python function 1499 00:55:33,918 --> 00:55:35,418 in order to convert those 1500 00:55:35,448 --> 00:55:36,378 strings 1501 00:55:36,678 --> 00:55:37,698 into numbers. 1502 00:55:38,118 --> 00:55:39,888 and there's actually two 1503 00:55:39,918 --> 00:55:41,988 python functions that we could use for this. 1504 00:55:42,228 --> 00:55:43,219 the first is called 1505 00:55:43,249 --> 00:55:43,638 int 1506 00:55:43,668 --> 00:55:45,559 so I could say I auntie. 1507 00:55:45,889 --> 00:55:46,459 I can make an 1508 00:55:46,489 --> 00:55:49,489 open parentheses and I can make a close parentheses 1509 00:55:49,729 --> 00:55:53,988 and basically what this is gonna do is it's going to convert whatever is inside of these 1510 00:55:54,018 --> 00:55:55,398 open or close parentheses 1511 00:55:55,668 --> 00:55:56,148 into an 1512 00:55:56,178 --> 00:55:56,838 integer 1513 00:55:56,868 --> 00:55:57,469 number, 1514 00:55:57,918 --> 00:55:58,248 and an 1515 00:55:58,278 --> 00:56:04,219 integer number is basically a whole number so it's like one two three four or five so it's a, 1516 00:56:04,458 --> 00:56:07,489 it's a whole number another word that can't have a decimal point, 1517 00:56:08,749 --> 00:56:10,458 so what I could do is I could say 1518 00:56:10,908 --> 00:56:11,838 I n t, 1519 00:56:12,318 --> 00:56:13,308 and I could put these 1520 00:56:13,338 --> 00:56:14,148 inside of 1521 00:56:14,328 --> 00:56:15,168 parentheses. 1522 00:56:15,378 --> 00:56:19,788 and now what this is gonna do is it's going to convert both of these numbers into 1523 00:56:19,848 --> 00:56:21,048 integers in other words 1524 00:56:21,408 --> 00:56:22,248 into 1525 00:56:22,338 --> 00:56:24,528 whole numbers that don't have decimals, 1526 00:56:24,708 --> 00:56:28,698 and it's going to add them together and will print out the result so why don't we do that 1527 00:56:28,759 --> 00:56:30,528 we'll just see if this works I'm gonna 1528 00:56:30,648 --> 00:56:31,578 click the play button 1529 00:56:31,998 --> 00:56:35,688 and down here we'll enter our first number sums can enter into four 1530 00:56:36,078 --> 00:56:37,549 and then I'll answer in a five 1531 00:56:37,789 --> 00:56:41,358 and now you can see it's printing out the correct answer four plus 1532 00:56:41,388 --> 00:56:42,018 five 1533 00:56:42,198 --> 00:56:45,168 and so that's essentially our basic calculator. 1534 00:56:45,228 --> 00:56:46,488 but we do have one 1535 00:56:46,518 --> 00:56:50,719 problem with this calculator salmon run it again and I'll show you guys with that problem is 1536 00:56:50,749 --> 00:56:52,159 if I wanted to add in 1537 00:56:52,189 --> 00:56:57,169 a decimal number so we'll add four point three and five point five. 1538 00:56:58,099 --> 00:56:59,929 you'll see that we're getting this error. 1539 00:57:00,169 --> 00:57:02,869 and that's because I'm using this 1540 00:57:02,959 --> 00:57:03,320 ain't 1541 00:57:03,350 --> 00:57:05,030 function of here and this 1542 00:57:05,090 --> 00:57:08,029 int function is looking for a whole number. 1543 00:57:08,299 --> 00:57:08,659 so if 1544 00:57:08,689 --> 00:57:11,900 I put decimal numbers inside of there it's going to break the programs. 1545 00:57:12,710 --> 00:57:14,510 there's another function we can use 1546 00:57:14,570 --> 00:57:15,200 instead of an 1547 00:57:15,230 --> 00:57:16,969 n we can say float 1548 00:57:17,240 --> 00:57:18,020 and a float 1549 00:57:18,050 --> 00:57:21,709 is basically just a number that has decimal so it's a decimal number 1550 00:57:22,129 --> 00:57:25,339 so I can convert both of these guys into floats 1551 00:57:26,119 --> 00:57:29,449 and now I'll be able to use decimal number so I can click play. 1552 00:57:29,959 --> 00:57:33,079 and I can just enter into number so I could say like four 1553 00:57:33,559 --> 00:57:35,899 and I could also say like five point five. 1554 00:57:36,139 --> 00:57:38,089 and now it's going to be able to add 1555 00:57:38,119 --> 00:57:39,259 both of those numbers. 1556 00:57:39,619 --> 00:57:41,060 even if one of them is a decimal 1557 00:57:41,090 --> 00:57:44,299 and that's the beauty of using that little float function so 1558 00:57:44,599 --> 00:57:49,309 in certain circumstances you might want the user to only be able to enter into an integer 1559 00:57:49,579 --> 00:57:50,569 to a whole number. 1560 00:57:50,719 --> 00:57:52,999 but in a lot of cases like in this calculator. 1561 00:57:53,059 --> 00:57:56,870 we want them to be able to answer any number that they want so we're going to use this flow 1562 00:57:57,200 --> 00:57:57,710 function. 1563 00:57:58,190 --> 00:57:58,580 so 1564 00:57:58,610 --> 00:58:02,750 I'm just going to recap what we did one more time we created two variables number one and number two 1565 00:58:03,410 --> 00:58:08,240 and we basically stored the two numbers that the user's implanted into those variables, 1566 00:58:08,660 --> 00:58:11,210 then we converted them into numbers 1567 00:58:11,571 --> 00:58:12,141 and 1568 00:58:12,171 --> 00:58:12,651 weed 1569 00:58:12,681 --> 00:58:14,990 out of them together and we printed out the results so 1570 00:58:15,051 --> 00:58:17,301 this is a pretty cool calculator, i'm happy with it. 1571 00:58:17,601 --> 00:58:18,951 hopefully you guys learned something. 1572 00:58:19,161 --> 00:58:26,272 and as we go forward in this python course you're going to learn all sorts of ways that we can make this calculator more complex 1573 00:58:30,082 --> 00:58:32,452 in this tutorial I wanna show you guys how to build a 1574 00:58:32,482 --> 00:58:34,372 mad libs game in 1575 00:58:34,402 --> 00:58:35,062 python, 1576 00:58:35,482 --> 00:58:41,632 so a mad libs game is basically just a game where you can enter in a bunch of random words so like 1577 00:58:41,752 --> 00:58:42,112 you know 1578 00:58:42,142 --> 00:58:43,342 verbs nouns 1579 00:58:43,402 --> 00:58:44,302 names 1580 00:58:44,422 --> 00:58:45,112 colors 1581 00:58:45,532 --> 00:58:46,042 and 1582 00:58:46,132 --> 00:58:48,022 you basically take all of those words and 1583 00:58:48,052 --> 00:58:50,662 put them into a story randomly so 1584 00:58:51,412 --> 00:58:52,282 over here I had 1585 00:58:52,312 --> 00:58:53,692 my web browser I just have 1586 00:58:53,752 --> 00:58:55,912 an example of a mad libs so you know 1587 00:58:55,942 --> 00:59:00,353 down here were basically just taking random words like an adjective or a noun or a pronoun 1588 00:59:00,743 --> 00:59:02,153 and entering them in 1589 00:59:02,213 --> 00:59:06,083 sort of a story so like you read through the story than like some random word pops up in 1590 00:59:06,353 --> 00:59:08,423 mad libs can be pretty fun and I'm sure 1591 00:59:08,453 --> 00:59:08,723 yeah 1592 00:59:08,753 --> 00:59:10,283 he's heard of mad libs before, 1593 00:59:10,763 --> 00:59:12,743 but if not, now it is a little introduction. 1594 00:59:12,803 --> 00:59:14,783 so I want to create a mad libs in python 1595 00:59:14,813 --> 00:59:16,944 and this is going to be really cool so 1596 00:59:17,244 --> 00:59:18,504 down here I have this, like, 1597 00:59:18,534 --> 00:59:19,824 a little poem which says: 1598 00:59:20,094 --> 00:59:22,554 roses are red \ violets are blue \ I love you. 1599 00:59:22,974 --> 00:59:25,194 and so y'know, this is a compelling classic poem 1600 00:59:25,224 --> 00:59:25,704 but 1601 00:59:26,124 --> 00:59:30,954 I think we should mix it up a little bit and create a mad lib for this poem. 1602 00:59:31,404 --> 00:59:32,034 and so 1603 00:59:32,064 --> 00:59:34,884 instead of having this red colour over here, 1604 00:59:35,214 --> 00:59:37,104 I want to have the user answer in 1605 00:59:37,134 --> 00:59:38,034 their own color 1606 00:59:38,964 --> 00:59:40,614 instead of having violets, 1607 00:59:40,824 --> 00:59:42,354 why don't we have them answer in 1608 00:59:42,384 --> 00:59:43,854 a plural noun. 1609 00:59:44,574 --> 00:59:46,494 and instead of saying "I love you" 1610 00:59:46,524 --> 00:59:50,184 why don't we have them say "I love --" and then some celebrity 1611 00:59:50,214 --> 00:59:51,414 so celebrity. 1612 00:59:52,254 --> 00:59:52,764 so 1613 00:59:52,794 --> 00:59:58,944 this is the basic structure for our little madlib. right; it wants you basically have the user answering a color 1614 00:59:59,424 --> 01:00:00,925 enter in a plural noun. 1615 01:00:01,195 --> 01:00:02,785 an answer in a celebrity, 1616 01:00:03,055 --> 01:00:03,775 and I'll take 1617 01:00:03,805 --> 01:00:05,185 all of those words and 1618 01:00:05,334 --> 01:00:08,755 put them inside of our madlib and hopefully we end up with something that's pretty funny. 1619 01:00:09,385 --> 01:00:09,745 so 1620 01:00:09,775 --> 01:00:13,375 how can we actually go about building this in python well 1621 01:00:13,555 --> 01:00:19,226 the first thing we're going to have to do is we're going to have to be able to get these words from the user right that's pretty obvious. 1622 01:00:19,556 --> 01:00:20,276 so 1623 01:00:20,366 --> 01:00:23,456 I think what we should do as we should create three variables 1624 01:00:23,516 --> 01:00:24,386 called color 1625 01:00:24,417 --> 01:00:25,797 plural noun in celebrity 1626 01:00:26,097 --> 01:00:27,057 and will store 1627 01:00:27,087 --> 01:00:27,747 the user's 1628 01:00:27,777 --> 01:00:28,437 inputs. 1629 01:00:28,497 --> 01:00:30,116 inside of those 1630 01:00:30,177 --> 01:00:30,896 variables. 1631 01:00:31,257 --> 01:00:33,266 so up here let's create those variables 1632 01:00:33,296 --> 01:00:35,427 the first very well I'm going to create is going to be called 1633 01:00:35,457 --> 01:00:36,027 color 1634 01:00:36,057 --> 01:00:37,257 so it's a color. 1635 01:00:37,407 --> 01:00:38,187 and I want to set this 1636 01:00:38,217 --> 01:00:39,087 equal to 1637 01:00:39,117 --> 01:00:39,357 the 1638 01:00:39,448 --> 01:00:41,098 inputs are going to say input 1639 01:00:41,518 --> 01:00:44,968 and inside of here I was going to give them a prompts all say answer a 1640 01:00:44,998 --> 01:00:45,628 color. 1641 01:00:46,888 --> 01:00:49,408 and we can basically just copy this line of code. 1642 01:00:49,858 --> 01:00:50,338 and 1643 01:00:50,368 --> 01:00:52,319 I'm going to paste it down below 1644 01:00:52,619 --> 01:00:53,969 and we'll paste one more time. 1645 01:00:54,449 --> 01:00:56,729 so now we're going to create our plural noun 1646 01:00:56,759 --> 01:00:58,949 very also I'll say peoria 1647 01:00:59,069 --> 01:01:00,149 pluralism now 1648 01:01:00,899 --> 01:01:02,760 and want to say answer a 1649 01:01:03,810 --> 01:01:04,470 plural 1650 01:01:04,500 --> 01:01:05,010 now 1651 01:01:06,390 --> 01:01:07,859 and actually over here I want a meager 1652 01:01:07,919 --> 01:01:08,879 coal as well. 1653 01:01:09,509 --> 01:01:11,429 so then finally we'll create our 1654 01:01:11,609 --> 01:01:14,249 celebrity variables they enter a 1655 01:01:14,939 --> 01:01:16,439 celebrity and 1656 01:01:17,009 --> 01:01:19,859 so now basically we're creating three variables called 1657 01:01:19,889 --> 01:01:21,899 color plural noun in celebrity 1658 01:01:22,079 --> 01:01:25,979 and inside of them were storing the color that the user enters 1659 01:01:26,219 --> 01:01:29,609 the plural noun the user enters and the celebrity these adventures. 1660 01:01:29,909 --> 01:01:30,389 so 1661 01:01:30,449 --> 01:01:32,189 the last thing we have to do is 1662 01:01:32,219 --> 01:01:33,029 replace 1663 01:01:33,059 --> 01:01:34,799 these guys with those variables 1664 01:01:34,829 --> 01:01:35,369 so 1665 01:01:35,819 --> 01:01:39,540 I'm basically just going to add in the colour over here 1666 01:01:40,560 --> 01:01:42,930 and we're going to add in the plural noun 1667 01:01:42,960 --> 01:01:43,620 so 1668 01:01:43,650 --> 01:01:44,730 I can just go like 1669 01:01:44,820 --> 01:01:45,810 this. 1670 01:01:50,940 --> 01:01:53,820 and finally what is adding that celebrity. 1671 01:01:56,640 --> 01:01:57,060 so 1672 01:01:57,120 --> 01:01:58,440 now we have a prequel mallet 1673 01:01:58,470 --> 01:02:02,131 and it should be functional everything should work it looks like it's 1674 01:02:02,191 --> 01:02:03,781 good to go so 1675 01:02:04,291 --> 01:02:06,570 let's come over here and we'll run our program 1676 01:02:06,720 --> 01:02:08,610 and then down here in the council. 1677 01:02:09,510 --> 01:02:11,700 we can play are a little mad libs games so 1678 01:02:12,060 --> 01:02:14,160 they enter a color I'm just going to say. 1679 01:02:14,280 --> 01:02:15,030 magenta 1680 01:02:15,960 --> 01:02:18,780 enter a plural now when we say, 1681 01:02:19,560 --> 01:02:20,850 microwaves 1682 01:02:21,150 --> 01:02:24,900 and enter a celebrity you at say Tom Hanks. 1683 01:02:25,170 --> 01:02:25,650 so 1684 01:02:25,710 --> 01:02:29,280 when I click enter what should happen is we should get our mad libs 1685 01:02:29,310 --> 01:02:30,120 printed out some 1686 01:02:30,150 --> 01:02:30,810 good enter 1687 01:02:31,290 --> 01:02:34,560 and now we have our methods was as roses are magenta 1688 01:02:34,590 --> 01:02:36,000 microwaves are blue 1689 01:02:36,030 --> 01:02:37,590 I love Tom Hanks. 1690 01:02:37,920 --> 01:02:39,330 so it's a pretty good madlib 1691 01:02:39,600 --> 01:02:40,890 and obviously you know, 1692 01:02:40,950 --> 01:02:41,880 the more, 1693 01:02:41,970 --> 01:02:44,280 the more print statements we put over here you know 1694 01:02:44,310 --> 01:02:49,260 the better the madlib could be and we could store as many, y'know, variables up here as we wanted. 1695 01:02:49,861 --> 01:02:52,500 this was just a very simple madlib we only took in 1696 01:02:52,531 --> 01:02:58,561 three inputs but you know you could see how you could take something like this and create a little mad libs game so 1697 01:02:59,071 --> 01:03:05,071 your homework for this lesson is to go off and make your own madlib game hopefully one that's a little bit funnier than mine. 1698 01:03:05,551 --> 01:03:06,690 but that's the basics 1699 01:03:06,720 --> 01:03:08,760 of creating a mad libs game in 1700 01:03:08,790 --> 01:03:09,450 python 1701 01:03:13,470 --> 01:03:17,850 in this tutorial on its artsy guys about working with lists in python. 1702 01:03:18,300 --> 01:03:23,041 a lot of times when you're programming in python you're going to be dealing with large amounts of data, 1703 01:03:23,430 --> 01:03:23,850 and 1704 01:03:23,880 --> 01:03:26,851 when you're dealing with large amounts of data you want to make sure that you can 1705 01:03:26,881 --> 01:03:29,281 manage it and organize it properly, 1706 01:03:29,581 --> 01:03:34,111 and the list is essentially just a structure that we can use inside of python 1707 01:03:34,351 --> 01:03:37,501 to store the lists of information so we can take 1708 01:03:37,741 --> 01:03:40,561 a bunch of different data values we can put them inside a list 1709 01:03:40,591 --> 01:03:43,441 and it allows us to organize them and keep track of them 1710 01:03:43,471 --> 01:03:44,011 a lot 1711 01:03:44,071 --> 01:03:44,641 easier. 1712 01:03:45,001 --> 01:03:48,452 so generally you would create a python less than you would put a bunch of 1713 01:03:48,872 --> 01:03:50,102 related values 1714 01:03:50,132 --> 01:03:53,462 inside of that list and then you can use it throughout your program so 1715 01:03:53,732 --> 01:03:58,443 I'm actually eyes are just the basics of using lists we're going to look at some of the common use cases and 1716 01:03:58,713 --> 01:04:02,463 really just get you up to speed with what lists are and why they're useful so 1717 01:04:02,823 --> 01:04:03,903 over here in my program 1718 01:04:03,933 --> 01:04:04,623 I'm actually going to 1719 01:04:04,653 --> 01:04:06,213 create a list and 1720 01:04:06,423 --> 01:04:07,263 we create a list 1721 01:04:07,293 --> 01:04:09,783 a lot might we create a python 1722 01:04:09,813 --> 01:04:11,793 it's like a normal python variable so 1723 01:04:12,033 --> 01:04:13,984 the first thing we want to do and we're making a list 1724 01:04:14,014 --> 01:04:14,823 is give it 1725 01:04:14,854 --> 01:04:17,524 a name so we want to give it a descriptive name 1726 01:04:17,764 --> 01:04:21,484 something that's going to basically describe what's inside the list 1727 01:04:21,844 --> 01:04:22,894 in my case for 1728 01:04:22,924 --> 01:04:24,484 this example let's make a list 1729 01:04:24,514 --> 01:04:28,714 of like friends so we could say here's a list of all my friends so I can say 1730 01:04:29,104 --> 01:04:29,854 friends 1731 01:04:30,244 --> 01:04:31,234 and I'm going to set this 1732 01:04:31,264 --> 01:04:32,224 equal to 1733 01:04:32,314 --> 01:04:34,024 the list of values 1734 01:04:34,084 --> 01:04:35,314 that represent my friends 1735 01:04:35,584 --> 01:04:38,284 and we want to create a list we can use these 1736 01:04:38,344 --> 01:04:40,594 opening closed square brackets. 1737 01:04:40,895 --> 01:04:42,635 so whenever you use these open and closed 1738 01:04:42,665 --> 01:04:44,945 square brackets python basically nose 1739 01:04:44,975 --> 01:04:47,435 okay they want to store a bunch of values 1740 01:04:47,465 --> 01:04:48,755 inside of this list. 1741 01:04:49,205 --> 01:04:53,705 so why don't we go ahead and start adding some values so we can say like my friends are like 1742 01:04:55,115 --> 01:04:56,075 tavern, 1743 01:04:56,825 --> 01:04:57,785 karen 1744 01:04:58,865 --> 01:05:00,275 and say jim. 1745 01:05:00,665 --> 01:05:03,335 so here I have three values 1746 01:05:03,365 --> 01:05:05,675 inside of my friend's array. 1747 01:05:06,035 --> 01:05:11,615 so when we're creating a normal variable in python generally we just give it one value 1748 01:05:11,915 --> 01:05:12,125 right 1749 01:05:12,155 --> 01:05:13,205 now to create a variable 1750 01:05:13,235 --> 01:05:13,745 I would give it 1751 01:05:13,775 --> 01:05:16,925 one value may be a string or a number or a boolean. 1752 01:05:17,375 --> 01:05:18,875 but when we make lists 1753 01:05:18,905 --> 01:05:21,605 were able to store multiple values 1754 01:05:21,906 --> 01:05:23,526 inside of the same like 1755 01:05:23,556 --> 01:05:24,906 little item inside of the same 1756 01:05:24,936 --> 01:05:25,866 object right 1757 01:05:26,227 --> 01:05:29,737 and then what I can do is I can access these individual items 1758 01:05:29,797 --> 01:05:31,387 inside of my program so 1759 01:05:31,747 --> 01:05:33,457 inside of this friends 1760 01:05:33,517 --> 01:05:35,227 list were basically storing 1761 01:05:35,257 --> 01:05:38,707 all of these different values and that can be really useful so 1762 01:05:39,067 --> 01:05:42,067 now that we've stored some values let's talk about what you can put 1763 01:05:42,127 --> 01:05:45,157 inside of a list so you can really put any piece of 1764 01:05:45,367 --> 01:05:46,507 information in python 1765 01:05:46,537 --> 01:05:47,498 we could put things like 1766 01:05:47,798 --> 01:05:49,627 strings, numbers, or booleans 1767 01:05:49,688 --> 01:05:54,127 so if I wanted instead of just putting strings here I could change like one of these to a number 1768 01:05:54,367 --> 01:05:56,647 and I could change one of these to a boolean 1769 01:05:56,887 --> 01:05:57,698 and wouldn't matter 1770 01:05:57,728 --> 01:05:59,588 python's going to be fine with that. 1771 01:06:00,278 --> 01:06:02,198 let's change it back to strings just 1772 01:06:02,288 --> 01:06:03,968 for the sake of the example so 1773 01:06:04,298 --> 01:06:06,518 now that we've created our list 1774 01:06:06,548 --> 01:06:07,958 how can we access 1775 01:06:08,018 --> 01:06:09,278 individual elements 1776 01:06:09,308 --> 01:06:10,388 inside of this list 1777 01:06:10,418 --> 01:06:11,228 it's a good question. 1778 01:06:11,588 --> 01:06:13,899 I'm going to go ahead and print something out to the screen. 1779 01:06:13,959 --> 01:06:15,430 the first thing we can do is we can just 1780 01:06:15,460 --> 01:06:17,620 print out the actual list so 1781 01:06:17,830 --> 01:06:19,750 I can just say print friends 1782 01:06:19,930 --> 01:06:21,550 and then when I run this program. 1783 01:06:21,790 --> 01:06:24,070 if we look down here in the console you can see it's just 1784 01:06:24,100 --> 01:06:26,351 printing out the actual list of friends right, 1785 01:06:26,951 --> 01:06:28,481 but let's say that I wanted to print 1786 01:06:28,511 --> 01:06:29,711 out a specific 1787 01:06:29,741 --> 01:06:31,301 element inside of this list 1788 01:06:31,631 --> 01:06:34,961 where I can actually refer to elements by their 1789 01:06:34,991 --> 01:06:35,561 index 1790 01:06:35,591 --> 01:06:36,101 so 1791 01:06:36,311 --> 01:06:38,261 each one of the elements inside of this list 1792 01:06:38,292 --> 01:06:39,432 has a particular 1793 01:06:39,462 --> 01:06:40,122 index 1794 01:06:40,362 --> 01:06:44,051 and the index is actually started zero so we would say that this 1795 01:06:44,201 --> 01:06:46,151 first element in the list kevin 1796 01:06:46,301 --> 01:06:47,861 has an index of zero, 1797 01:06:48,161 --> 01:06:49,091 we would say that this 1798 01:06:49,121 --> 01:06:49,841 other element 1799 01:06:49,871 --> 01:06:51,761 karen has an index of one. 1800 01:06:52,091 --> 01:06:52,511 and this 1801 01:06:52,541 --> 01:06:55,301 third element jim would have an index of two. 1802 01:06:55,750 --> 01:06:56,531 so even though 1803 01:06:56,561 --> 01:06:59,200 jim is technically the third element 1804 01:06:59,230 --> 01:07:00,461 inside of the list. 1805 01:07:00,791 --> 01:07:02,651 it has an index of two 1806 01:07:02,891 --> 01:07:06,041 and that's because we start indexing at index position 1807 01:07:06,071 --> 01:07:06,521 one. 1808 01:07:07,031 --> 01:07:09,341 and so that is kind of how this work and that's how list 1809 01:07:09,371 --> 01:07:10,181 indexes work 1810 01:07:10,211 --> 01:07:10,751 so 1811 01:07:11,111 --> 01:07:12,221 if I wanted to 1812 01:07:12,251 --> 01:07:15,611 access a specific element inside of my friends list. 1813 01:07:15,851 --> 01:07:17,411 I can just referred to it by its 1814 01:07:17,471 --> 01:07:18,161 index. 1815 01:07:18,431 --> 01:07:21,281 so over here after which I bought friends I'm just going to tape an 1816 01:07:21,342 --> 01:07:23,172 open and closed square bracket, 1817 01:07:23,502 --> 01:07:24,132 and inside 1818 01:07:24,162 --> 01:07:25,602 this open and close square bracket 1819 01:07:25,632 --> 01:07:26,442 I want to put the 1820 01:07:26,472 --> 01:07:27,132 index 1821 01:07:27,162 --> 01:07:28,031 of the element 1822 01:07:28,092 --> 01:07:29,232 inside the list 1823 01:07:29,442 --> 01:07:30,672 that I want to access 1824 01:07:30,912 --> 01:07:32,292 so fallen to access 1825 01:07:32,531 --> 01:07:33,101 this guy right 1826 01:07:33,131 --> 01:07:34,061 here this element. 1827 01:07:34,331 --> 01:07:35,441 I can just put a zero. 1828 01:07:35,651 --> 01:07:36,611 so I can say friends 1829 01:07:36,641 --> 01:07:37,331 zero. 1830 01:07:37,601 --> 01:07:39,131 and now when I run my program, 1831 01:07:39,401 --> 01:07:42,042 it's just going to print out that value it's just going to pronounce 1832 01:07:42,072 --> 01:07:42,552 cabin, 1833 01:07:42,882 --> 01:07:44,292 if only to access this 1834 01:07:44,322 --> 01:07:46,452 gem value over here I can put a 1835 01:07:46,482 --> 01:07:46,992 two 1836 01:07:47,352 --> 01:07:48,852 and that will give us that 1837 01:07:48,942 --> 01:07:49,752 jim value 1838 01:07:49,782 --> 01:07:50,862 you can see right there, 1839 01:07:50,952 --> 01:07:52,632 so we can access elements 1840 01:07:52,662 --> 01:07:53,682 based off of 1841 01:07:53,712 --> 01:07:54,762 their index 1842 01:07:54,792 --> 01:07:55,542 we can also 1843 01:07:55,572 --> 01:07:56,592 access elements 1844 01:07:57,402 --> 01:07:58,482 based off of their index 1845 01:07:58,512 --> 01:08:00,013 from the back of the list 1846 01:08:00,043 --> 01:08:00,493 so 1847 01:08:00,643 --> 01:08:01,783 for example if I said 1848 01:08:01,813 --> 01:08:03,613 negative one inside of here, 1849 01:08:03,913 --> 01:08:05,863 this is going to give me access to this 1850 01:08:05,893 --> 01:08:07,573 value right here for jim. 1851 01:08:07,663 --> 01:08:13,904 and you can see that's what it does so when we use negatives it starts indexing from the back of the list so if I start at negative two, 1852 01:08:14,144 --> 01:08:15,404 this is going to give us 1853 01:08:15,434 --> 01:08:16,124 karen 1854 01:08:16,334 --> 01:08:18,284 so you can use the negatives to access 1855 01:08:18,313 --> 01:08:19,543 items at the back of the list. 1856 01:08:19,994 --> 01:08:22,483 just keep in mind though and this is kind of an 1857 01:08:22,573 --> 01:08:23,203 interesting 1858 01:08:24,283 --> 01:08:28,544 we said we would say this first element here is index position zero 1859 01:08:29,144 --> 01:08:29,534 right 1860 01:08:29,564 --> 01:08:32,294 but we would say the first element at the back of the list 1861 01:08:32,324 --> 01:08:33,434 is index position 1862 01:08:33,463 --> 01:08:34,604 negative one so 1863 01:08:34,633 --> 01:08:35,563 just keep that in mind. 1864 01:08:35,713 --> 01:08:38,594 so there's actually other ways that we can access like just 1865 01:08:38,624 --> 01:08:40,664 portions of this list so for example, 1866 01:08:40,904 --> 01:08:46,124 let's say I just wanted to select the last two elements in this list and I didn't want us like the first one 1867 01:08:46,574 --> 01:08:48,555 will in here I can just say one 1868 01:08:48,584 --> 01:08:49,604 with a colon, 1869 01:08:49,754 --> 01:08:52,965 and this will grab the element at index position one and 1870 01:08:52,995 --> 01:08:53,984 all of the elements 1871 01:08:54,014 --> 01:08:55,935 after that so now we should describe 1872 01:08:55,964 --> 01:08:56,924 jim and karen 1873 01:08:58,004 --> 01:08:59,565 or carrying gym in that order. 1874 01:09:00,045 --> 01:09:01,905 I could also specify a range. 1875 01:09:02,175 --> 01:09:04,845 so actually let me out in a couple other elements, 1876 01:09:04,965 --> 01:09:06,766 just so that we can illustrate this better. 1877 01:09:07,545 --> 01:09:08,956 so are in two more names. 1878 01:09:09,166 --> 01:09:11,446 so if I wanted to I could select like 1879 01:09:11,476 --> 01:09:13,396 the element and exposition one 1880 01:09:13,425 --> 01:09:16,486 up to the element at index position three so 1881 01:09:16,666 --> 01:09:17,477 it's going to grab 1882 01:09:17,506 --> 01:09:19,066 this one says one, 1883 01:09:19,396 --> 01:09:20,086 two 1884 01:09:20,356 --> 01:09:24,407 and it's actually not going to grab the third one so it's it's going to grab all the elements 1885 01:09:24,437 --> 01:09:27,047 up to but not including three so it'll grab 1886 01:09:27,077 --> 01:09:28,007 karen and 1887 01:09:28,037 --> 01:09:28,606 jim, 1888 01:09:29,687 --> 01:09:32,686 let's go ahead and run this and you can see it grabs canon japan so 1889 01:09:33,106 --> 01:09:34,307 you can either just put like 1890 01:09:34,427 --> 01:09:37,127 one with a colon after it and it'll grab that 1891 01:09:37,367 --> 01:09:40,248 in exposition in everything after it or even specify like 1892 01:09:40,277 --> 01:09:41,897 arrange that you want to grab from. 1893 01:09:42,018 --> 01:09:43,548 so that's how we can access 1894 01:09:43,578 --> 01:09:45,438 elements inside of this list 1895 01:09:45,468 --> 01:09:47,718 but we can also a modify elements 1896 01:09:47,748 --> 01:09:48,498 so for example 1897 01:09:48,527 --> 01:09:49,547 I could come down here. 1898 01:09:49,877 --> 01:09:53,298 let's say I want to modify this value right here karen 1899 01:09:53,658 --> 01:09:56,988 we'll all you have to do is just access that elements I could say 1900 01:09:57,408 --> 01:09:58,158 friends 1901 01:09:58,188 --> 01:09:58,547 and 1902 01:09:58,577 --> 01:10:00,557 karen is that at position of one 1903 01:10:01,007 --> 01:10:03,887 and I could change this to whatever I want so I could say friends 1904 01:10:03,917 --> 01:10:05,597 in that position one is equal to 1905 01:10:05,626 --> 01:10:06,227 mike ? 1906 01:10:06,646 --> 01:10:07,217 and now 1907 01:10:07,247 --> 01:10:08,597 when we print out friends 1908 01:10:08,626 --> 01:10:09,827 and at position one 1909 01:10:10,187 --> 01:10:13,067 that value is going to be updated so it's just going to say 1910 01:10:13,097 --> 01:10:14,417 mike instead of saying 1911 01:10:14,446 --> 01:10:14,926 karen 1912 01:10:15,286 --> 01:10:18,976 so it can be really useful to modify values inside of 1913 01:10:19,006 --> 01:10:19,486 arrays 1914 01:10:19,516 --> 01:10:23,355 so it can be really useful to modify values inside of python lists. 1915 01:10:23,415 --> 01:10:25,905 so those are kind of the basics of working with lists 1916 01:10:25,935 --> 01:10:28,935 in python and actually in the next tutorial monastery guys 1917 01:10:28,995 --> 01:10:30,194 even more ways 1918 01:10:30,645 --> 01:10:32,655 that we can use these less we're going to learn how to link 1919 01:10:32,685 --> 01:10:35,295 add elements to a less delete elements from a less 1920 01:10:35,745 --> 01:10:37,846 copy lists and a bunch of cool stuff 1921 01:10:38,386 --> 01:10:38,776 with 1922 01:10:38,836 --> 01:10:41,266 these lists but for now this has just been sort of like 1923 01:10:41,506 --> 01:10:43,787 the basics of working with lists 1924 01:10:47,537 --> 01:10:50,326 in this tutorial I wanna talk to you guys about using 1925 01:10:50,355 --> 01:10:52,155 functions with lists 1926 01:10:52,185 --> 01:10:53,025 in python, 1927 01:10:53,505 --> 01:10:54,135 and python 1928 01:10:54,165 --> 01:10:58,816 a list is one of the most important structures where we can store our information. 1929 01:10:59,206 --> 01:11:03,646 a list basically allows you to take a bunch of different values and organize them and store them 1930 01:11:03,946 --> 01:11:05,687 inside of their own little list 1931 01:11:05,716 --> 01:11:06,526 structure 1932 01:11:06,917 --> 01:11:09,437 so down here my program you can see I have 1933 01:11:09,466 --> 01:11:11,896 two less I have a list of lucky numbers. 1934 01:11:12,106 --> 01:11:13,816 and this is just a bunch of different numbers, 1935 01:11:14,116 --> 01:11:15,706 and then I have a list of friends 1936 01:11:15,735 --> 01:11:17,925 so this could be like a list of somebody's friends 1937 01:11:18,255 --> 01:11:21,135 and it's basically just a bunch of strings with names in them. 1938 01:11:21,405 --> 01:11:22,785 so these two lists 1939 01:11:22,814 --> 01:11:25,515 are storing a bunch of different values and 1940 01:11:25,725 --> 01:11:26,985 what makes this awesome is 1941 01:11:27,015 --> 01:11:29,354 not only can I store like this many values I mean 1942 01:11:29,384 --> 01:11:30,043 I could store 1943 01:11:30,073 --> 01:11:32,923 hundreds or thousands or millions of values. 1944 01:11:33,073 --> 01:11:37,573 and when you're working with a lot of data and a lot of information and python bees lists are 1945 01:11:37,603 --> 01:11:38,593 invaluable. 1946 01:11:38,893 --> 01:11:44,744 so because lists are so important there's actually a bunch of different functions that we can use with lists 1947 01:11:45,014 --> 01:11:48,374 and those functions allow us to do things like modify the lists 1948 01:11:48,554 --> 01:11:51,224 and get information about the list so 1949 01:11:51,974 --> 01:11:52,574 in this tutorial 1950 01:11:52,604 --> 01:11:54,254 I just want to show you a bunch of those 1951 01:11:54,284 --> 01:11:58,064 functions we're going to talk about some of the most common and the most popular functions 1952 01:11:58,334 --> 01:11:59,924 that you would use on lists 1953 01:11:59,954 --> 01:12:03,165 to make them more powerful and make them more easy to use. 1954 01:12:03,524 --> 01:12:03,944 so 1955 01:12:03,974 --> 01:12:06,074 the first thing we can do is obviously just print 1956 01:12:06,104 --> 01:12:09,224 out a list so down here I'm printing out this 1957 01:12:09,254 --> 01:12:10,154 friends list 1958 01:12:10,484 --> 01:12:10,934 when a warm 1959 01:12:10,964 --> 01:12:12,344 and when I run my program, 1960 01:12:13,094 --> 01:12:14,294 you see down here we're just 1961 01:12:14,324 --> 01:12:16,334 printing out all the elements in the list so 1962 01:12:16,575 --> 01:12:17,955 it's always good to be able to print 1963 01:12:17,984 --> 01:12:18,314 out 1964 01:12:18,344 --> 01:12:19,994 all the elements inside of a list, 1965 01:12:20,054 --> 01:12:22,514 but there's a lot of other functions that we can use so 1966 01:12:22,664 --> 01:12:28,695 one function is called the extend function in the extend function will basically allow you to take a list 1967 01:12:29,025 --> 01:12:29,445 and 1968 01:12:29,475 --> 01:12:32,774 append another list onto the end of it so I could say like 1969 01:12:33,524 --> 01:12:34,274 friends 1970 01:12:34,304 --> 01:12:34,874 dot 1971 01:12:34,964 --> 01:12:35,834 extend 1972 01:12:36,284 --> 01:12:37,904 and inside of these parentheses 1973 01:12:37,934 --> 01:12:39,555 I can pass in the list 1974 01:12:39,584 --> 01:12:41,685 that I wanted to add onto the friends list. 1975 01:12:41,955 --> 01:12:42,945 so I could say like 1976 01:12:43,035 --> 01:12:43,965 lucky 1977 01:12:44,115 --> 01:12:44,835 numbers. 1978 01:12:45,076 --> 01:12:47,236 and now when I print out this friends list. 1979 01:12:47,386 --> 01:12:50,056 not only is it going to have all the elements in the friends list 1980 01:12:50,085 --> 01:12:53,265 it's also going to have all the elements inside the lucky numbers list 1981 01:12:53,535 --> 01:12:55,815 you can see down here we have all our friends, 1982 01:12:56,055 --> 01:12:57,015 and we also have 1983 01:12:57,075 --> 01:13:00,586 the numbers overhears that's a really easy way to essentially just like 1984 01:13:00,916 --> 01:13:02,446 add two lists together. 1985 01:13:02,956 --> 01:13:04,246 we can also just add 1986 01:13:04,275 --> 01:13:06,495 individual elements onto a list 1987 01:13:06,525 --> 01:13:07,065 so 1988 01:13:07,305 --> 01:13:09,255 I come down here and I could say friends 1989 01:13:09,375 --> 01:13:10,005 dot 1990 01:13:10,275 --> 01:13:11,055 append 1991 01:13:11,475 --> 01:13:15,136 and this will actually allow me to append another item 1992 01:13:15,166 --> 01:13:16,665 onto the end of this list, 1993 01:13:16,965 --> 01:13:20,025 so over here I could just add another name so we could say 1994 01:13:20,206 --> 01:13:24,646 creed for example and now I'm like adding another friend onto the end of this list 1995 01:13:24,675 --> 01:13:25,995 so when I run the program. 1996 01:13:26,505 --> 01:13:27,915 in addition to having 1997 01:13:28,095 --> 01:13:30,854 the original items that were in the list up here. 1998 01:13:31,064 --> 01:13:33,465 we also have this additional item at the end 1999 01:13:33,675 --> 01:13:37,725 and not a pen function is always going to add the item onto the end of the list, 2000 01:13:38,265 --> 01:13:43,097 but let's say that you wanted to add an item into the middle of the list so like right here right here, 2001 01:13:43,396 --> 01:13:45,197 there's another list function 2002 01:13:45,227 --> 01:13:46,427 called insert 2003 01:13:47,897 --> 01:13:49,157 and insert is going to take 2004 01:13:49,187 --> 01:13:52,157 two parameters the first parameter is going to be the 2005 01:13:52,397 --> 01:13:54,646 index where you want to insert the item so 2006 01:13:54,856 --> 01:13:57,797 why don't we insert it here at index position one. 2007 01:13:58,067 --> 01:13:59,267 I'm just going to say one 2008 01:13:59,687 --> 01:14:03,077 and then I'm going to type in the name of the element that I want to add so 2009 01:14:03,107 --> 01:14:04,038 we can just say like 2010 01:14:04,278 --> 01:14:04,758 kelly, 2011 01:14:05,418 --> 01:14:08,088 and now at index position one we're going to have 2012 01:14:08,118 --> 01:14:09,288 the volume kelly 2013 01:14:09,378 --> 01:14:12,229 and all of these other values are going to get pushed 2014 01:14:12,258 --> 01:14:12,588 up 2015 01:14:12,618 --> 01:14:13,008 they're going to 2016 01:14:13,068 --> 01:14:14,418 get pushed to the right 2017 01:14:15,078 --> 01:14:16,938 one index position so 2018 01:14:16,998 --> 01:14:18,198 now I run the program, 2019 01:14:18,468 --> 01:14:19,968 you can see we have kavin 2020 01:14:20,028 --> 01:14:20,929 this new element 2021 01:14:20,958 --> 01:14:21,559 kelly 2022 01:14:21,799 --> 01:14:24,680 and then all the other elements have been pushed off to the right, 2023 01:14:24,770 --> 01:14:26,450 we can also remove elements 2024 01:14:26,479 --> 01:14:27,529 so for example 2025 01:14:27,559 --> 01:14:29,419 let's say I wanted to remove this 2026 01:14:29,449 --> 01:14:30,499 jim value. 2027 01:14:30,859 --> 01:14:33,589 all I have to do is just a friend's dot remove. 2028 01:14:34,040 --> 01:14:34,430 and 2029 01:14:34,459 --> 01:14:35,720 I can just typing 2030 01:14:35,750 --> 01:14:37,789 whatever element I want to remove so 2031 01:14:38,059 --> 01:14:38,869 I want to remove 2032 01:14:38,899 --> 01:14:40,159 this jim element 2033 01:14:40,429 --> 01:14:42,200 is a now when we run the program 2034 01:14:42,229 --> 01:14:42,680 jim 2035 01:14:42,709 --> 01:14:45,590 is going to be gone from the list and we just have these 2036 01:14:45,830 --> 01:14:47,240 four guys left. 2037 01:14:47,540 --> 01:14:48,500 you can also remove 2038 01:14:48,530 --> 01:14:49,520 all of the elements 2039 01:14:49,549 --> 01:14:51,559 from the list so if I just wanted to 2040 01:14:51,588 --> 01:14:52,578 completely like 2041 01:14:52,608 --> 01:14:54,078 reset the less than get rid of 2042 01:14:54,107 --> 01:14:56,507 everything I could just say friends thought clear. 2043 01:14:56,897 --> 01:14:57,798 and this is going to 2044 01:14:57,828 --> 01:15:00,288 give us an empty list so get rid of 2045 01:15:00,318 --> 01:15:02,448 every single element inside the list. 2046 01:15:02,538 --> 01:15:04,278 there's also another really cool 2047 01:15:04,308 --> 01:15:05,148 nothing which is called 2048 01:15:05,178 --> 01:15:05,748 pop 2049 01:15:05,808 --> 01:15:07,878 and you can just take out pop like that 2050 01:15:08,058 --> 01:15:10,128 and basically what pops is gonna do is it's going to 2051 01:15:10,158 --> 01:15:10,668 pop an 2052 01:15:10,698 --> 01:15:11,148 item 2053 01:15:11,178 --> 01:15:12,738 off of this list so 2054 01:15:13,008 --> 01:15:14,088 when I click the play button, 2055 01:15:14,328 --> 01:15:15,499 you'll see here that 2056 01:15:15,559 --> 01:15:16,729 we're left with 2057 01:15:16,849 --> 01:15:17,509 kevin 2058 01:15:17,569 --> 01:15:18,289 karen 2059 01:15:18,319 --> 01:15:19,909 jim and oscar so 2060 01:15:20,089 --> 01:15:24,498 we basically got rid of the last element inside the list and that's what pop does 2061 01:15:24,588 --> 01:15:25,848 it pops an element 2062 01:15:25,908 --> 01:15:29,718 off of the lists of easily removes the last element in the list. 2063 01:15:29,778 --> 01:15:30,828 so we have our list 2064 01:15:30,858 --> 01:15:32,868 but let's say that we wanted to figure out 2065 01:15:32,898 --> 01:15:33,228 if 2066 01:15:33,258 --> 01:15:35,448 a certain element was in this list 2067 01:15:35,568 --> 01:15:37,758 right if a certain value is in here so let's say 2068 01:15:37,878 --> 01:15:39,708 I wanted to check to see if 2069 01:15:39,769 --> 01:15:40,459 my friend 2070 01:15:40,489 --> 01:15:41,809 kevin was in this list. 2071 01:15:42,049 --> 01:15:43,489 why could say friends 2072 01:15:43,519 --> 01:15:44,239 dot 2073 01:15:44,359 --> 01:15:45,169 index 2074 01:15:45,379 --> 01:15:46,159 and in here 2075 01:15:46,189 --> 01:15:47,389 I can just pass 2076 01:15:47,629 --> 01:15:49,580 a value so I can say like 2077 01:15:50,120 --> 01:15:50,810 kevin. 2078 01:15:51,530 --> 01:15:53,391 and this is going to tell me the index 2079 01:15:53,690 --> 01:15:54,230 of 2080 01:15:54,291 --> 01:15:55,551 caverns are the tell me if 2081 01:15:55,581 --> 01:15:56,631 cabins in the list, 2082 01:15:56,872 --> 01:15:58,102 so I could play 2083 01:15:58,342 --> 01:15:59,632 you can see down here it says 2084 01:15:59,662 --> 01:16:00,322 zero 2085 01:16:00,532 --> 01:16:01,552 if I was to say like 2086 01:16:01,582 --> 01:16:03,142 oscar and here for example 2087 01:16:03,412 --> 01:16:04,731 now would give me the index 2088 01:16:04,761 --> 01:16:05,091 of 2089 01:16:05,151 --> 01:16:05,781 oscar. 2090 01:16:06,111 --> 01:16:07,372 so that's it three 2091 01:16:07,762 --> 01:16:10,643 but if I put a name that wasn't in here so like 2092 01:16:10,823 --> 01:16:11,843 if I put mike 2093 01:16:12,053 --> 01:16:13,223 doth not in the list. 2094 01:16:13,433 --> 01:16:14,843 and so now we're going to get back 2095 01:16:15,023 --> 01:16:15,653 an error 2096 01:16:15,683 --> 01:16:16,523 because it's as 2097 01:16:16,583 --> 01:16:18,293 mike is not in the list 2098 01:16:18,503 --> 01:16:22,463 so that's an easy ways you figure out if a specific element inside of the list. 2099 01:16:22,613 --> 01:16:23,513 and if it is, 2100 01:16:23,573 --> 01:16:25,522 then you know what index its app, 2101 01:16:25,583 --> 01:16:29,453 you can also count the number of similar elements in the list so 2102 01:16:29,723 --> 01:16:31,853 I'm actually going to come down here copy this 2103 01:16:31,883 --> 01:16:32,843 gem element 2104 01:16:33,113 --> 01:16:34,223 and will add another 2105 01:16:34,252 --> 01:16:35,573 jim element into here 2106 01:16:36,083 --> 01:16:38,453 so I could come down here and I could say friends 2107 01:16:38,482 --> 01:16:38,962 dot 2108 01:16:38,992 --> 01:16:39,532 count 2109 01:16:40,552 --> 01:16:41,062 and 2110 01:16:41,092 --> 01:16:42,022 will pass in 2111 01:16:42,052 --> 01:16:42,622 jim 2112 01:16:43,012 --> 01:16:45,231 and this will tell me how many times the value 2113 01:16:45,261 --> 01:16:45,831 jim 2114 01:16:45,920 --> 01:16:46,610 shows up 2115 01:16:46,640 --> 01:16:47,690 inside of this 2116 01:16:47,720 --> 01:16:48,350 list. 2117 01:16:48,680 --> 01:16:51,591 so it should say to which it does down there because 2118 01:16:51,801 --> 01:16:52,581 we have two 2119 01:16:52,610 --> 01:16:53,541 values with 2120 01:16:53,570 --> 01:16:54,170 the 2121 01:16:54,500 --> 01:16:55,010 text 2122 01:16:55,040 --> 01:16:55,610 jim 2123 01:16:55,820 --> 01:16:59,691 and so we have all these values we could also sort this list so 2124 01:16:59,751 --> 01:17:01,221 I could come over here and I could say 2125 01:17:01,551 --> 01:17:03,111 friends.sort() 2126 01:17:03,621 --> 01:17:06,081 and what this will do is it'll sort the list 2127 01:17:06,111 --> 01:17:06,621 in 2128 01:17:06,861 --> 01:17:08,181 ascending order so 2129 01:17:08,391 --> 01:17:09,441 we have a bunch of 2130 01:17:09,501 --> 01:17:11,121 text here and you'll see what it does. 2131 01:17:11,391 --> 01:17:14,841 basically what it's going to do is it's gonna put it in alphabetical order are so 2132 01:17:15,081 --> 01:17:16,822 you see we have j k 2133 01:17:16,882 --> 01:17:18,112 o and t so 2134 01:17:18,382 --> 01:17:23,663 the list went from being just random order like whatever we have up here to now it's in alphabetical order. 2135 01:17:23,873 --> 01:17:27,502 and that's also going to work for lucky numbers so I could say late 2136 01:17:28,192 --> 01:17:29,602 lucky numbers 2137 01:17:29,632 --> 01:17:30,292 dot 2138 01:17:30,382 --> 01:17:32,902 sort and then we'll turn out lucky numbers 2139 01:17:33,742 --> 01:17:36,353 and they should now be in ascending order, 2140 01:17:37,223 --> 01:17:39,623 which I'm realizing they already are up here but if I 2141 01:17:39,653 --> 01:17:41,483 was to take this forty two and 2142 01:17:42,713 --> 01:17:43,913 put it down here. 2143 01:17:45,203 --> 01:17:48,593 now it will figure everything out and put it in ascending order anyway. 2144 01:17:48,653 --> 01:17:49,853 we can also reverse 2145 01:17:49,883 --> 01:17:50,393 a list 2146 01:17:50,423 --> 01:17:52,553 so if I wanted I could reverse this not 2147 01:17:52,583 --> 01:17:54,173 lucky numbers list I could say 2148 01:17:54,203 --> 01:17:55,402 lucky numbers dot 2149 01:17:55,522 --> 01:17:56,302 reverse. 2150 01:17:56,512 --> 01:18:00,713 and now when we printed out instead of being forty to eight fifteen sixteen twenty three. 2151 01:18:00,893 --> 01:18:03,353 it's going to be twenty three sixteen fifteen eight forty two, 2152 01:18:04,223 --> 01:18:06,624 so it's basically just reverse the order of 2153 01:18:06,713 --> 01:18:07,313 the list. 2154 01:18:07,403 --> 01:18:09,204 and finally there's one more 2155 01:18:09,384 --> 01:18:09,534 or 2156 01:18:09,563 --> 01:18:11,874 less functional monetary eyes which is copy. 2157 01:18:12,144 --> 01:18:12,744 so 2158 01:18:12,774 --> 01:18:14,124 I can actually create 2159 01:18:14,184 --> 01:18:15,444 another list. 2160 01:18:15,714 --> 01:18:16,254 and I could 2161 01:18:16,284 --> 01:18:18,774 make it as a copy so I could say like 2162 01:18:19,884 --> 01:18:21,144 friends 2. 2163 01:18:21,354 --> 01:18:22,763 and we could set this equal to 2164 01:18:22,823 --> 01:18:23,603 friends 2165 01:18:23,633 --> 01:18:24,053 dot 2166 01:18:24,083 --> 01:18:24,743 copy 2167 01:18:25,343 --> 01:18:26,333 and now friends 2168 01:18:26,363 --> 01:18:28,042 too is going to have all the same 2169 01:18:28,103 --> 01:18:30,143 attributes as friends, 2170 01:18:30,982 --> 01:18:32,482 because it's basically just like 2171 01:18:32,572 --> 01:18:35,662 copy it basically took a copy of that friends list 2172 01:18:35,692 --> 01:18:36,142 so 2173 01:18:36,382 --> 01:18:37,792 you can see it's the same exact thing and 2174 01:18:37,972 --> 01:18:41,722 copying lists can come in handy in a lot of different situation so 2175 01:18:41,992 --> 01:18:44,812 those are just some basic list functions and just to kind of like 2176 01:18:45,052 --> 01:18:47,482 you know get your feet wet in working with lists 2177 01:18:47,512 --> 01:18:52,612 obviously like the more you work with them the more you practice using these different functions the more comfortable you're going to 2178 01:18:52,642 --> 01:18:53,032 get. 2179 01:18:53,182 --> 01:18:56,243 but that's just kind of like a basic overview of what you can do 2180 01:19:00,683 --> 01:19:01,643 in a sartorial 2181 01:19:01,672 --> 01:19:04,013 talk to you guys bought tuples in 2182 01:19:04,042 --> 01:19:04,822 python. 2183 01:19:05,212 --> 01:19:07,163 now a tupel is a type 2184 01:19:07,192 --> 01:19:07,552 of 2185 01:19:07,582 --> 01:19:08,602 data structure 2186 01:19:08,872 --> 01:19:10,942 which basically means it's a container 2187 01:19:11,242 --> 01:19:12,202 where we can store 2188 01:19:12,232 --> 01:19:13,612 different values. 2189 01:19:14,002 --> 01:19:16,102 now if you're familiar with lists 2190 01:19:16,132 --> 01:19:17,032 in python 2191 01:19:17,062 --> 01:19:20,302 a tupel is actually very similar to a list. 2192 01:19:20,662 --> 01:19:22,642 it's basically a structure where we can store 2193 01:19:22,672 --> 01:19:24,022 multiple pieces of 2194 01:19:24,052 --> 01:19:24,922 information, 2195 01:19:25,402 --> 01:19:25,852 but 2196 01:19:25,942 --> 01:19:29,212 a tupel has a few key differences from lists 2197 01:19:29,242 --> 01:19:30,382 that we're going to talk about 2198 01:19:30,622 --> 01:19:30,982 in 2199 01:19:31,012 --> 01:19:31,852 this tutorial. 2200 01:19:32,151 --> 01:19:34,582 first thing I want to do is I want to show you though how to 2201 01:19:34,612 --> 01:19:35,751 create a tupel. 2202 01:19:36,142 --> 01:19:38,872 so I can come down here and I can create a tupel 2203 01:19:39,112 --> 01:19:39,953 and one of the most 2204 01:19:40,792 --> 01:19:41,302 common 2205 01:19:41,332 --> 01:19:43,912 examples of tupels his coordinates. 2206 01:19:44,122 --> 01:19:47,962 so let's say I had a series of like x y coordinates I could create a variable 2207 01:19:49,282 --> 01:19:50,362 called coordinates 2208 01:19:50,422 --> 01:19:51,532 and I'm gonna set this 2209 01:19:51,562 --> 01:19:52,492 equal to 2210 01:19:52,732 --> 01:19:52,942 an 2211 01:19:52,972 --> 01:19:54,952 open and close parentheses, 2212 01:19:55,252 --> 01:19:57,682 and whenever we want to create a tupel inside of 2213 01:19:57,742 --> 01:19:59,422 python we're going to use these 2214 01:19:59,452 --> 01:20:00,921 open closed parentheses 2215 01:20:01,251 --> 01:20:01,492 and 2216 01:20:01,552 --> 01:20:06,051 inside of here inside these proceeds we're gonna put the values that we want to store 2217 01:20:06,381 --> 01:20:08,812 so I could for example put a list 2218 01:20:08,842 --> 01:20:09,202 of 2219 01:20:09,262 --> 01:20:09,922 numbers, 2220 01:20:10,222 --> 01:20:10,552 so 2221 01:20:10,582 --> 01:20:14,272 this could be like my coordinates I could have like four and five. 2222 01:20:14,572 --> 01:20:17,841 so this would be my tuple with coordinates 2223 01:20:17,871 --> 01:20:18,561 inside of it. 2224 01:20:19,011 --> 01:20:21,832 and one of the things about tuples that makes them unique 2225 01:20:21,861 --> 01:20:23,031 is a tuple is 2226 01:20:23,271 --> 01:20:24,082 immutable, 2227 01:20:24,532 --> 01:20:26,932 and you'll hear that word a lot when we're talking about tuples 2228 01:20:26,992 --> 01:20:28,912 immutable it basically means that 2229 01:20:29,001 --> 01:20:31,432 the tuple can't be changed or modified. 2230 01:20:31,702 --> 01:20:34,132 once we create our tuple up here. 2231 01:20:34,372 --> 01:20:35,872 you cannot modify it 2232 01:20:35,901 --> 01:20:37,371 cannot change it you can't 2233 01:20:37,431 --> 01:20:38,961 add elements to it you can't 2234 01:20:39,351 --> 01:20:41,092 erase elements from it you can't 2235 01:20:41,122 --> 01:20:43,492 change any of the elements inside the tuple. 2236 01:20:43,822 --> 01:20:47,092 what you see is what you get once you create the tuple its 2237 01:20:47,242 --> 01:20:48,652 it does it as it can't change 2238 01:20:48,892 --> 01:20:50,932 so I can come down here and I can 2239 01:20:51,082 --> 01:20:51,952 print out 2240 01:20:52,162 --> 01:20:53,362 some of the 2241 01:20:54,292 --> 01:20:55,792 attributes inside the tuple. 2242 01:20:56,122 --> 01:20:57,861 and the way I can access them 2243 01:20:57,891 --> 01:20:58,641 is 2244 01:20:58,671 --> 01:20:59,601 just by using an 2245 01:20:59,631 --> 01:21:01,491 open and closed square bracket. 2246 01:21:01,731 --> 01:21:03,681 and in here I can pass in 2247 01:21:03,711 --> 01:21:04,131 a 2248 01:21:04,161 --> 01:21:04,821 index 2249 01:21:05,091 --> 01:21:06,411 so troubles are indexed 2250 01:21:06,441 --> 01:21:09,532 starting at zero so technically we would say that four 2251 01:21:09,862 --> 01:21:11,392 is at index position one 2252 01:21:11,452 --> 01:21:12,142 and for -- 2253 01:21:12,231 --> 01:21:12,682 sorry 2254 01:21:13,551 --> 01:21:15,231 it is in position zero 2255 01:21:15,291 --> 01:21:16,161 and five of them 2256 01:21:16,191 --> 01:21:18,021 is at index position one, so if I said 2257 01:21:18,051 --> 01:21:19,190 coordinate zero 2258 01:21:19,250 --> 01:21:21,620 now it should print out four 2259 01:21:23,090 --> 01:21:25,340 and down here we're printing out four. 2260 01:21:25,730 --> 01:21:29,960 so if I wanted to print out that five we can just put a one inside of those square brackets 2261 01:21:30,470 --> 01:21:33,080 and now we'll print out that five so I can access 2262 01:21:33,109 --> 01:21:34,160 the elements 2263 01:21:34,580 --> 01:21:35,390 inside of 2264 01:21:35,419 --> 01:21:36,169 a tuple I can 2265 01:21:36,199 --> 01:21:37,549 easily access is at 2266 01:21:37,579 --> 01:21:37,819 each 2267 01:21:37,849 --> 01:21:38,389 entry. 2268 01:21:38,749 --> 01:21:39,139 but 2269 01:21:39,169 --> 01:21:42,020 if I was to come over here and try to change 2270 01:21:42,170 --> 01:21:44,720 one of the elements so if I said coordinates 2271 01:21:45,110 --> 01:21:45,740 and 2272 01:21:45,860 --> 01:21:49,040 coordinate one and I tried to set it equal to something else like 2273 01:21:49,430 --> 01:21:50,090 ten 2274 01:21:50,780 --> 01:21:52,700 python's actually going to give us an 2275 01:21:52,729 --> 01:21:55,219 error when we run this programs often run the program. 2276 01:21:55,429 --> 01:21:57,229 you see we get this error it says 2277 01:21:57,739 --> 01:21:58,129 type 2278 01:21:58,159 --> 01:21:58,668 air 2279 01:21:58,698 --> 01:21:59,928 tuple object 2280 01:21:59,958 --> 01:22:01,128 does not support 2281 01:22:01,218 --> 01:22:01,668 item 2282 01:22:01,698 --> 01:22:02,418 assignment 2283 01:22:02,688 --> 01:22:04,068 because it's immutable 2284 01:22:04,098 --> 01:22:06,438 because we can't change it so 2285 01:22:07,038 --> 01:22:09,168 that's basically what tuples are 2286 01:22:09,198 --> 01:22:10,608 how we can create them 2287 01:22:10,638 --> 01:22:11,298 and 2288 01:22:11,538 --> 01:22:14,658 you know a couple like I said it's very simple you just created and then you have, 2289 01:22:15,048 --> 01:22:15,498 um. 2290 01:22:15,978 --> 01:22:20,868 and now I want to talk to you guys about a common topic in python which is the difference between 2291 01:22:21,108 --> 01:22:21,798 tuples 2292 01:22:21,828 --> 01:22:23,148 and lists. 2293 01:22:23,358 --> 01:22:23,748 so 2294 01:22:23,778 --> 01:22:26,178 remember a list is basically doing the same thing 2295 01:22:26,208 --> 01:22:26,838 a list. 2296 01:22:27,018 --> 01:22:30,739 if one is to create a less we would just use square brackets instead of those parentheses. 2297 01:22:31,189 --> 01:22:32,930 and if I was using a list 2298 01:22:32,959 --> 01:22:33,560 I could 2299 01:22:33,709 --> 01:22:35,810 assign different values to it I could, 2300 01:22:35,930 --> 01:22:36,950 I could basically 2301 01:22:37,459 --> 01:22:40,040 mutate any of the elements I could add delete 2302 01:22:40,760 --> 01:22:43,430 modify change whatever I wanted with the list, 2303 01:22:43,580 --> 01:22:44,810 but with a tuple. 2304 01:22:44,930 --> 01:22:46,669 we can't do that and that's 2305 01:22:46,759 --> 01:22:48,350 sort of the basic difference and 2306 01:22:48,709 --> 01:22:49,640 really python 2307 01:22:49,669 --> 01:22:54,471 doesn't say anything more than that it basically just says like one of them's immutable one of them's not 2308 01:22:54,801 --> 01:22:55,311 but 2309 01:22:55,551 --> 01:23:01,851 in practical use cases generally people will use tuples for data that's never going to change 2310 01:23:02,210 --> 01:23:04,940 so you'll steal stored dna inside of a tuple 2311 01:23:05,121 --> 01:23:07,070 when that data doesn't need to be 2312 01:23:07,130 --> 01:23:09,561 mutated that's why something like coordinates 2313 01:23:09,860 --> 01:23:12,230 is such a good candidate for a couple because 2314 01:23:12,530 --> 01:23:13,880 once you have coordinates like 2315 01:23:13,910 --> 01:23:16,220 we're probably not going to modify them right, 2316 01:23:16,280 --> 01:23:17,150 we might add 2317 01:23:17,180 --> 01:23:18,200 other coordinates. 2318 01:23:18,410 --> 01:23:21,740 so for example if I wanted I could create a list of tunnels. 2319 01:23:21,920 --> 01:23:22,671 so I can say like 2320 01:23:22,731 --> 01:23:23,721 four five 2321 01:23:24,861 --> 01:23:26,061 six seven, 2322 01:23:26,751 --> 01:23:28,431 maybe we have some other coordinates like 2323 01:23:28,521 --> 01:23:29,331 eighty 2324 01:23:29,721 --> 01:23:30,801 thirty four. 2325 01:23:31,221 --> 01:23:32,631 so here I have in uh 2326 01:23:32,661 --> 01:23:33,531 I have a list 2327 01:23:33,591 --> 01:23:35,091 and inside of it we have these 2328 01:23:35,121 --> 01:23:35,781 tunnels. 2329 01:23:36,921 --> 01:23:41,151 but remember these topples can't be modified the values can't be changed so 2330 01:23:41,511 --> 01:23:43,401 really it's just a case by case basis 2331 01:23:43,431 --> 01:23:44,181 I would say 2332 01:23:44,361 --> 01:23:45,921 by a huge majority. 2333 01:23:46,101 --> 01:23:48,231 you're going to be using lists most of the time. 2334 01:23:48,951 --> 01:23:50,991 topples or more of a niche 2335 01:23:51,051 --> 01:23:51,411 you know 2336 01:23:51,440 --> 01:23:53,811 they're using more special situations. 2337 01:23:54,411 --> 01:23:54,831 but 2338 01:23:54,951 --> 01:24:01,400 there are plenty of situations where you want to use tuples so if you're in a situation where you want to store data that can't be changed or mutated 2339 01:24:02,570 --> 01:24:04,041 then tuples are the way to go 2340 01:24:04,101 --> 01:24:08,121 to <...> some basics about tuples some basics about the difference between 2341 01:24:08,301 --> 01:24:09,651 lists and tuples 2342 01:24:09,831 --> 01:24:12,261 and so a tuple is a great thing to add in c or 2343 01:24:12,291 --> 01:24:13,161 python 2344 01:24:13,190 --> 01:24:14,090 repertoire 2345 01:24:18,800 --> 01:24:21,170 in this tutorial I wanna talk to you guys are by using 2346 01:24:21,200 --> 01:24:23,120 functions in python. 2347 01:24:23,660 --> 01:24:25,249 a function is basically just 2348 01:24:25,279 --> 01:24:27,019 a collection of code, 2349 01:24:27,318 --> 01:24:29,599 which performs a specific task 2350 01:24:29,628 --> 01:24:30,588 so I can take 2351 01:24:30,829 --> 01:24:33,949 a bunch of lines of code that are basically doing one thing 2352 01:24:34,189 --> 01:24:35,750 I could put them inside of a function. 2353 01:24:35,990 --> 01:24:37,549 and then when I wanted to 2354 01:24:37,579 --> 01:24:41,479 do that task or do that one thing that the function was doing, 2355 01:24:41,719 --> 01:24:43,819 I can just call the function 2356 01:24:44,270 --> 01:24:48,770 and so functions really help you to organize your code a lot better they allow you to kind of 2357 01:24:48,800 --> 01:24:50,690 break up your code into different 2358 01:24:50,990 --> 01:24:53,570 you know little chunks that are doing different things and 2359 01:24:53,840 --> 01:24:56,900 they're really just awesome so functions are like a very core 2360 01:24:56,930 --> 01:24:59,960 concept when we're talking about programming in python, 2361 01:25:00,290 --> 01:25:02,601 so i'll show how to create an awesome 2362 01:25:02,630 --> 01:25:03,710 function today 2363 01:25:04,101 --> 01:25:07,611 let's say for the purposes of this tutorial we want to create a function 2364 01:25:07,791 --> 01:25:09,921 that says "hi" to the user so 2365 01:25:10,281 --> 01:25:14,421 the one task that our function performs as basically just saying hi to 2366 01:25:14,631 --> 01:25:16,371 whoever is writing the program so 2367 01:25:16,761 --> 01:25:17,391 over here, 2368 01:25:18,111 --> 01:25:20,872 if I want to write a function the first thing I have to use 2369 01:25:20,901 --> 01:25:24,082 is a keyword in python it's called "def" of 2370 01:25:24,112 --> 01:25:25,102 d e f 2371 01:25:25,612 --> 01:25:26,092 and 2372 01:25:26,122 --> 01:25:27,232 basically when 2373 01:25:27,262 --> 01:25:29,752 python sees this keyword it's going to say 2374 01:25:29,812 --> 01:25:30,442 okay 2375 01:25:30,562 --> 01:25:33,352 this person wants to use a function. 2376 01:25:33,802 --> 01:25:35,603 so after we type out "def" 2377 01:25:35,632 --> 01:25:37,282 we need to give this function 2378 01:25:37,312 --> 01:25:37,912 a name, 2379 01:25:38,362 --> 01:25:39,623 so just like when we 2380 01:25:39,652 --> 01:25:40,132 are 2381 01:25:40,162 --> 01:25:43,282 creating variables we give them descriptive names. 2382 01:25:43,462 --> 01:25:46,942 we also want to do the same thing with functions. 2383 01:25:47,182 --> 01:25:52,672 so if I'm creating a function I can just give it a specific name which basically says like what it's doing so 2384 01:25:52,912 --> 01:25:55,882 we're going to create a function that says hi so I'm just gonna 2385 01:25:55,912 --> 01:25:56,842 call this function, 2386 01:25:57,352 --> 01:25:58,162 say hi, 2387 01:25:58,282 --> 01:25:59,062 just like that. 2388 01:25:59,603 --> 01:26:00,172 and 2389 01:26:00,232 --> 01:26:02,183 once we type out the name of the function 2390 01:26:02,212 --> 01:26:05,303 and so also I could type out say high with no 2391 01:26:05,633 --> 01:26:08,783 underscore or I could type out say high with an underscore. 2392 01:26:09,143 --> 01:26:10,673 both are considered like 2393 01:26:10,733 --> 01:26:13,194 good practices and python and a lot of times 2394 01:26:13,344 --> 01:26:14,813 if you just have a simple like 2395 01:26:14,874 --> 01:26:16,553 two word function like this 2396 01:26:16,583 --> 01:26:19,224 you don't need to put an underscore but we can put an underscore there 2397 01:26:19,764 --> 01:26:20,424 if we wanted. 2398 01:26:20,694 --> 01:26:22,314 after we type out the name of the function 2399 01:26:22,344 --> 01:26:24,685 I'm just going to type into open and closed parentheses. 2400 01:26:25,194 --> 01:26:25,584 and 2401 01:26:25,614 --> 01:26:26,334 then I'm going to type 2402 01:26:26,364 --> 01:26:27,294 a colon 2403 01:26:27,685 --> 01:26:31,015 and basically what this is doing is it saying to python lake 2404 01:26:31,345 --> 01:26:31,675 or eye 2405 01:26:31,705 --> 01:26:34,615 all the code that comes after this line 2406 01:26:34,825 --> 01:26:35,665 is going to be 2407 01:26:35,695 --> 01:26:37,135 inside of our function. 2408 01:26:37,555 --> 01:26:39,234 and in order to 2409 01:26:39,294 --> 01:26:43,496 write code that's going to end up being inside the function we actually have to 2410 01:26:43,556 --> 01:26:44,876 indent it sold 2411 01:26:45,236 --> 01:26:45,926 over here. 2412 01:26:46,166 --> 01:26:48,295 you'll notice that when I clicked enter my 2413 01:26:48,325 --> 01:26:50,065 text editor automatically 2414 01:26:50,125 --> 01:26:52,616 indented attacks so it's automatically like 2415 01:26:53,306 --> 01:26:54,836 using this indent here 2416 01:26:55,196 --> 01:26:55,646 and that 2417 01:26:55,676 --> 01:26:57,806 having one of the rules and python is like 2418 01:26:58,436 --> 01:27:00,986 the code that goes inside of this function 2419 01:27:01,016 --> 01:27:02,695 needs to be indented. 2420 01:27:02,905 --> 01:27:04,646 so if I was to write some code 2421 01:27:04,766 --> 01:27:05,696 like out here, 2422 01:27:05,906 --> 01:27:09,446 this is no longer going to be considered inside the function so you can see 2423 01:27:09,746 --> 01:27:11,756 as I type out code and obviously this isn't 2424 01:27:11,786 --> 01:27:12,656 real code but 2425 01:27:12,866 --> 01:27:14,606 as I type text over here that's 2426 01:27:14,636 --> 01:27:15,326 invented 2427 01:27:15,536 --> 01:27:17,786 this little like marker over here 2428 01:27:18,026 --> 01:27:19,196 is basically saying like 2429 01:27:19,286 --> 01:27:19,646 oh yeah 2430 01:27:19,676 --> 01:27:20,905 that's inside the function. 2431 01:27:21,265 --> 01:27:22,735 but then when I write code 2432 01:27:22,765 --> 01:27:24,085 over here that is like 2433 01:27:24,115 --> 01:27:25,285 not at the same 2434 01:27:25,375 --> 01:27:27,145 indentation level as this stuff. 2435 01:27:27,325 --> 01:27:30,295 it's no longer considering it inside the function so 2436 01:27:30,745 --> 01:27:34,436 that is a little thing any code inside this function needs to be indented 2437 01:27:35,096 --> 01:27:39,537 right so our function is just going to say hi to the user so I'm going to have it 2438 01:27:39,567 --> 01:27:40,407 print out 2439 01:27:42,567 --> 01:27:43,887 some text it's going to say 2440 01:27:43,917 --> 01:27:44,577 hello. 2441 01:27:44,727 --> 01:27:45,357 user. 2442 01:27:45,447 --> 01:27:49,587 so this is a very simple function obviously we just have one line of code and 2443 01:27:49,797 --> 01:27:51,057 inside of a function you could have 2444 01:27:51,087 --> 01:27:53,007 you know as many lines of code as you want but 2445 01:27:53,247 --> 01:27:57,268 for our purposes we only need one line in order to perform our function. 2446 01:27:57,598 --> 01:27:58,167 so 2447 01:27:58,197 --> 01:27:59,638 now all we have to do is 2448 01:27:59,667 --> 01:28:01,318 call this function so 2449 01:28:01,408 --> 01:28:05,487 if I want to execute the code inside of this function I have to do something 2450 01:28:05,607 --> 01:28:05,998 called 2451 01:28:06,027 --> 01:28:07,107 calling it so 2452 01:28:07,498 --> 01:28:10,407 if I was to just run my program as it is right now, 2453 01:28:10,527 --> 01:28:11,428 I'm just gonna run it, 2454 01:28:12,088 --> 01:28:14,398 you'll see that nothing happens over here 2455 01:28:14,458 --> 01:28:14,878 right ? 2456 01:28:15,658 --> 01:28:16,858 even though this function is 2457 01:28:16,888 --> 01:28:19,528 printing out hello user when I run the program 2458 01:28:19,558 --> 01:28:20,698 it's not doing it, 2459 01:28:21,088 --> 01:28:23,278 and that's because of the code inside of a function 2460 01:28:23,308 --> 01:28:24,958 isn't going to get executed 2461 01:28:24,988 --> 01:28:26,008 by default. 2462 01:28:26,788 --> 01:28:32,127 the code inside of a function is only going to get executed when we specify that we want to execute it. 2463 01:28:32,458 --> 01:28:37,377 and in order to do that we're going to have to do something called calling the function so in order to call a function, 2464 01:28:37,947 --> 01:28:41,608 you basically just type out the functions name and those open a close parentheses. 2465 01:28:41,968 --> 01:28:43,139 so I'm just gonna type out 2466 01:28:43,168 --> 01:28:44,278 say hi 2467 01:28:44,428 --> 01:28:44,698 and 2468 01:28:44,728 --> 01:28:46,048 opening close parentheses. 2469 01:28:46,348 --> 01:28:46,678 and 2470 01:28:46,708 --> 01:28:47,877 now when we are, 2471 01:28:48,117 --> 01:28:49,647 when we run this program again, 2472 01:28:50,098 --> 01:28:50,998 you'll see that 2473 01:28:51,088 --> 01:28:51,718 it prints out 2474 01:28:51,748 --> 01:28:54,237 hello user so were executing the code 2475 01:28:54,267 --> 01:28:55,437 inside of the function. 2476 01:28:56,097 --> 01:28:58,557 and I want to show you guys just one more thing here 2477 01:28:58,767 --> 01:29:02,158 just talking to you guys about how these functions actively work so 2478 01:29:02,638 --> 01:29:04,289 up here I'm going to print top 2479 01:29:04,708 --> 01:29:05,758 and then down here 2480 01:29:05,788 --> 01:29:06,658 I'm going to print 2481 01:29:07,588 --> 01:29:08,128 bottom. 2482 01:29:08,398 --> 01:29:10,528 so I wanna show you guys the flow of 2483 01:29:10,558 --> 01:29:12,927 these functions inside the program so when I 2484 01:29:12,987 --> 01:29:13,917 run this program 2485 01:29:14,547 --> 01:29:15,237 you'll see 2486 01:29:15,267 --> 01:29:16,737 we print out top 2487 01:29:17,067 --> 01:29:18,208 hello user 2488 01:29:18,507 --> 01:29:19,468 and then bada. 2489 01:29:19,708 --> 01:29:21,418 so essentially what's happening is 2490 01:29:21,479 --> 01:29:22,889 when python goes through and 2491 01:29:22,918 --> 01:29:24,088 executes this 2492 01:29:24,269 --> 01:29:24,869 program, 2493 01:29:25,289 --> 01:29:27,149 it goes over here to this first line it says 2494 01:29:27,179 --> 01:29:27,688 ok 2495 01:29:28,258 --> 01:29:30,389 we want to print out the word top 2496 01:29:30,569 --> 01:29:32,039 and then it goes down here and it says 2497 01:29:32,129 --> 01:29:34,919 ok we want to execute the say high function 2498 01:29:35,279 --> 01:29:37,019 so python actually jumps 2499 01:29:37,049 --> 01:29:37,469 up 2500 01:29:37,739 --> 01:29:40,169 and it goes over this say high function, 2501 01:29:40,289 --> 01:29:41,429 and it's going to execute 2502 01:29:41,459 --> 01:29:42,599 all of the code 2503 01:29:42,659 --> 01:29:44,759 inside of this function so 2504 01:29:45,029 --> 01:29:47,009 it's going to go through execute all this code. 2505 01:29:47,159 --> 01:29:50,309 and then once it's done executing all the code and the function, 2506 01:29:50,519 --> 01:29:51,659 it's going to jump back 2507 01:29:51,688 --> 01:29:57,300 down here and it's going to move onto the next line which is bottom so that's how like the flow of functions, 2508 01:29:57,450 --> 01:29:59,729 again with functions generally when we're 2509 01:29:59,759 --> 01:30:01,169 naming these functions 2510 01:30:01,589 --> 01:30:02,039 and 2511 01:30:02,159 --> 01:30:03,419 you want them to be named 2512 01:30:03,509 --> 01:30:04,890 in all lower case, 2513 01:30:05,130 --> 01:30:05,640 and 2514 01:30:05,700 --> 01:30:07,890 usually when we're naming stuff in python 2515 01:30:07,920 --> 01:30:10,290 if there's two or more words we're going to use an 2516 01:30:10,320 --> 01:30:11,280 under space 2517 01:30:11,460 --> 01:30:13,110 or an underscore in between them. 2518 01:30:13,320 --> 01:30:16,170 so I can write this out as say under score high. 2519 01:30:16,561 --> 01:30:17,041 but 2520 01:30:17,130 --> 01:30:21,181 in a lot of situations though if I have a function like this where the name is really short 2521 01:30:21,421 --> 01:30:22,982 and might just be easier to leave it 2522 01:30:23,012 --> 01:30:24,062 without an underscore but 2523 01:30:24,091 --> 01:30:26,311 why we've spent on scoring now just to be a 2524 01:30:27,121 --> 01:30:28,771 super python official. 2525 01:30:29,581 --> 01:30:30,421 all right so now 2526 01:30:30,571 --> 01:30:37,262 we can actually make these functions a little bit more powerful and what we can do is we can give them information. 2527 01:30:37,592 --> 01:30:42,511 so a lot of times when we write a function we're going to want to have additional information that gets 2528 01:30:42,541 --> 01:30:43,411 passed in. 2529 01:30:43,861 --> 01:30:45,691 and these are called parameters 2530 01:30:45,721 --> 01:30:48,480 so a parameter is a piece of information 2531 01:30:48,720 --> 01:30:50,070 that we give to 2532 01:30:50,100 --> 01:30:50,910 the function, 2533 01:30:51,420 --> 01:30:52,020 so 2534 01:30:52,080 --> 01:30:58,260 over here I can actually specify that this function needs to receive some parameters so I can basically say like 2535 01:30:58,560 --> 01:31:00,450 hey if you're gonna call this function, 2536 01:31:00,630 --> 01:31:02,280 you need to give us some information, 2537 01:31:02,460 --> 01:31:03,781 you need to give us some parameters 2538 01:31:04,261 --> 01:31:10,801 and all I have to do to do that has just type out the name of the parameter that I want to receive so why don't we allow the 2539 01:31:12,031 --> 01:31:15,481 code calling this function to tell it what name to say hi to 2540 01:31:15,901 --> 01:31:17,611 up here I can just say name 2541 01:31:18,241 --> 01:31:22,501 and basically what this means is it means whenever I call this say high function 2542 01:31:22,651 --> 01:31:24,361 we have to give it a name. 2543 01:31:24,721 --> 01:31:26,551 so down here if I was to call this 2544 01:31:26,581 --> 01:31:29,521 I have to include a name in here so I can say like 2545 01:31:30,242 --> 01:31:30,782 mike. 2546 01:31:30,872 --> 01:31:35,701 and what we can do now is we can actually access this parameter or this variable 2547 01:31:36,151 --> 01:31:37,501 inside of our 2548 01:31:37,531 --> 01:31:40,771 function so I could come over here and instead of saying hello user. 2549 01:31:41,071 --> 01:31:42,451 I could say hello 2550 01:31:42,571 --> 01:31:43,201 name 2551 01:31:43,591 --> 01:31:48,992 and basically what this is gonna do is it's just going to say hello to whatever name got passed in here 2552 01:31:49,502 --> 01:31:51,272 so I'm actually gonna copy this 2553 01:31:51,302 --> 01:31:51,812 and 2554 01:31:51,872 --> 01:31:52,622 we will 2555 01:31:53,102 --> 01:31:55,712 do this twice also hello my kilo 2556 01:31:55,742 --> 01:31:56,612 steve 2557 01:31:57,662 --> 01:31:59,731 and now when I run this program 2558 01:31:59,972 --> 01:32:01,082 you'll see that 2559 01:32:01,292 --> 01:32:02,102 instead of just saying 2560 01:32:02,132 --> 01:32:03,152 hello user 2561 01:32:03,272 --> 01:32:05,583 it saying hello to whichever name 2562 01:32:05,612 --> 01:32:07,232 I passed in to the function. 2563 01:32:07,532 --> 01:32:09,842 so that's why this can be really useful right we can 2564 01:32:10,022 --> 01:32:11,643 give the function information 2565 01:32:12,002 --> 01:32:13,833 and depending on the information we give it 2566 01:32:13,922 --> 01:32:15,123 it'll performance task 2567 01:32:15,152 --> 01:32:16,292 a little bit differently. 2568 01:32:16,743 --> 01:32:17,612 I could also 2569 01:32:18,092 --> 01:32:20,192 include more than one parameter so you can I mean 2570 01:32:20,432 --> 01:32:23,013 technically you could have as many parameters as you want 2571 01:32:23,103 --> 01:32:24,692 so I can put another one in here would say 2572 01:32:24,722 --> 01:32:25,322 age. 2573 01:32:25,622 --> 01:32:27,332 and now I'm going to have to pass in an 2574 01:32:27,362 --> 01:32:27,962 age 2575 01:32:27,992 --> 01:32:28,952 along with these, 2576 01:32:29,252 --> 01:32:30,752 so I'm just going to pass in 2577 01:32:30,782 --> 01:32:31,592 age 2578 01:32:31,712 --> 01:32:32,433 and 2579 01:32:32,613 --> 01:32:34,293 passing an age for down here, 2580 01:32:35,733 --> 01:32:36,963 and I'm just going to pass in 2581 01:32:36,993 --> 01:32:37,863 strings, 2582 01:32:39,003 --> 01:32:40,864 so we can say hello name 2583 01:32:43,414 --> 01:32:44,434 you are 2584 01:32:45,574 --> 01:32:46,114 age 2585 01:32:46,384 --> 01:32:48,785 so I'm passing in two pieces of information. 2586 01:32:49,055 --> 01:32:52,055 now when we run this program is going to call the function, 2587 01:32:52,625 --> 01:32:55,625 and it's going to use both of those pieces of information so it's a healthy 2588 01:32:55,654 --> 01:32:58,654 like you are thirty five hello steve you are seventy. 2589 01:32:59,104 --> 01:32:59,644 so 2590 01:32:59,854 --> 01:33:00,724 essentially you 2591 01:33:00,784 --> 01:33:06,004 were writing out this one line of code which just prints out like hello to someone 2592 01:33:06,394 --> 01:33:08,824 and were allowing this function to receive 2593 01:33:08,854 --> 01:33:11,554 two parameter so the name in the age 2594 01:33:11,854 --> 01:33:13,444 and depending on the name in the age, 2595 01:33:13,594 --> 01:33:15,003 the function is going to print out 2596 01:33:15,033 --> 01:33:16,503 hello a little bit 2597 01:33:16,533 --> 01:33:17,193 differently. 2598 01:33:17,434 --> 01:33:20,134 that's kind of the beauty of using function so 2599 01:33:20,404 --> 01:33:23,434 you could pass anything you want into a function so for example, 2600 01:33:23,733 --> 01:33:25,144 I could pass in a 2601 01:33:25,204 --> 01:33:25,894 integer. 2602 01:33:25,954 --> 01:33:27,814 instead of a string for the age. 2603 01:33:28,324 --> 01:33:29,764 so like I could pass in a number. 2604 01:33:30,004 --> 01:33:32,435 the only differences over here we're going to have to 2605 01:33:32,495 --> 01:33:34,115 convert this into a string, 2606 01:33:34,835 --> 01:33:35,856 but it's going to work. 2607 01:33:35,946 --> 01:33:36,816 just the same, 2608 01:33:37,686 --> 01:33:39,036 so you can pass in alm 2609 01:33:39,966 --> 01:33:40,687 strings 2610 01:33:40,716 --> 01:33:41,946 numbers bullion's 2611 01:33:41,976 --> 01:33:43,356 arrays you can really pass 2612 01:33:43,716 --> 01:33:45,065 any type of data 2613 01:33:45,095 --> 01:33:46,145 into a 2614 01:33:46,235 --> 01:33:47,585 function and it's going to work 2615 01:33:47,615 --> 01:33:48,035 so 2616 01:33:48,155 --> 01:33:49,865 you can see here we get the same result. 2617 01:33:50,285 --> 01:33:53,165 so that's the basics of functions and as you go through on 2618 01:33:53,225 --> 01:33:54,815 with python you're gonna you know 2619 01:33:54,845 --> 01:33:56,495 being functions more and more, 2620 01:33:56,765 --> 01:34:03,515 and generally it's a good idea to break your code up into different functions so whenever you have like a grouping of code 2621 01:34:03,785 --> 01:34:04,175 that's 2622 01:34:04,205 --> 01:34:06,514 designed to perform a specific task. 2623 01:34:06,814 --> 01:34:10,353 that's usually a good candidate to be put inside of a function 2624 01:34:14,193 --> 01:34:18,994 in this tutorial I wanna talk to you guys about using the return statement in python, 2625 01:34:19,054 --> 01:34:19,744 functions 2626 01:34:20,284 --> 01:34:22,234 and other python function is basically just 2627 01:34:22,264 --> 01:34:23,434 a collection 2628 01:34:23,463 --> 01:34:26,913 of python code that performs a specific task. 2629 01:34:27,333 --> 01:34:31,894 and when we want to perform that task in our python programs we can call 2630 01:34:32,134 --> 01:34:33,364 a python function 2631 01:34:33,844 --> 01:34:40,145 and a lot of times when we're calling a python function we just gonna call it and it does its thing and then we move on with the program. 2632 01:34:40,535 --> 01:34:44,375 but sometimes when we call a function we're actually going to want to get 2633 01:34:44,405 --> 01:34:45,455 information 2634 01:34:45,484 --> 01:34:46,024 back 2635 01:34:46,054 --> 01:34:47,165 from that function. 2636 01:34:47,555 --> 01:34:50,255 so when I call the function I want to basically 2637 01:34:50,285 --> 01:34:52,805 executes task I wanted to execute all the code 2638 01:34:53,165 --> 01:34:54,125 and then I wanted to like 2639 01:34:54,155 --> 01:34:55,745 give me some information back 2640 01:34:55,775 --> 01:34:57,905 so that can be like a particular value. 2641 01:34:58,205 --> 01:35:00,785 it could be something like telling me how the task went 2642 01:35:01,055 --> 01:35:01,745 basically 2643 01:35:01,805 --> 01:35:02,075 the 2644 01:35:02,105 --> 01:35:04,595 function can just communicate back to us like hey, 2645 01:35:04,775 --> 01:35:05,945 here's some information. 2646 01:35:06,305 --> 01:35:09,305 and that's what the return keyword can allow us to do 2647 01:35:09,695 --> 01:35:11,766 the return keyword can basically allow 2648 01:35:11,795 --> 01:35:14,675 python two return information from 2649 01:35:14,765 --> 01:35:15,365 a function. 2650 01:35:15,965 --> 01:35:17,375 so I'm gonna show you guys how we can 2651 01:35:17,405 --> 01:35:20,464 do this I want to create a very simple function. 2652 01:35:20,794 --> 01:35:22,174 and it's just going to 2653 01:35:22,204 --> 01:35:28,654 cube a number so when we cuba number we take it to the power of three so if I was going to cuba like to 2654 01:35:28,984 --> 01:35:29,375 be like 2655 01:35:29,404 --> 01:35:31,564 two raised to the power of three 2656 01:35:31,894 --> 01:35:32,494 right it's just 2657 01:35:32,523 --> 01:35:33,693 pretty basic math. 2658 01:35:34,144 --> 01:35:36,813 so we're gonna make a function that will cuban number 2659 01:35:36,843 --> 01:35:39,543 and I'll show you guys how we can use that return statement 2660 01:35:39,573 --> 01:35:39,993 so 2661 01:35:40,323 --> 01:35:42,363 first thing we want to do is make a function. 2662 01:35:42,453 --> 01:35:43,323 I'm just going to say 2663 01:35:43,353 --> 01:35:43,923 death 2664 01:35:44,253 --> 01:35:44,883 q, 2665 01:35:44,943 --> 01:35:45,603 we'll call the country 2666 01:35:45,633 --> 01:35:46,623 the function cube. 2667 01:35:47,283 --> 01:35:47,763 and 2668 01:35:47,793 --> 01:35:52,022 over here we can specify any parameters that this function will take. 2669 01:35:52,292 --> 01:35:57,934 so basically any values that we want to give this function so we're going to give it one function which is just going to be 2670 01:35:58,174 --> 01:36:00,304 a number so I'm just going to call it numb. 2671 01:36:00,874 --> 01:36:02,284 and then over here I'm going to 2672 01:36:02,434 --> 01:36:02,974 type out a 2673 01:36:03,003 --> 01:36:03,724 colon 2674 01:36:04,444 --> 01:36:05,584 and then down here, 2675 01:36:05,854 --> 01:36:07,354 we can put any of the code 2676 01:36:07,384 --> 01:36:09,875 that we want to be included in this function. 2677 01:36:10,294 --> 01:36:14,316 so basically this function is just going to keep this number so we could just 2678 01:36:14,346 --> 01:36:15,545 take out numb 2679 01:36:15,875 --> 01:36:16,955 times numb 2680 01:36:17,255 --> 01:36:18,185 times numb 2681 01:36:18,485 --> 01:36:18,875 right 2682 01:36:19,055 --> 01:36:20,345 that's going to give us 2683 01:36:20,405 --> 01:36:21,335 numb cubed. 2684 01:36:21,396 --> 01:36:21,905 so 2685 01:36:22,055 --> 01:36:23,166 that's all well and good. 2686 01:36:23,226 --> 01:36:24,996 and if I come down here I can 2687 01:36:25,026 --> 01:36:28,956 execute this function so I can basically just call it as a cube. 2688 01:36:29,286 --> 01:36:31,236 and why don't we pass it a three. 2689 01:36:31,626 --> 01:36:33,486 so I'm going to go ahead and pass it to three 2690 01:36:33,906 --> 01:36:35,377 and I'm going to save this. 2691 01:36:36,457 --> 01:36:36,967 and 2692 01:36:36,997 --> 01:36:38,617 now let's go ahead and run 2693 01:36:38,646 --> 01:36:39,606 this code, 2694 01:36:40,207 --> 01:36:41,557 so we're on the code 2695 01:36:41,887 --> 01:36:42,517 and 2696 01:36:43,146 --> 01:36:44,767 you'll see down here. 2697 01:36:45,307 --> 01:36:46,267 nothing happened 2698 01:36:46,356 --> 01:36:48,217 right so nothing got printed out 2699 01:36:48,607 --> 01:36:49,537 in our program 2700 01:36:49,567 --> 01:36:50,107 facts 2701 01:36:50,467 --> 01:36:52,387 when we call this cube function 2702 01:36:52,417 --> 01:36:53,917 it didn't really do anything, 2703 01:36:54,007 --> 01:36:54,397 so 2704 01:36:54,427 --> 01:36:57,066 let me try to print this out so immediately prentice 2705 01:36:57,366 --> 01:37:00,696 function out it'll give us back the information that we want so 2706 01:37:01,146 --> 01:37:02,045 what about print 2707 01:37:02,135 --> 01:37:03,095 and will print 2708 01:37:03,125 --> 01:37:05,465 out the value of the function I'm terrific play 2709 01:37:06,186 --> 01:37:08,676 we look down here it says none. 2710 01:37:09,096 --> 01:37:10,686 so when I printed out 2711 01:37:10,715 --> 01:37:13,475 the value of this function it told me none 2712 01:37:14,105 --> 01:37:17,315 but really this function is supposed to be q being the number. 2713 01:37:17,706 --> 01:37:18,125 and 2714 01:37:18,155 --> 01:37:20,765 here's how we can use the return statement and python 2715 01:37:20,795 --> 01:37:22,355 I can come over here and I can just say 2716 01:37:22,385 --> 01:37:23,195 return 2717 01:37:23,885 --> 01:37:24,875 and now 2718 01:37:24,905 --> 01:37:29,135 python is going to return whatever value we put over here to the right. 2719 01:37:29,525 --> 01:37:32,975 so when I call this cube function and I give it a three 2720 01:37:33,665 --> 01:37:36,335 python's going to go off it's going to execute this function 2721 01:37:36,365 --> 01:37:38,315 when it sees this return statement 2722 01:37:38,345 --> 01:37:38,915 it's going to say 2723 01:37:38,945 --> 01:37:39,365 okay, 2724 01:37:39,665 --> 01:37:43,685 I want to give a value back to whatever call of this function. 2725 01:37:43,805 --> 01:37:45,064 and it's going to return 2726 01:37:45,094 --> 01:37:45,994 this value. 2727 01:37:46,474 --> 01:37:48,004 now when I print out 2728 01:37:48,034 --> 01:37:48,514 cube 2729 01:37:48,543 --> 01:37:49,173 three 2730 01:37:49,563 --> 01:37:53,643 it should print out the answer because we get an answer back so 2731 01:37:53,913 --> 01:37:54,693 when I play this 2732 01:37:54,723 --> 01:37:55,503 you'll see 2733 01:37:55,533 --> 01:37:56,343 down here, 2734 01:37:56,673 --> 01:37:57,093 says 2735 01:37:57,123 --> 01:37:59,643 twenty seven so we got the correct answer. 2736 01:37:59,883 --> 01:38:03,273 so I can do this with anything wantonly cube like for something 2737 01:38:04,173 --> 01:38:05,104 as an hour on this 2738 01:38:05,374 --> 01:38:09,213 and you can see we're constantly getting the correct answer back 2739 01:38:09,243 --> 01:38:09,603 so 2740 01:38:09,632 --> 01:38:15,122 that's the basics of using this return statement it allows us to return a value back to 2741 01:38:15,152 --> 01:38:16,472 the caller in other words 2742 01:38:16,712 --> 01:38:18,602 back to whatever's calling the function. 2743 01:38:18,992 --> 01:38:24,001 so I just wanna illustrate this point a little bit further I'm going to go up here I'm actually going to create a variable 2744 01:38:24,091 --> 01:38:26,491 so I'm gonna create a variable called result 2745 01:38:26,521 --> 01:38:27,662 and I'm just going to set it 2746 01:38:27,691 --> 01:38:28,651 equal to 2747 01:38:28,921 --> 01:38:29,642 cube 2748 01:38:29,762 --> 01:38:30,482 for 2749 01:38:30,572 --> 01:38:33,092 this variable result is going to store 2750 01:38:33,122 --> 01:38:34,142 the value 2751 01:38:34,382 --> 01:38:35,702 that gets returned 2752 01:38:36,001 --> 01:38:37,921 from the cube function since 2753 01:38:38,071 --> 01:38:39,091 it's not in a store like 2754 01:38:39,121 --> 01:38:43,890 cube for its going to store the value that gets returned from executing that function. 2755 01:38:44,250 --> 01:38:46,710 so now if I came down here and printed out result. 2756 01:38:47,250 --> 01:38:50,221 it's actually just going to turn out sixty four again because 2757 01:38:50,251 --> 01:38:51,811 that's the value that it's storing 2758 01:38:52,111 --> 01:38:54,721 so this return statement can be really useful for like 2759 01:38:54,901 --> 01:38:56,941 getting information back from a function, 2760 01:38:57,151 --> 01:38:57,871 we can use 2761 01:38:57,901 --> 01:38:59,431 something like a parameter. 2762 01:38:59,701 --> 01:39:01,231 I guess for as a parameter. 2763 01:39:01,441 --> 01:39:03,542 we can give information to a function 2764 01:39:03,841 --> 01:39:07,171 and then we can use the return statement to get information 2765 01:39:07,201 --> 01:39:08,521 back from a function. 2766 01:39:09,001 --> 01:39:11,102 and I do I just want to point out one more thing 2767 01:39:11,432 --> 01:39:14,103 I'm actually not able to put any code. 2768 01:39:14,522 --> 01:39:18,722 after this return statements so if I came down here and try to put like a prince statement. 2769 01:39:19,352 --> 01:39:21,511 this actually isn't going to work so 2770 01:39:21,541 --> 01:39:24,662 this is never going to get printed out so if I just typed out like 2771 01:39:24,722 --> 01:39:25,712 code right here 2772 01:39:26,342 --> 01:39:28,112 when we run this program. 2773 01:39:28,982 --> 01:39:30,633 it's not going to type out 2774 01:39:30,663 --> 01:39:31,232 code 2775 01:39:31,562 --> 01:39:34,203 does because when I used this return keyword, 2776 01:39:34,473 --> 01:39:36,693 it breaks us out of the function so 2777 01:39:36,903 --> 01:39:39,483 python's going to go through it's going to execute the code 2778 01:39:39,693 --> 01:39:42,512 in the function whenever it sees this return keyword. 2779 01:39:42,842 --> 01:39:47,133 it's just going to break back out and we're going to be done so we'll never be able to reach 2780 01:39:47,163 --> 01:39:48,212 this line of code. 2781 01:39:48,692 --> 01:39:52,592 so that's the basics of using return statements and you can return 2782 01:39:52,622 --> 01:39:54,182 any data type you want 2783 01:39:54,212 --> 01:39:58,023 we could easily return like a string or boolean or an array. 2784 01:39:58,293 --> 01:40:00,543 it doesn't really matter you can return whatever you want. 2785 01:40:01,203 --> 01:40:05,073 and a lot of times in a lot of situations you're going to want to get a value back from 2786 01:40:05,133 --> 01:40:05,703 a function 2787 01:40:09,723 --> 01:40:12,243 in this tutorial I wanna talk to you guys about using 2788 01:40:12,272 --> 01:40:14,133 if statements in python. 2789 01:40:14,553 --> 01:40:14,853 now 2790 01:40:14,913 --> 01:40:18,183 if statements are a special structure in python 2791 01:40:18,212 --> 01:40:20,582 where we can actually help our programs to 2792 01:40:20,612 --> 01:40:21,062 make 2793 01:40:21,092 --> 01:40:21,992 decisions. 2794 01:40:22,352 --> 01:40:23,882 so by using an if statement 2795 01:40:23,912 --> 01:40:26,072 I could execute certain code when 2796 01:40:26,102 --> 01:40:27,692 certain conditions are true, 2797 01:40:27,962 --> 01:40:28,742 and I could execute 2798 01:40:28,772 --> 01:40:29,882 other code when 2799 01:40:29,972 --> 01:40:31,171 other conditions are true. 2800 01:40:31,591 --> 01:40:35,402 so basically if statements allow our programs to respond 2801 01:40:35,432 --> 01:40:36,032 to the 2802 01:40:36,062 --> 01:40:37,621 input that they are given so 2803 01:40:37,891 --> 01:40:40,681 depending on the data that we're using in the program 2804 01:40:41,011 --> 01:40:46,771 are programs will be able to respond so when certain data is certain values we can do certain things 2805 01:40:47,191 --> 01:40:48,782 and when other data is, 2806 01:40:48,872 --> 01:40:49,441 other values 2807 01:40:49,471 --> 01:40:50,461 you can do other things so 2808 01:40:50,521 --> 01:40:50,731 you know 2809 01:40:50,761 --> 01:40:52,321 your programs are essentially 2810 01:40:52,351 --> 01:40:53,701 becoming a lot smarter 2811 01:40:54,091 --> 01:40:55,531 and actually if statements 2812 01:40:55,561 --> 01:40:59,490 are things that we as human beings deal with every day so 2813 01:40:59,730 --> 01:41:04,740 you know as you go throughout your day generally you're dealing with if statements all the time so I want to kind of 2814 01:41:05,040 --> 01:41:10,949 give you guys a brief introduction into if statements and we'll talk about some of the common if statements that you'd see in everyday life. 2815 01:41:11,279 --> 01:41:14,791 and now we'll go ahead and do a really awesome example of the kind of like 2816 01:41:14,851 --> 01:41:15,511 sure yeah 2817 01:41:15,541 --> 01:41:17,312 what if statements can do for us. 2818 01:41:17,671 --> 01:41:18,211 so 2819 01:41:18,421 --> 01:41:21,482 over here in my text editor I just have this little text file 2820 01:41:21,512 --> 01:41:23,583 and in here I wrote out a bunch of 2821 01:41:23,612 --> 01:41:24,362 if statements 2822 01:41:24,392 --> 01:41:24,722 that 2823 01:41:24,992 --> 01:41:30,123 a lot of people will encounter on a daily basis so here's the first one it says I wake up 2824 01:41:30,873 --> 01:41:31,982 if I'm hungry. 2825 01:41:32,583 --> 01:41:33,692 I eat breakfast. 2826 01:41:34,112 --> 01:41:36,663 so let's break this down a little bit up here it says 2827 01:41:36,723 --> 01:41:37,683 if I'm hungry. 2828 01:41:38,042 --> 01:41:39,272 and this is a condition. 2829 01:41:39,692 --> 01:41:40,052 right 2830 01:41:40,412 --> 01:41:42,182 this is either going to be true 2831 01:41:42,211 --> 01:41:43,501 or it's going to be false, 2832 01:41:43,562 --> 01:41:43,981 right 2833 01:41:44,281 --> 01:41:45,361 if it's true, 2834 01:41:45,691 --> 01:41:47,042 I'm going to go ahead and 2835 01:41:47,222 --> 01:41:48,632 eat breakfast right 2836 01:41:48,932 --> 01:41:50,342 if it's false 2837 01:41:50,612 --> 01:41:53,342 under skin to skip whatever was in here and move on, 2838 01:41:53,762 --> 01:41:54,422 writes that 2839 01:41:54,452 --> 01:41:55,742 the basics of an if statement. 2840 01:41:55,832 --> 01:41:56,972 we have a condition 2841 01:41:57,302 --> 01:41:57,992 in this case 2842 01:41:58,021 --> 01:41:58,832 if I'm hungry. 2843 01:41:59,102 --> 01:42:00,452 if the condition is true, 2844 01:42:00,692 --> 01:42:02,522 then we do the action so 2845 01:42:02,552 --> 01:42:03,482 we eat breakfast. 2846 01:42:03,812 --> 01:42:05,612 otherwise we just skip it. 2847 01:42:06,452 --> 01:42:07,742 so down here we have another one. 2848 01:42:07,982 --> 01:42:08,672 it says 2849 01:42:08,732 --> 01:42:09,902 I leave my house. 2850 01:42:10,532 --> 01:42:11,612 if it's cloudy. 2851 01:42:12,182 --> 01:42:13,232 I bring an umbrella. 2852 01:42:13,652 --> 01:42:14,612 otherwise 2853 01:42:14,702 --> 01:42:15,152 I bring 2854 01:42:15,182 --> 01:42:16,052 sunglasses. 2855 01:42:16,382 --> 01:42:21,812 and so this one is a little bit more complex than the one we just looked at you'll see we have our condition right says 2856 01:42:21,842 --> 01:42:22,772 if it's cloudy. 2857 01:42:23,372 --> 01:42:24,752 if that conditions true 2858 01:42:24,782 --> 01:42:26,072 we're going to bring the umbrella. 2859 01:42:26,672 --> 01:42:27,032 but 2860 01:42:27,092 --> 01:42:29,462 in this case if the conditions false 2861 01:42:29,492 --> 01:42:31,742 there is something else that we want to do 2862 01:42:32,012 --> 01:42:35,733 so in the case of here if this condition was false we just moved on. 2863 01:42:36,033 --> 01:42:38,223 but now if this conditions false 2864 01:42:38,252 --> 01:42:39,693 then we're gonna go ahead and bring 2865 01:42:39,753 --> 01:42:40,593 sunglasses 2866 01:42:40,623 --> 01:42:41,013 so 2867 01:42:41,312 --> 01:42:44,852 that's another example of an if statement it's a little bit more complex. 2868 01:42:45,182 --> 01:42:49,682 finally I have one more down here and this one's even more complex it says I'm at a restaurant. 2869 01:42:50,222 --> 01:42:51,392 if I want me. 2870 01:42:51,572 --> 01:42:52,651 I order a steak. 2871 01:42:52,951 --> 01:42:54,721 so if this conditions true 2872 01:42:54,751 --> 01:42:55,892 we order the steak, 2873 01:42:56,372 --> 01:42:58,292 but if this condition is false, 2874 01:42:58,352 --> 01:43:00,962 then we're going to move on and we're actually going to check 2875 01:43:00,992 --> 01:43:02,012 another condition. 2876 01:43:02,312 --> 01:43:02,942 so I'm gonna say 2877 01:43:02,972 --> 01:43:03,751 otherwise 2878 01:43:03,781 --> 01:43:05,041 if I want pasta. 2879 01:43:05,371 --> 01:43:07,021 I order spaghetti and meatballs. 2880 01:43:07,471 --> 01:43:09,062 this is another condition. 2881 01:43:09,602 --> 01:43:11,941 if this condition is true we get the spaghetti, 2882 01:43:12,122 --> 01:43:13,381 if it's not true 2883 01:43:13,411 --> 01:43:16,021 then finally we're going to move on down here 2884 01:43:16,231 --> 01:43:19,292 and which is default to ordering the salad so 2885 01:43:19,861 --> 01:43:21,751 all three of these if statements are 2886 01:43:21,812 --> 01:43:22,891 valid if statements 2887 01:43:22,921 --> 01:43:23,431 it's just 2888 01:43:23,460 --> 01:43:26,641 they get more and more complex as we go down the list 2889 01:43:26,670 --> 01:43:27,150 so 2890 01:43:27,420 --> 01:43:28,200 hopefully that's 2891 01:43:28,230 --> 01:43:28,560 you know 2892 01:43:28,590 --> 01:43:32,730 kind of wrap your head around what if statements are we're basically specifying conditions. 2893 01:43:33,120 --> 01:43:35,790 if those conditions are true we're going to do certain things 2894 01:43:36,030 --> 01:43:38,101 and those conditions are false we can do 2895 01:43:38,130 --> 01:43:38,851 other things. 2896 01:43:38,911 --> 01:43:39,301 or 2897 01:43:39,331 --> 01:43:39,960 we can check 2898 01:43:39,990 --> 01:43:41,130 other conditions 2899 01:43:41,250 --> 01:43:45,362 aren't so let's head over to our python file and we'll start writing some actual python. 2900 01:43:46,172 --> 01:43:48,631 so in here in my app dot python file. 2901 01:43:49,201 --> 01:43:50,372 I want to create an 2902 01:43:50,401 --> 01:43:51,091 if statement 2903 01:43:51,121 --> 01:43:54,541 and I'm going to show you guys a very basic if statement in this tutorial. 2904 01:43:54,781 --> 01:43:57,812 and then in the next victoria we're going to look at some more advanced 2905 01:43:57,841 --> 01:43:58,501 if statements. 2906 01:43:58,801 --> 01:44:00,752 so what I want to do is create 2907 01:44:00,782 --> 01:44:02,582 a bully invariable. 2908 01:44:03,001 --> 01:44:07,742 so I'm gonna create a boolean variable that's going to store whether or not the user is a male. 2909 01:44:07,892 --> 01:44:09,002 so it's just going to be called 2910 01:44:09,032 --> 01:44:10,802 is underscored mail 2911 01:44:11,192 --> 01:44:13,651 and I'm gonna set this equal to true 2912 01:44:13,681 --> 01:44:14,761 because I'm a male. 2913 01:44:15,241 --> 01:44:20,251 so we have this boolean variable right and right now we haven't set equal to true. 2914 01:44:21,301 --> 01:44:22,711 I can actually use an 2915 01:44:22,741 --> 01:44:29,250 if statement to check to see what the value of this variable is and if it's true I can do something so 2916 01:44:29,610 --> 01:44:32,191 if I want to use an if statement all I have to do is just type up 2917 01:44:32,251 --> 01:44:32,791 if. 2918 01:44:33,391 --> 01:44:33,991 and then 2919 01:44:34,021 --> 01:44:35,191 I just need to type out 2920 01:44:35,221 --> 01:44:36,391 a condition. 2921 01:44:36,691 --> 01:44:37,141 so 2922 01:44:37,171 --> 01:44:39,301 basically I would have to type out like 2923 01:44:39,781 --> 01:44:42,061 something that's going to be true or false 2924 01:44:42,091 --> 01:44:42,601 like 2925 01:44:42,630 --> 01:44:43,740 for example in 2926 01:44:43,770 --> 01:44:45,870 the other page we are specifying like 2927 01:44:46,170 --> 01:44:48,390 if I'm hungry or if it's cloudy. 2928 01:44:48,570 --> 01:44:50,160 here we're just going to check to see 2929 01:44:50,189 --> 01:44:50,669 if 2930 01:44:51,060 --> 01:44:51,989 is male. 2931 01:44:52,379 --> 01:44:53,489 so in other words 2932 01:44:53,519 --> 01:44:55,169 if the person is male. 2933 01:44:55,439 --> 01:44:57,060 so remember this has to be a 2934 01:44:57,089 --> 01:44:57,419 lake 2935 01:44:57,449 --> 01:45:01,409 it has to be able to be reducible to a true or false value. 2936 01:45:01,649 --> 01:45:02,579 so in our case 2937 01:45:02,639 --> 01:45:04,649 where it is using a boolean because that's like 2938 01:45:04,679 --> 01:45:06,029 the easiest thing we can do. 2939 01:45:06,509 --> 01:45:06,959 so 2940 01:45:06,989 --> 01:45:07,439 I said 2941 01:45:07,469 --> 01:45:07,829 if 2942 01:45:07,858 --> 01:45:09,059 I specify my 2943 01:45:09,088 --> 01:45:10,769 true or false condition. 2944 01:45:11,429 --> 01:45:12,989 now I'm just type a colon. 2945 01:45:13,619 --> 01:45:14,099 and 2946 01:45:14,129 --> 01:45:16,439 what I want to do now is make a new line. 2947 01:45:16,739 --> 01:45:17,459 and so 2948 01:45:17,759 --> 01:45:21,119 anything that I put below this with an indentation 2949 01:45:21,628 --> 01:45:23,249 is actually going to be 2950 01:45:23,339 --> 01:45:26,219 executed when that conditions true so I could put 2951 01:45:26,279 --> 01:45:26,879 print 2952 01:45:27,539 --> 01:45:29,309 and down here I can just put 2953 01:45:29,789 --> 01:45:30,809 you are a male. 2954 01:45:32,249 --> 01:45:35,220 and now you'll see what happens when I run this program. 2955 01:45:35,370 --> 01:45:38,970 it's going to go down here and it's going to say you are a male. 2956 01:45:39,270 --> 01:45:41,940 but if I changed his mail to false 2957 01:45:41,970 --> 01:45:44,669 so instead of this being true I'd just change it to false. 2958 01:45:44,819 --> 01:45:46,499 now all of a sudden it's not going to 2959 01:45:46,528 --> 01:45:47,608 print anything. 2960 01:45:47,789 --> 01:45:49,739 so it's just going to be blank down here. 2961 01:45:50,039 --> 01:45:52,559 that's because this condition wasn't 2962 01:45:52,588 --> 01:45:53,128 true. 2963 01:45:53,369 --> 01:45:55,738 so anything that I put below this 2964 01:45:56,038 --> 01:45:57,568 if declaration and 2965 01:45:57,778 --> 01:45:59,788 that has an indentation like that 2966 01:46:00,088 --> 01:46:02,458 is going to be executed when the if statement 2967 01:46:02,487 --> 01:46:03,447 is true. 2968 01:46:03,807 --> 01:46:06,357 we can also use another keyword in 2969 01:46:06,387 --> 01:46:07,438 python which is called 2970 01:46:07,498 --> 01:46:08,098 else 2971 01:46:08,338 --> 01:46:10,408 and alice is basically going to be like 2972 01:46:10,468 --> 01:46:11,938 otherwise so you remember, 2973 01:46:12,147 --> 01:46:13,138 before we said 2974 01:46:13,408 --> 01:46:14,608 if it's cloudy. 2975 01:46:14,788 --> 01:46:15,988 I'll bring an umbrella, 2976 01:46:16,048 --> 01:46:17,218 otherwise 2977 01:46:17,818 --> 01:46:20,699 I'll bring sunglasses well this is going to be like our otherwise 2978 01:46:20,729 --> 01:46:22,139 so I can say down here. 2979 01:46:22,409 --> 01:46:23,069 else 2980 01:46:23,489 --> 01:46:24,059 and now 2981 01:46:24,088 --> 01:46:26,188 anything that I've put below else 2982 01:46:26,309 --> 01:46:27,539 is going to get printed out when 2983 01:46:27,569 --> 01:46:28,259 that condition 2984 01:46:28,289 --> 01:46:28,829 isn't sure 2985 01:46:28,858 --> 01:46:29,999 so long we just put 2986 01:46:30,358 --> 01:46:31,889 you are not a male. 2987 01:46:32,729 --> 01:46:33,418 so now 2988 01:46:33,628 --> 01:46:37,139 we're able to cover both of these situations for this variable. 2989 01:46:37,199 --> 01:46:39,479 if it's false we can cover that situation. 2990 01:46:39,719 --> 01:46:40,439 so it says 2991 01:46:40,469 --> 01:46:41,699 you are not a male. 2992 01:46:41,999 --> 01:46:43,049 if it's true 2993 01:46:44,039 --> 01:46:46,680 we can cover that situation as well so it'll say 2994 01:46:46,709 --> 01:46:47,790 you are a male, 2995 01:46:48,060 --> 01:46:49,050 so that's pretty cool. 2996 01:46:49,830 --> 01:46:53,130 but we can also make these more complex 2997 01:46:53,160 --> 01:46:58,891 and actually before I talk about that you can put as much code as you want inside an if statement so I could have like 2998 01:46:59,460 --> 01:47:01,410 dozens of lines of code if I wanted. 2999 01:47:02,310 --> 01:47:04,080 I'm just giving you guys are very simple example 3000 01:47:04,110 --> 01:47:04,560 so 3001 01:47:04,740 --> 01:47:08,221 why don't we make this more complex and I'm gonna add another 3002 01:47:08,250 --> 01:47:09,750 variable into the mix 3003 01:47:09,780 --> 01:47:13,500 so I'm going to add another you know boolean attribute into this mix. 3004 01:47:13,770 --> 01:47:15,210 I'm going to make another variable called 3005 01:47:15,240 --> 01:47:16,440 is tall 3006 01:47:16,830 --> 01:47:18,961 and we're gonna set this equal to true as well. 3007 01:47:19,291 --> 01:47:19,741 so 3008 01:47:19,801 --> 01:47:20,671 now I have 3009 01:47:20,701 --> 01:47:22,891 two variables in the mix. 3010 01:47:23,221 --> 01:47:27,931 let's say I wanted to write an if statement that will check both of those variables. 3011 01:47:28,201 --> 01:47:30,181 so I could write an if statement that's like 3012 01:47:30,271 --> 01:47:32,401 if their mail and their tall or 3013 01:47:32,431 --> 01:47:34,321 if they're male and they're not taller 3014 01:47:34,501 --> 01:47:36,122 if they're not mail in their tall like 3015 01:47:36,151 --> 01:47:37,622 I can write out a bunch of 3016 01:47:37,682 --> 01:47:38,522 if statements 3017 01:47:38,732 --> 01:47:39,422 to check 3018 01:47:39,752 --> 01:47:42,211 the combination of these variables 3019 01:47:42,571 --> 01:47:45,451 and so the way I can do that is by using one of 3020 01:47:45,480 --> 01:47:46,590 two key words 3021 01:47:46,620 --> 01:47:47,040 so 3022 01:47:47,220 --> 01:47:49,470 the first keyword I want to show you guys is the 3023 01:47:49,500 --> 01:47:50,460 or keyword. 3024 01:47:50,850 --> 01:47:52,500 so I can come over here and I could say 3025 01:47:52,529 --> 01:47:52,859 if 3026 01:47:52,889 --> 01:47:53,759 is male 3027 01:47:54,239 --> 01:47:54,959 or 3028 01:47:55,529 --> 01:47:56,099 is 3029 01:47:56,159 --> 01:47:56,849 underscore 3030 01:47:56,879 --> 01:47:57,449 tall. 3031 01:47:57,989 --> 01:48:02,459 and what this is basically going to do is it's going to say if the person is either male 3032 01:48:02,819 --> 01:48:03,569 or 3033 01:48:03,809 --> 01:48:05,039 if their tall, 3034 01:48:05,429 --> 01:48:07,829 then we want to do something so 3035 01:48:08,459 --> 01:48:11,880 this is only going to be true when one of these values 3036 01:48:11,940 --> 01:48:12,570 is true 3037 01:48:12,600 --> 01:48:15,209 when one or both of those values is true 3038 01:48:16,140 --> 01:48:21,359 so down here we can actually put instead of you are a male we could put you are a male 3039 01:48:21,419 --> 01:48:22,590 or tall or 3040 01:48:22,650 --> 01:48:23,070 both 3041 01:48:23,100 --> 01:48:23,939 that's going to be 3042 01:48:23,969 --> 01:48:25,139 more appropriate. 3043 01:48:25,589 --> 01:48:28,260 and then down here we would say you are 3044 01:48:30,150 --> 01:48:31,230 neither male 3045 01:48:31,260 --> 01:48:31,860 nor 3046 01:48:31,920 --> 01:48:32,460 tall 3047 01:48:32,820 --> 01:48:33,930 and that's because 3048 01:48:34,110 --> 01:48:36,660 if we execute the code inside of this else 3049 01:48:36,689 --> 01:48:37,559 that means that 3050 01:48:37,589 --> 01:48:39,719 both of these guys are false 3051 01:48:39,989 --> 01:48:40,829 rates I'm saying 3052 01:48:40,858 --> 01:48:42,868 if they're male or their tall, 3053 01:48:43,468 --> 01:48:45,178 we're going to execute whatever isn't here 3054 01:48:45,928 --> 01:48:46,648 otherwise 3055 01:48:46,678 --> 01:48:47,158 that means 3056 01:48:47,188 --> 01:48:48,178 they're neither male 3057 01:48:48,208 --> 01:48:50,608 nor tall we're just going to execute this down here so 3058 01:48:50,878 --> 01:48:52,588 misery as how this works all 3059 01:48:52,618 --> 01:48:53,458 click play. 3060 01:48:53,878 --> 01:48:58,259 and these are both true so it's going to say you are a male or tall or both. 3061 01:48:58,619 --> 01:49:00,809 if I was to set one of these to false 3062 01:49:01,648 --> 01:49:03,149 so let's set his male eagle 3063 01:49:03,179 --> 01:49:03,809 false. 3064 01:49:04,139 --> 01:49:04,799 now, 3065 01:49:05,039 --> 01:49:08,340 it's still going to say you are a male or tall or both. 3066 01:49:08,760 --> 01:49:11,040 but if I set them both equal to false. 3067 01:49:11,700 --> 01:49:13,080 now it's going to 3068 01:49:13,110 --> 01:49:14,700 say you're neither male 3069 01:49:14,760 --> 01:49:15,720 nor tall. 3070 01:49:16,080 --> 01:49:16,530 so 3071 01:49:16,560 --> 01:49:17,880 that's how the basics 3072 01:49:17,910 --> 01:49:19,860 of using the or operator. 3073 01:49:20,280 --> 01:49:22,710 and there's another operator we can use which is called 3074 01:49:22,740 --> 01:49:23,280 and 3075 01:49:23,820 --> 01:49:24,750 and basically a 3076 01:49:24,779 --> 01:49:25,529 similar to 3077 01:49:25,559 --> 01:49:26,519 or accept 3078 01:49:26,549 --> 01:49:27,569 both of these 3079 01:49:27,599 --> 01:49:29,429 conditions have to be true so 3080 01:49:29,699 --> 01:49:30,959 this is basically saying 3081 01:49:30,989 --> 01:49:32,639 if the person is male, 3082 01:49:32,999 --> 01:49:33,509 and 3083 01:49:33,539 --> 01:49:34,859 they're also tall, 3084 01:49:35,069 --> 01:49:39,149 then we're going to execute whatever's in here so we could actually change this text 3085 01:49:39,179 --> 01:49:39,869 to say 3086 01:49:40,019 --> 01:49:40,739 you are 3087 01:49:40,769 --> 01:49:41,338 a 3088 01:49:41,579 --> 01:49:42,539 tall now 3089 01:49:42,568 --> 01:49:44,279 because we know for a fact that 3090 01:49:44,789 --> 01:49:47,849 if this is getting executed that are both male and tall. 3091 01:49:48,269 --> 01:49:49,499 we can also change 3092 01:49:49,529 --> 01:49:51,149 this print statement down here, 3093 01:49:51,330 --> 01:49:53,250 this could say you are 3094 01:49:53,430 --> 01:49:53,939 either 3095 01:49:53,969 --> 01:49:56,369 not mail or not tall, 3096 01:49:56,699 --> 01:49:57,539 or both. 3097 01:49:57,629 --> 01:49:58,109 so 3098 01:49:58,979 --> 01:50:00,689 you can see it's basically just saying that 3099 01:50:00,869 --> 01:50:01,709 you're either 3100 01:50:01,739 --> 01:50:04,499 not one of them or you're not both of them so 3101 01:50:05,909 --> 01:50:07,019 we could the play button 3102 01:50:07,048 --> 01:50:09,238 and you'll see because they're both false 3103 01:50:09,268 --> 01:50:12,629 it's going to say you are either not mail or not tall or both. 3104 01:50:12,869 --> 01:50:14,279 but if I make them both 3105 01:50:14,309 --> 01:50:15,119 true, 3106 01:50:15,628 --> 01:50:16,769 now it's going to say 3107 01:50:16,798 --> 01:50:18,718 you are a tall male. 3108 01:50:20,428 --> 01:50:22,889 if I was going to make one of these faster so let's make 3109 01:50:22,918 --> 01:50:24,479 is tall false. 3110 01:50:24,659 --> 01:50:29,549 now it's not going to execute this first print statement it's going to execute the one inside of the else, 3111 01:50:29,789 --> 01:50:31,169 so to say you are either 3112 01:50:31,199 --> 01:50:32,939 not mail are not tolerable. 3113 01:50:33,299 --> 01:50:33,809 so 3114 01:50:33,838 --> 01:50:35,039 that's the basics of 3115 01:50:35,068 --> 01:50:36,059 and and or 3116 01:50:36,088 --> 01:50:36,688 and you know 3117 01:50:36,718 --> 01:50:39,599 you'll be using those a lot of them as you use your if statements, 3118 01:50:40,019 --> 01:50:41,729 but there's actually one more 3119 01:50:41,938 --> 01:50:45,179 thing we can do we can add in some more conditions 3120 01:50:45,209 --> 01:50:46,679 so up here I'm checking 3121 01:50:46,919 --> 01:50:48,750 if their mail and their tall, 3122 01:50:49,110 --> 01:50:52,650 but what if I wanted to check if their mail and they're not tall 3123 01:50:52,680 --> 01:50:54,510 so they're like a short male 3124 01:50:54,930 --> 01:50:56,160 I can use another 3125 01:50:56,190 --> 01:50:57,720 keyword in python 3126 01:50:57,780 --> 01:50:58,260 called 3127 01:50:58,560 --> 01:50:59,310 else f 3128 01:50:59,790 --> 01:51:01,020 or really it's just typed out 3129 01:51:01,050 --> 01:51:01,530 yes 3130 01:51:01,560 --> 01:51:02,070 I am, 3131 01:51:02,340 --> 01:51:03,690 and it stands for lcds. 3132 01:51:04,080 --> 01:51:06,960 and after this we can put another condition so 3133 01:51:07,320 --> 01:51:09,360 over here I'm going to check to see if their 3134 01:51:09,450 --> 01:51:11,371 male and they're not tall, 3135 01:51:11,880 --> 01:51:13,140 so I'm gonna say else if 3136 01:51:13,350 --> 01:51:13,830 mayor 3137 01:51:13,859 --> 01:51:14,669 ismail, 3138 01:51:15,449 --> 01:51:16,079 and 3139 01:51:16,169 --> 01:51:17,249 now I can type in 3140 01:51:17,279 --> 01:51:18,419 not tall. 3141 01:51:18,479 --> 01:51:20,100 and the way I can do that is by saying 3142 01:51:20,129 --> 01:51:20,790 not 3143 01:51:21,030 --> 01:51:21,150 an 3144 01:51:21,180 --> 01:51:22,590 open and close parentheses 3145 01:51:22,770 --> 01:51:23,250 and saying 3146 01:51:23,280 --> 01:51:24,240 is tall 3147 01:51:24,600 --> 01:51:27,089 and basically when I use this not function, 3148 01:51:27,270 --> 01:51:28,650 it's going to negate 3149 01:51:28,680 --> 01:51:31,679 whatever is inside of here so if this was true, 3150 01:51:31,919 --> 01:51:35,489 it's going to make it false and if this was false it's going to make it true. 3151 01:51:35,789 --> 01:51:38,429 so basically that'll tell us whether or not their tall 3152 01:51:39,659 --> 01:51:41,580 and that I'm going to use a colon and now 3153 01:51:41,609 --> 01:51:42,599 down here 3154 01:51:43,049 --> 01:51:47,819 inside of here were basically just going to type out any of the code that we want to happen 3155 01:51:48,060 --> 01:51:49,529 when this condition is true 3156 01:51:50,309 --> 01:51:52,290 so down here we can just print out 3157 01:51:53,549 --> 01:51:55,229 you are a short 3158 01:51:55,259 --> 01:51:55,919 male, 3159 01:51:56,519 --> 01:51:57,059 and 3160 01:51:57,269 --> 01:52:03,059 there's actually one more condition that we want to check for which would be if they're not mail and their tall, 3161 01:52:03,329 --> 01:52:04,919 so we can make one more 3162 01:52:04,979 --> 01:52:05,759 lcs. 3163 01:52:06,749 --> 01:52:08,489 and I'm actually just gonna copy this guy 3164 01:52:08,879 --> 01:52:10,320 and we'll paste it down here. 3165 01:52:11,070 --> 01:52:12,750 so I want to say, 3166 01:52:13,230 --> 01:52:13,771 if 3167 01:52:14,161 --> 01:52:14,940 not, 3168 01:52:15,090 --> 01:52:15,900 is male 3169 01:52:17,640 --> 01:52:18,270 and 3170 01:52:18,630 --> 01:52:19,560 his tall, 3171 01:52:19,920 --> 01:52:22,110 so now we're checking to see if their mail 3172 01:52:22,170 --> 01:52:22,800 and 3173 01:52:23,250 --> 01:52:25,919 are either not now and their tall so here we could say 3174 01:52:26,250 --> 01:52:26,850 you are 3175 01:52:26,879 --> 01:52:27,389 a 3176 01:52:27,419 --> 01:52:28,229 you are 3177 01:52:28,769 --> 01:52:29,759 not a 3178 01:52:30,029 --> 01:52:30,539 male 3179 01:52:30,899 --> 01:52:31,859 but are tall. 3180 01:52:32,369 --> 01:52:32,969 so 3181 01:52:33,029 --> 01:52:34,619 essentially here we have an 3182 01:52:34,648 --> 01:52:36,059 if statement that's going to cover 3183 01:52:36,088 --> 01:52:37,679 every single condition 3184 01:52:37,949 --> 01:52:39,688 for these two variables so 3185 01:52:40,019 --> 01:52:43,438 in every single situation of the two values of these variables 3186 01:52:43,468 --> 01:52:45,778 were going to be able to print something out for it so 3187 01:52:46,019 --> 01:52:47,669 if I mean both of these true 3188 01:52:48,089 --> 01:52:49,500 it's basically going to tell us. 3189 01:52:49,589 --> 01:52:51,000 you are a tall male 3190 01:52:51,419 --> 01:52:52,049 if I make 3191 01:52:52,109 --> 01:52:53,669 is male false 3192 01:52:54,060 --> 01:52:55,379 it's going to tell us. 3193 01:52:55,949 --> 01:52:57,929 you are not a male butter tall 3194 01:52:58,409 --> 01:53:00,359 if I made is mailed true 3195 01:53:01,349 --> 01:53:03,209 and is tall false, 3196 01:53:04,499 --> 01:53:05,129 then 3197 01:53:05,219 --> 01:53:07,079 it's going to tell us you are a short male 3198 01:53:07,409 --> 01:53:09,538 and if I made both of these false 3199 01:53:10,288 --> 01:53:11,548 it's going to tell us 3200 01:53:11,608 --> 01:53:13,018 you are either not 3201 01:53:13,198 --> 01:53:16,678 male or not taller both and actually we need to change this so this should say 3202 01:53:17,848 --> 01:53:19,918 you are not a male 3203 01:53:19,978 --> 01:53:23,068 and not tall so that would be a better print out 3204 01:53:23,608 --> 01:53:24,868 for that situation so 3205 01:53:25,288 --> 01:53:26,968 you basically see how we can use 3206 01:53:27,028 --> 01:53:27,718 ifs 3207 01:53:27,868 --> 01:53:28,798 osoph's 3208 01:53:28,828 --> 01:53:29,278 and 3209 01:53:29,308 --> 01:53:30,897 else in order to 3210 01:53:31,527 --> 01:53:33,267 how I programmed to make decisions 3211 01:53:33,477 --> 01:53:34,768 and really to respond 3212 01:53:34,797 --> 01:53:36,657 to the different data in our programs. 3213 01:53:36,957 --> 01:53:40,167 so unable to respond to every combination 3214 01:53:40,497 --> 01:53:42,207 of the values for these two 3215 01:53:42,236 --> 01:53:44,307 variables and that's really cool so 3216 01:53:44,727 --> 01:53:48,057 in this example we were just using simple boolean variables 3217 01:53:48,086 --> 01:53:49,646 but in the next tutorial, 3218 01:53:49,946 --> 01:53:54,326 I'll show you guys how you can actually use something called comparison operators. 3219 01:53:54,566 --> 01:53:57,685 so we could compare like two numbers or two strings 3220 01:53:57,955 --> 01:54:00,175 and we could use those as are conditions 3221 01:54:00,205 --> 01:54:00,505 but 3222 01:54:00,685 --> 01:54:04,165 for now I think this is a good introduction into if statements. 3223 01:54:04,555 --> 01:54:06,565 so I'll see you guys in the next tutorial, 3224 01:54:11,036 --> 01:54:13,525 in this tutorial on a talk to you some more about 3225 01:54:13,555 --> 01:54:14,425 if statements 3226 01:54:14,455 --> 01:54:15,416 in python. 3227 01:54:15,746 --> 01:54:19,376 more specifically we're going to be looking at using comparisons 3228 01:54:19,706 --> 01:54:21,416 inside of our if statement so 3229 01:54:21,626 --> 01:54:23,096 if you're following along with the course 3230 01:54:23,126 --> 01:54:24,836 in the last tutorial, 3231 01:54:24,896 --> 01:54:26,096 I talked to you guys about 3232 01:54:26,246 --> 01:54:30,416 just the basics of if statements and we used a couple different boolean variables 3233 01:54:30,686 --> 01:54:34,736 and depending on the diaries of those bullion's we're able to do certain things 3234 01:54:35,156 --> 01:54:40,677 in this tutorial we're going to look at another way to use if statements which is with comparison so, 3235 01:54:41,007 --> 01:54:44,816 instead of just using boolean values we can actually compare 3236 01:54:44,966 --> 01:54:48,026 different value silly I could compare a couple of numbers like 3237 01:54:48,056 --> 01:54:49,556 compare couple strings 3238 01:54:49,976 --> 01:54:53,606 and depending on the results of those comparisons we can do 3239 01:54:53,636 --> 01:54:54,836 certain things so 3240 01:54:55,286 --> 01:55:00,747 this is going to be pretty cool and this is really going to give you guys a full understanding of what you can do with if statements so 3241 01:55:01,347 --> 01:55:03,566 for this tutorial I actually want to create 3242 01:55:03,596 --> 01:55:04,616 a python 3243 01:55:04,646 --> 01:55:05,306 function 3244 01:55:05,696 --> 01:55:07,497 and this function is going to 3245 01:55:07,526 --> 01:55:10,886 give us the maximum number that we pass into it so 3246 01:55:11,276 --> 01:55:14,486 this function is going to take three parameters as input, 3247 01:55:14,726 --> 01:55:15,716 and it's going to print 3248 01:55:15,746 --> 01:55:16,196 out 3249 01:55:16,466 --> 01:55:16,976 the 3250 01:55:17,036 --> 01:55:17,576 biggest 3251 01:55:17,606 --> 01:55:19,196 number that we give it so 3252 01:55:19,886 --> 01:55:21,896 let's create this function I was going to say, 3253 01:55:22,136 --> 01:55:22,796 death. 3254 01:55:23,486 --> 01:55:25,017 and I'm just going to call it max 3255 01:55:25,047 --> 01:55:25,677 numb 3256 01:55:26,247 --> 01:55:26,727 and 3257 01:55:26,907 --> 01:55:32,036 inside of these parentheses I'm going to specify that I want three parameters as input. 3258 01:55:32,336 --> 01:55:33,086 someone to say 3259 01:55:33,116 --> 01:55:33,926 number one, 3260 01:55:34,076 --> 01:55:36,146 number two and number three. 3261 01:55:36,956 --> 01:55:37,646 so basically 3262 01:55:37,675 --> 01:55:39,595 we're passing it three numbers and 3263 01:55:39,625 --> 01:55:40,825 this function will 3264 01:55:40,885 --> 01:55:41,875 return. 3265 01:55:41,965 --> 01:55:42,925 the largest 3266 01:55:42,955 --> 01:55:43,825 of the three. 3267 01:55:44,275 --> 01:55:47,516 so in order to figure out which of these numbers is that the largest 3268 01:55:47,545 --> 01:55:48,716 we're going to have to use an 3269 01:55:48,776 --> 01:55:49,496 if statement. 3270 01:55:49,826 --> 01:55:50,696 so I can say 3271 01:55:50,756 --> 01:55:51,296 if. 3272 01:55:51,776 --> 01:55:52,136 and 3273 01:55:52,166 --> 01:55:54,056 over here I need to specify 3274 01:55:54,085 --> 01:55:55,105 a condition. 3275 01:55:55,226 --> 01:55:57,596 so I need to put like a true or false 3276 01:55:57,625 --> 01:55:58,286 value. 3277 01:55:58,496 --> 01:56:03,535 and so what we can actually do is we can compare these different numbers so I could say if 3278 01:56:03,835 --> 01:56:04,735 num one 3279 01:56:05,335 --> 01:56:07,225 is greater than or equal to 3280 01:56:07,495 --> 01:56:07,885 number 3281 01:56:07,915 --> 01:56:08,395 two, 3282 01:56:09,745 --> 01:56:10,465 and 3283 01:56:10,975 --> 01:56:11,875 number one 3284 01:56:12,116 --> 01:56:13,676 is greater than or equal to 3285 01:56:13,706 --> 01:56:14,815 numb three. 3286 01:56:15,565 --> 01:56:17,545 so basically what I'm doing here 3287 01:56:17,635 --> 01:56:20,456 is I'm comparing these different number so I'm saying if 3288 01:56:20,846 --> 01:56:23,516 the first number is greater than or equal to the second number 3289 01:56:23,876 --> 01:56:24,176 and 3290 01:56:24,206 --> 01:56:25,886 this is a comparison so 3291 01:56:26,126 --> 01:56:27,146 when you think about it 3292 01:56:27,267 --> 01:56:31,917 when we compare these two numbers we're going to end up with a true or false value 3293 01:56:32,157 --> 01:56:32,577 write 3294 01:56:32,667 --> 01:56:36,267 num one is either greater than or equal to numb to or it's not 3295 01:56:36,297 --> 01:56:37,946 it's actually a boolean 3296 01:56:37,976 --> 01:56:38,426 value 3297 01:56:38,456 --> 01:56:39,566 rights either true 3298 01:56:39,807 --> 01:56:40,767 or it's false. 3299 01:56:40,917 --> 01:56:42,207 same thing over here. 3300 01:56:42,477 --> 01:56:44,426 the result of this comparison 3301 01:56:44,606 --> 01:56:45,717 is either true 3302 01:56:45,897 --> 01:56:46,917 or it's false 3303 01:56:47,067 --> 01:56:50,427 so technically I'm putting a true or false value in there. 3304 01:56:50,667 --> 01:56:54,807 I'm just getting that true or false value by using a comparison. 3305 01:56:55,347 --> 01:56:58,827 and you'll notice over here we're using something called a comparison 3306 01:56:58,887 --> 01:56:59,697 operator. 3307 01:57:00,087 --> 01:57:01,527 and basically this is just like 3308 01:57:01,557 --> 01:57:03,296 how we want to compare them so 3309 01:57:03,626 --> 01:57:06,656 we're saying like greater than or equal to in this case 3310 01:57:07,346 --> 01:57:08,336 so down here. 3311 01:57:08,816 --> 01:57:09,207 if 3312 01:57:09,236 --> 01:57:11,366 this whole condition is true 3313 01:57:11,546 --> 01:57:15,206 in other words of the results of these two comparisons end up being true, 3314 01:57:15,686 --> 01:57:17,937 then we know that none one is the biggest 3315 01:57:17,966 --> 01:57:19,286 so I can just return 3316 01:57:19,316 --> 01:57:19,946 num one 3317 01:57:20,006 --> 01:57:21,296 I can say return 3318 01:57:21,356 --> 01:57:21,836 no 3319 01:57:21,866 --> 01:57:22,316 one 3320 01:57:22,346 --> 01:57:25,556 but we also want to check some other condition so I can say 3321 01:57:25,586 --> 01:57:26,186 alef 3322 01:57:26,666 --> 01:57:27,086 and 3323 01:57:27,116 --> 01:57:30,026 now I want to do some other comparison so I'm going to say, 3324 01:57:30,146 --> 01:57:30,956 else if 3325 01:57:31,166 --> 01:57:31,556 none 3326 01:57:31,586 --> 01:57:32,126 too 3327 01:57:32,426 --> 01:57:33,625 is greater than or equal to 3328 01:57:33,655 --> 01:57:34,465 number one 3329 01:57:35,035 --> 01:57:35,605 and 3330 01:57:35,695 --> 01:57:36,055 number 3331 01:57:36,084 --> 01:57:36,504 two 3332 01:57:36,534 --> 01:57:37,884 is greater than or equal to 3333 01:57:37,914 --> 01:57:38,333 number 3334 01:57:38,363 --> 01:57:38,933 three. 3335 01:57:39,503 --> 01:57:44,663 so I'm doing essentially what I did up here except for none too so again I'm comparing 3336 01:57:45,022 --> 01:57:49,223 these different numbers and this is gonna end up being a true or false value, 3337 01:57:49,463 --> 01:57:51,653 depending on the result of the comparison 3338 01:57:52,133 --> 01:57:52,943 so 3339 01:57:53,483 --> 01:57:54,503 down here again 3340 01:57:54,533 --> 01:57:55,192 we can just 3341 01:57:55,433 --> 01:57:56,843 returned home to 3342 01:57:57,083 --> 01:58:00,504 because if all this is true that means we're going to end up returning 3343 01:58:00,594 --> 01:58:01,374 none too. 3344 01:58:01,943 --> 01:58:03,923 and then finally we can just say else 3345 01:58:03,953 --> 01:58:04,583 so 3346 01:58:05,693 --> 01:58:05,933 if 3347 01:58:05,963 --> 01:58:09,114 num one isn't the biggest and numb to isn't the biggest then 3348 01:58:09,144 --> 01:58:10,794 we can pretty much assume that 3349 01:58:11,034 --> 01:58:13,435 number three is the biggest so 3350 01:58:13,675 --> 01:58:14,665 now we have 3351 01:58:14,695 --> 01:58:15,774 our function 3352 01:58:16,074 --> 01:58:16,524 so 3353 01:58:16,584 --> 01:58:17,184 down here 3354 01:58:17,214 --> 01:58:19,075 I'm actually just going to call this function, 3355 01:58:19,945 --> 01:58:21,085 so I'm just going to say, 3356 01:58:21,205 --> 01:58:23,935 actually I'll print out the results I'll say max 3357 01:58:24,025 --> 01:58:24,655 numb 3358 01:58:25,045 --> 01:58:27,265 and will pass in like three four or five 3359 01:58:27,595 --> 01:58:28,225 so 3360 01:58:28,285 --> 01:58:31,435 we're basically calling that new function that we just made. 3361 01:58:33,024 --> 01:58:33,625 and 3362 01:58:33,654 --> 01:58:35,185 I'm going to go ahead and run this program. 3363 01:58:35,694 --> 01:58:37,074 so you can see down here 3364 01:58:37,104 --> 01:58:37,884 in the output 3365 01:58:37,914 --> 01:58:40,494 we printed out five because that was the biggest. 3366 01:58:40,824 --> 01:58:44,334 if I was to change this middle onto the biggest so we make the middle on forty 3367 01:58:44,694 --> 01:58:46,224 now it will be able to 3368 01:58:46,374 --> 01:58:49,854 take on that situation and finally I can make this like three hundred 3369 01:58:50,273 --> 01:58:50,813 and 3370 01:58:50,934 --> 01:58:52,403 it'll be able to handle that so 3371 01:58:52,583 --> 01:58:56,933 no matter which number numb one number two or number three ends up being the biggest 3372 01:58:57,083 --> 01:58:57,293 it's 3373 01:58:57,323 --> 01:58:58,073 able to 3374 01:58:58,103 --> 01:58:59,482 tell us without a problem. 3375 01:59:00,142 --> 01:59:00,622 so 3376 01:59:00,652 --> 01:59:06,652 these comparisons are a really really really common way to make if statements and a lot of times 3377 01:59:06,862 --> 01:59:09,442 you're gonna want to be comparing different values 3378 01:59:09,682 --> 01:59:10,762 inside of python, 3379 01:59:10,972 --> 01:59:12,592 so over here we're comparing 3380 01:59:12,652 --> 01:59:13,552 numbers. 3381 01:59:13,672 --> 01:59:15,862 but we could also compare strings 3382 01:59:15,892 --> 01:59:16,522 so I can 3383 01:59:16,552 --> 01:59:18,232 easily make these both like 3384 01:59:18,562 --> 01:59:19,132 you know I can 3385 01:59:19,162 --> 01:59:20,542 make this like dog 3386 01:59:20,841 --> 01:59:22,551 and I can make this dog 3387 01:59:23,001 --> 01:59:24,082 and I could say 3388 01:59:24,111 --> 01:59:25,731 a different operator so I could say like 3389 01:59:25,761 --> 01:59:29,181 this double equal sign would mean equal so I can basically say like 3390 01:59:29,451 --> 01:59:32,331 if this string is equal to that string. 3391 01:59:32,690 --> 01:59:34,670 you can basically like compare 3392 01:59:34,700 --> 01:59:37,880 all different data types see nike compare in numbers strings. 3393 01:59:38,121 --> 01:59:39,201 you can also compare 3394 01:59:39,230 --> 01:59:40,041 bullion's 3395 01:59:40,880 --> 01:59:41,300 so 3396 01:59:41,541 --> 01:59:42,051 once again 3397 01:59:42,081 --> 01:59:42,891 these are 3398 01:59:42,920 --> 01:59:43,851 comparison 3399 01:59:43,880 --> 01:59:45,020 operators and 3400 01:59:45,200 --> 01:59:49,851 this one is greater than or equal to but there's a bunch of other comparison operators we can use so 3401 01:59:50,601 --> 01:59:53,271 the most basic is just going to be a double equal sign 3402 01:59:53,300 --> 01:59:56,450 and not basically checks to see if the two values are 3403 01:59:56,480 --> 01:59:56,930 equal 3404 01:59:56,960 --> 01:59:57,831 so it'll say like, 3405 01:59:58,101 --> 01:59:58,521 if 3406 01:59:58,670 --> 02:00:00,381 number one is equal to 3407 02:00:00,411 --> 02:00:01,190 number two, 3408 02:00:01,490 --> 02:00:03,530 we can also say not equals 3409 02:00:03,830 --> 02:00:06,770 and this exclamation point will basically mean 3410 02:00:06,950 --> 02:00:08,240 not equal so it's. 3411 02:00:08,510 --> 02:00:10,760 if no one is not equal to 3412 02:00:10,790 --> 02:00:11,600 none too. 3413 02:00:12,350 --> 02:00:13,760 we also have greater than, 3414 02:00:14,030 --> 02:00:14,900 less than, 3415 02:00:15,561 --> 02:00:16,971 greater than or equal to 3416 02:00:17,361 --> 02:00:18,681 less than or equal to. 3417 02:00:18,861 --> 02:00:21,411 and those are kind of all of the operators 3418 02:00:21,441 --> 02:00:22,791 are all the you know the basic 3419 02:00:23,121 --> 02:00:26,241 comparison operators that are going to be using in python so 3420 02:00:26,841 --> 02:00:31,041 using comparisons is really awesome and there's going to be tons and tons of situations 3421 02:00:31,071 --> 02:00:33,951 inside a python where you're going to want to compare different values 3422 02:00:33,980 --> 02:00:34,400 so 3423 02:00:34,820 --> 02:00:36,591 these can be extremely useful 3424 02:00:40,401 --> 02:00:40,701 in this 3425 02:00:40,731 --> 02:00:44,871 tutorial on how to talk to you guys about building a calculator in python. 3426 02:00:45,351 --> 02:00:51,982 now having been fallen along with this course you'll know that in the beginning of the course we actually created a very basic calculator. 3427 02:00:52,462 --> 02:00:59,002 basically the user could just enter into numbers and our calculator would add the numbers together and spit out the answer 3428 02:00:59,572 --> 02:01:04,072 in this is horrible honorary guys how to build a more advanced calculator so 3429 02:01:04,372 --> 02:01:08,843 this calculator is going to be able to perform all of the basic arithmetic 3430 02:01:08,873 --> 02:01:12,113 operations so we can add subtract multiply and divide 3431 02:01:12,593 --> 02:01:16,553 and were actually allow the user to specify which one of those they want to do, 3432 02:01:16,973 --> 02:01:18,684 so the user will enter in a number. 3433 02:01:19,134 --> 02:01:23,094 they'll enter in whatever operator they want to use so plus minus 3434 02:01:23,124 --> 02:01:23,813 divide 3435 02:01:23,963 --> 02:01:24,653 mocked by, 3436 02:01:25,193 --> 02:01:28,523 and then I'll enter in the second number and will perform the operation 3437 02:01:28,553 --> 02:01:30,114 for them says it can be pretty cool. 3438 02:01:30,354 --> 02:01:32,245 and it's going to show you how we can use 3439 02:01:32,995 --> 02:01:33,805 if statements 3440 02:01:33,834 --> 02:01:34,435 in like a 3441 02:01:34,465 --> 02:01:35,755 practical application 3442 02:01:35,785 --> 02:01:36,745 so let's get started. 3443 02:01:37,015 --> 02:01:38,275 the first thing we want to do 3444 02:01:38,305 --> 02:01:39,535 is get 3445 02:01:39,685 --> 02:01:41,695 input from the user so I'm going to create 3446 02:01:41,905 --> 02:01:45,534 three variables one for the first number one for the second number and 3447 02:01:45,774 --> 02:01:46,854 one for the operator 3448 02:01:46,884 --> 02:01:49,853 and will basically store the values that the user inputs 3449 02:01:50,093 --> 02:01:52,854 into those variables so the first one will just be number one 3450 02:01:53,994 --> 02:01:55,615 and I'm gonna set this equal to 3451 02:01:55,645 --> 02:01:56,334 input 3452 02:01:56,725 --> 02:01:58,315 and we're going to give this a prompts also 3453 02:01:58,345 --> 02:01:59,005 enter 3454 02:01:59,455 --> 02:02:00,025 first 3455 02:02:00,085 --> 02:02:00,715 number 3456 02:02:02,065 --> 02:02:05,935 and here's actually the thing is whatever the user 3457 02:02:05,965 --> 02:02:06,685 enters. 3458 02:02:06,925 --> 02:02:07,556 we're going to want to 3459 02:02:07,585 --> 02:02:09,325 convert it into a number 3460 02:02:09,685 --> 02:02:10,105 so 3461 02:02:10,135 --> 02:02:17,035 generally in python when we get input from the user no matter what they put in it just gets converted into a string. 3462 02:02:17,485 --> 02:02:20,036 but we don't want a string because we're going to have to 3463 02:02:20,065 --> 02:02:23,246 be adding or subtracting and multiplying these numbers together ? 3464 02:02:23,666 --> 02:02:25,526 so whenever they enter in 3465 02:02:25,556 --> 02:02:27,866 the number I just want to immediately convert it 3466 02:02:27,896 --> 02:02:28,616 to 3467 02:02:28,706 --> 02:02:31,766 an actual like number data type instead of a string. 3468 02:02:32,156 --> 02:02:34,466 so what I can do is I can actually say float. 3469 02:02:34,736 --> 02:02:36,056 and I can surround 3470 02:02:36,086 --> 02:02:37,976 this entire input tag 3471 02:02:38,216 --> 02:02:39,447 with parentheses. 3472 02:02:39,567 --> 02:02:40,287 and now, 3473 02:02:40,407 --> 02:02:43,796 what this is gonna do is it's going to immediately convert 3474 02:02:43,977 --> 02:02:45,837 whatever the user inputs 3475 02:02:46,017 --> 02:02:46,947 into a float. 3476 02:02:47,247 --> 02:02:51,117 now that's going to mean that they're going to have to insert a number otherwise we'll get an error 3477 02:02:51,146 --> 02:02:51,537 but 3478 02:02:51,896 --> 02:02:55,018 for the most part this should work out for us so I'm actually just going to 3479 02:02:55,047 --> 02:02:56,188 copy their sky 3480 02:02:57,208 --> 02:02:58,587 and we'll go ahead and 3481 02:02:58,828 --> 02:03:00,208 paste it over here, 3482 02:03:00,627 --> 02:03:02,278 and we'll paste it one more time so we 3483 02:03:02,308 --> 02:03:05,218 were basically just try to get three pieces of input from 3484 02:03:05,248 --> 02:03:05,877 the user. 3485 02:03:06,777 --> 02:03:10,048 so the second thing we want to get is the operator so I'm just gonna say 3486 02:03:10,108 --> 02:03:10,888 oh p 3487 02:03:11,368 --> 02:03:14,547 for operator and actually get rid of this flow 3488 02:03:14,577 --> 02:03:15,147 because 3489 02:03:15,177 --> 02:03:16,827 we want to keep this as a string. 3490 02:03:17,277 --> 02:03:18,057 and I'll just say 3491 02:03:18,087 --> 02:03:18,777 enter 3492 02:03:20,097 --> 02:03:21,657 operator so it's going to be like. 3493 02:03:21,717 --> 02:03:22,828 plus minus 3494 02:03:23,127 --> 02:03:24,478 multiplication whatever. 3495 02:03:25,018 --> 02:03:26,967 and then finally down here we'll get numb 3496 02:03:26,997 --> 02:03:27,537 to 3497 02:03:27,567 --> 02:03:30,477 and again we're going to want to convert this to a float, 3498 02:03:30,747 --> 02:03:31,587 so I'll say 3499 02:03:31,828 --> 02:03:33,208 enter second number 3500 02:03:33,478 --> 02:03:33,958 so 3501 02:03:34,138 --> 02:03:37,528 now basically what we're doing is we're getting the first number we're getting the 3502 02:03:37,558 --> 02:03:40,918 operator and we're getting the second number from the user. 3503 02:03:41,218 --> 02:03:41,878 so 3504 02:03:42,148 --> 02:03:45,208 what we need to do now is we need to figure out 3505 02:03:45,237 --> 02:03:46,917 what is inside of this 3506 02:03:47,037 --> 02:03:47,787 o p. 3507 02:03:47,847 --> 02:03:49,467 in other words we need to figure out what 3508 02:03:49,497 --> 02:03:50,336 operator. 3509 02:03:50,577 --> 02:03:51,627 the user was 3510 02:03:51,657 --> 02:03:55,406 trying to do so are they trying to do additional they're trying to do a subtraction like 3511 02:03:55,646 --> 02:03:56,697 we want to figure that out, 3512 02:03:56,757 --> 02:03:57,297 so 3513 02:03:58,047 --> 02:03:58,678 we can use an 3514 02:03:58,708 --> 02:03:59,547 if statement 3515 02:03:59,907 --> 02:04:00,867 in order to 3516 02:04:00,897 --> 02:04:02,908 figure that out so I'm gonna come down here 3517 02:04:02,968 --> 02:04:03,538 and 3518 02:04:03,718 --> 02:04:06,237 I'm basically just going to create an if statement song and say 3519 02:04:06,267 --> 02:04:06,747 if. 3520 02:04:07,437 --> 02:04:07,917 and 3521 02:04:08,007 --> 02:04:13,708 we want to check a condition so I'm basically going to check to see if this operator is equal to 3522 02:04:14,218 --> 02:04:14,998 a plus sign 3523 02:04:15,027 --> 02:04:16,138 so I can say if 3524 02:04:16,288 --> 02:04:17,008 o p 3525 02:04:17,488 --> 02:04:18,328 equals 3526 02:04:18,778 --> 02:04:19,468 plus sign 3527 02:04:20,338 --> 02:04:22,737 and now if the operator is equal to a plus sign. 3528 02:04:22,797 --> 02:04:23,668 I'm just going to print 3529 02:04:23,698 --> 02:04:24,178 out 3530 02:04:25,378 --> 02:04:26,218 number one 3531 02:04:26,248 --> 02:04:26,908 plus 3532 02:04:26,968 --> 02:04:27,748 none too. 3533 02:04:27,838 --> 02:04:31,377 but let's say that instead of a plus sign they entered in something else so we can say 3534 02:04:31,407 --> 02:04:32,367 l f 3535 02:04:32,787 --> 02:04:33,447 o p 3536 02:04:33,477 --> 02:04:34,527 is equal to. 3537 02:04:34,767 --> 02:04:36,688 and now we'll check if it's a minus sign. 3538 02:04:37,558 --> 02:04:38,999 and so here or just print 3539 02:04:39,148 --> 02:04:39,898 num one 3540 02:04:39,928 --> 02:04:40,648 minus 3541 02:04:40,678 --> 02:04:41,398 nothing too. 3542 02:04:42,418 --> 02:04:44,158 and I actually forgot to put a colon here. 3543 02:04:44,728 --> 02:04:47,817 so we can just do these for everything so now we can say. 3544 02:04:47,877 --> 02:04:48,688 lf 3545 02:04:49,288 --> 02:04:50,098 opie 3546 02:04:50,548 --> 02:04:51,688 is equal to 3547 02:04:52,588 --> 02:04:53,488 division 3548 02:04:53,788 --> 02:04:57,297 and here we'll just divide the two numbers so I can print out 3549 02:04:57,597 --> 02:04:59,847 number one divided by numb to it, 3550 02:05:00,597 --> 02:05:04,137 and finally we'll do the same thing for multiplication so I'll say 3551 02:05:04,227 --> 02:05:04,617 l 3552 02:05:04,646 --> 02:05:05,247 if 3553 02:05:05,816 --> 02:05:06,626 opie 3554 02:05:07,077 --> 02:05:07,197 is 3555 02:05:07,227 --> 02:05:08,396 equal to 3556 02:05:08,787 --> 02:05:09,777 astronauts 3557 02:05:10,167 --> 02:05:11,247 and was print 3558 02:05:11,307 --> 02:05:11,937 out 3559 02:05:12,597 --> 02:05:14,097 number one times 3560 02:05:14,127 --> 02:05:14,937 none too. 3561 02:05:15,627 --> 02:05:18,328 so basically over here we have every 3562 02:05:18,357 --> 02:05:19,407 you know condition. 3563 02:05:19,707 --> 02:05:21,117 but I also want to put in an 3564 02:05:21,146 --> 02:05:21,477 else 3565 02:05:21,506 --> 02:05:22,466 statement so 3566 02:05:22,586 --> 02:05:25,556 in the case that the user enters in an operation. 3567 02:05:25,855 --> 02:05:26,365 that's 3568 02:05:26,395 --> 02:05:27,025 not 3569 02:05:27,055 --> 02:05:31,405 like one of the four that we specified up here I just want to throw an error sums usa 3570 02:05:31,465 --> 02:05:32,155 opie 3571 02:05:32,215 --> 02:05:33,055 are actually we just say 3572 02:05:33,085 --> 02:05:33,625 else 3573 02:05:33,925 --> 02:05:35,695 and here with this print out lake 3574 02:05:36,835 --> 02:05:37,735 invalid 3575 02:05:38,425 --> 02:05:39,205 operator. 3576 02:05:40,345 --> 02:05:40,675 so 3577 02:05:40,705 --> 02:05:45,354 this if statement should give us everything we want basically I'm just checking to see 3578 02:05:45,654 --> 02:05:46,314 if it's 3579 02:05:46,374 --> 02:05:50,363 equal to a plus sign a minus sign the division sign or a multiplication sign ! 3580 02:05:50,723 --> 02:05:54,204 depending on which one is equal to we'll do a different operation so 3581 02:05:54,233 --> 02:05:56,994 let's go ahead and run this and see how we do so 3582 02:05:57,324 --> 02:05:58,793 I'm going to run this program 3583 02:06:00,233 --> 02:06:03,624 and it says enter first number let's enter five 3584 02:06:04,614 --> 02:06:06,534 enter an operator so why don't we just 3585 02:06:06,563 --> 02:06:07,643 do addition 3586 02:06:08,093 --> 02:06:10,883 and enter a second numbers do twenty three. 3587 02:06:11,363 --> 02:06:11,903 so now 3588 02:06:11,933 --> 02:06:14,244 it prints out the answer twenty eight so 3589 02:06:14,484 --> 02:06:15,954 our calculator actually works 3590 02:06:15,984 --> 02:06:17,454 let's try another 3591 02:06:17,514 --> 02:06:19,075 operator just to make sure. 3592 02:06:19,525 --> 02:06:21,085 so it would be six 3593 02:06:21,115 --> 02:06:23,185 and y we multiply it 3594 02:06:23,214 --> 02:06:25,224 by I don't know five point 3595 02:06:25,254 --> 02:06:26,094 to three. 3596 02:06:27,084 --> 02:06:31,344 so now we go off and we do the multiplication and looks like we got our answer so 3597 02:06:31,614 --> 02:06:33,563 our calculator seems to be working and so 3598 02:06:33,773 --> 02:06:37,224 basically all we did was we got the input from the user. 3599 02:06:37,434 --> 02:06:38,604 and then we used 3600 02:06:38,693 --> 02:06:40,493 if statements to figure out 3601 02:06:40,523 --> 02:06:45,323 what they wanted to do right so we could check to see if they want an edition we could check to see 3602 02:06:45,563 --> 02:06:46,673 if they wanted subtraction 3603 02:06:46,703 --> 02:06:48,053 division and multiplication. 3604 02:06:48,383 --> 02:06:51,083 and we can also check to see if they entered in an invalid 3605 02:06:51,113 --> 02:06:54,022 operator so actually why don't we try that too. 3606 02:06:55,493 --> 02:06:57,233 so enter it in like five 3607 02:06:57,263 --> 02:06:58,973 and now what does enter unlike 3608 02:06:59,633 --> 02:07:01,673 an open or close parentheses and 3609 02:07:01,703 --> 02:07:02,333 four, 3610 02:07:02,603 --> 02:07:03,684 so you can see here it's 3611 02:07:03,713 --> 02:07:04,463 able to 3612 02:07:04,493 --> 02:07:07,104 tell like the program smart enough to know that 3613 02:07:07,374 --> 02:07:09,144 that's not a valid operator so 3614 02:07:09,684 --> 02:07:16,583 these if statements can be really powerful and we can use them in combination with getting the user inputs to create a little calculator. 3615 02:07:20,393 --> 02:07:24,983 in this tutorial on hitachi guys by using dictionaries in python. 3616 02:07:25,403 --> 02:07:30,863 now a dictionary is a special structure in python which allows us to store information 3617 02:07:31,163 --> 02:07:31,883 in what are called 3618 02:07:31,913 --> 02:07:32,542 key 3619 02:07:32,632 --> 02:07:33,982 value pairs. 3620 02:07:34,402 --> 02:07:37,372 so essentially I can just create a bunch of these different 3621 02:07:37,401 --> 02:07:38,721 key value pairs. 3622 02:07:38,991 --> 02:07:39,321 and then 3623 02:07:39,351 --> 02:07:41,241 what I want to access a specific 3624 02:07:41,331 --> 02:07:43,761 piece of information inside of the dictionary. 3625 02:07:44,031 --> 02:07:45,981 I can just refer to it by its 3626 02:07:46,011 --> 02:07:46,581 key, 3627 02:07:47,091 --> 02:07:52,551 so the word dictionary is actually pretty appropriate here if you are familiar with a normal dictionary, 3628 02:07:53,031 --> 02:07:55,311 you know in a normal dictionary you'd have a word, 3629 02:07:55,671 --> 02:07:56,151 and then 3630 02:07:56,181 --> 02:07:59,181 you'd have a definition associated to that word so 3631 02:07:59,511 --> 02:08:01,551 in this situation the word would be the 3632 02:08:01,581 --> 02:08:02,211 key. 3633 02:08:02,541 --> 02:08:05,722 in other words the word is what like uniquely identifies it 3634 02:08:05,751 --> 02:08:07,131 inside of the dictionary, 3635 02:08:07,521 --> 02:08:07,852 and then 3636 02:08:07,881 --> 02:08:11,062 the value would be the actual definition so 3637 02:08:11,272 --> 02:08:14,513 this is going to make more sense once we start working with this but 3638 02:08:15,173 --> 02:08:17,093 I just wanted to give you guys a quick introduction. 3639 02:08:17,633 --> 02:08:18,593 so in this situation 3640 02:08:18,623 --> 02:08:20,723 I want to create a little program 3641 02:08:20,783 --> 02:08:22,463 that will allow us to convert 3642 02:08:22,493 --> 02:08:24,532 a three digit month name 3643 02:08:24,802 --> 02:08:26,632 into the full month name 3644 02:08:26,873 --> 02:08:28,073 so I can convert 3645 02:08:28,103 --> 02:08:29,093 for example like 3646 02:08:29,123 --> 02:08:29,692 jay 3647 02:08:29,722 --> 02:08:30,442 a n 3648 02:08:30,862 --> 02:08:31,462 two 3649 02:08:32,123 --> 02:08:32,843 january 3650 02:08:33,203 --> 02:08:34,313 or I could convert 3651 02:08:34,403 --> 02:08:34,793 an 3652 02:08:34,823 --> 02:08:35,663 a r 3653 02:08:35,753 --> 02:08:36,413 into 3654 02:08:36,503 --> 02:08:37,103 march. 3655 02:08:37,373 --> 02:08:44,274 like I want to be able to have a program that can do that for us and that's actually a pretty good use case for a dictionary so 3656 02:08:44,634 --> 02:08:46,253 we're actually going to create a dictionary. 3657 02:08:46,583 --> 02:08:48,653 and I'm sure you guys how we can do that so, 3658 02:08:48,743 --> 02:08:50,003 the first thing we need to do 3659 02:08:50,033 --> 02:08:52,553 in creating a dictionary is just given a name, 3660 02:08:52,913 --> 02:08:56,633 so I want to give this a specific name so I'm just going to call this 3661 02:08:56,693 --> 02:08:57,503 month 3662 02:08:58,523 --> 02:08:59,633 conversions. 3663 02:09:00,143 --> 02:09:01,673 and now I just want to set this 3664 02:09:01,703 --> 02:09:02,663 equal to an 3665 02:09:02,723 --> 02:09:04,583 open and closed curly bracket 3666 02:09:04,823 --> 02:09:07,373 so whenever we create a dictionary in python. 3667 02:09:07,613 --> 02:09:08,693 we're always going to wanna 3668 02:09:08,723 --> 02:09:11,213 created inside of these open and closed 3669 02:09:11,243 --> 02:09:12,232 curly brackets 3670 02:09:12,532 --> 02:09:12,862 so 3671 02:09:12,922 --> 02:09:17,662 inside of the dictionary now we can start defining what are called key 3672 02:09:17,842 --> 02:09:19,252 value pairs. 3673 02:09:19,312 --> 02:09:22,492 so I can define a key and that I can give it 3674 02:09:22,522 --> 02:09:22,912 a 3675 02:09:22,942 --> 02:09:24,352 corresponding value. 3676 02:09:24,742 --> 02:09:28,131 and the way that we can do that is by typing out the key and then typing out the value so 3677 02:09:28,582 --> 02:09:31,822 in our case we're converting three digit month names 3678 02:09:31,912 --> 02:09:33,442 into the full month names 3679 02:09:33,472 --> 02:09:35,481 so I would want to type out for example 3680 02:09:35,511 --> 02:09:36,621 j n 3681 02:09:37,221 --> 02:09:37,551 and 3682 02:09:37,581 --> 02:09:39,112 then I can type a colon. 3683 02:09:39,202 --> 02:09:39,711 and 3684 02:09:39,741 --> 02:09:40,551 I want to type out 3685 02:09:40,581 --> 02:09:44,211 the value I want to associate with it so we can say in january. 3686 02:09:44,452 --> 02:09:48,083 I could basically do this for every combination so I could say like 3687 02:09:48,712 --> 02:09:49,462 you'd be 3688 02:09:49,762 --> 02:09:50,752 and this would be 3689 02:09:50,902 --> 02:09:51,802 february 3690 02:09:52,222 --> 02:09:55,162 and actually after each one of these we're going to need to put a comma. 3691 02:09:56,092 --> 02:09:59,662 so I could do the same for march soon say and they are. 3692 02:10:02,062 --> 02:10:06,083 so essentially what I can do is I can specify an entry 3693 02:10:06,323 --> 02:10:08,243 inside of this dictionary for 3694 02:10:08,273 --> 02:10:09,683 each one of these so 3695 02:10:09,863 --> 02:10:11,993 this over here would be the key 3696 02:10:12,292 --> 02:10:15,173 in this over here would be the value. 3697 02:10:15,653 --> 02:10:19,703 and here's one thing is all of these keys have to be unique. 3698 02:10:19,943 --> 02:10:23,063 so if I was to come down here and change this to j n, 3699 02:10:23,543 --> 02:10:27,233 this is actually going to give us a little warnings you can see down here it says 3700 02:10:27,503 --> 02:10:28,643 dictionary contains 3701 02:10:28,672 --> 02:10:29,272 duplicate 3702 02:10:29,302 --> 02:10:29,902 keys 3703 02:10:30,172 --> 02:10:32,842 dots they know no one we're creating dictionary so 3704 02:10:33,052 --> 02:10:34,132 you'll want to make sure that 3705 02:10:34,162 --> 02:10:35,842 the keys are unique 3706 02:10:35,992 --> 02:10:37,131 aren't so I'm gonna go ahead and 3707 02:10:37,161 --> 02:10:39,351 create one of these for each one of the months 3708 02:10:39,381 --> 02:10:41,361 and then we'll come back and we'll talk about it. 3709 02:10:42,861 --> 02:10:47,990 all right so I've gone ahead and created an entry for all twelve of the months so now 3710 02:10:48,260 --> 02:10:49,791 we have a bunch of unique 3711 02:10:49,820 --> 02:10:50,450 keys 3712 02:10:50,480 --> 02:10:53,150 and each one of those keys is associated with 3713 02:10:53,180 --> 02:10:54,410 a different value. 3714 02:10:54,860 --> 02:11:00,229 so this is the basics of creating a dictionary is we have a bunch of these different key value pairs. 3715 02:11:00,589 --> 02:11:03,019 and now what we can actually do is we can 3716 02:11:03,079 --> 02:11:04,339 access them from 3717 02:11:04,369 --> 02:11:06,259 inside of this dictionary ? 3718 02:11:06,649 --> 02:11:08,150 so if I wanted to access 3719 02:11:08,180 --> 02:11:08,930 a specific 3720 02:11:08,959 --> 02:11:10,759 key or a specific value. 3721 02:11:11,119 --> 02:11:13,609 all I have to do is come over here and I'm actually just going to 3722 02:11:13,639 --> 02:11:15,739 print it out onto the screen so we can see it. 3723 02:11:16,759 --> 02:11:20,780 all you have to do is referred to the dictionary by name so it's just called 3724 02:11:20,840 --> 02:11:22,250 month conversions. 3725 02:11:22,581 --> 02:11:23,000 and 3726 02:11:23,030 --> 02:11:25,220 there's actually a bunch of different ways 3727 02:11:25,250 --> 02:11:28,100 that I can access these month names, 3728 02:11:28,190 --> 02:11:28,700 so 3729 02:11:29,270 --> 02:11:30,140 I could access 3730 02:11:30,169 --> 02:11:32,329 different entries inside of this 3731 02:11:32,389 --> 02:11:32,959 dictionary ? 3732 02:11:33,199 --> 02:11:34,910 the first way is just by making 3733 02:11:34,939 --> 02:11:35,629 a 3734 02:11:35,750 --> 02:11:37,189 open close square bracket 3735 02:11:37,489 --> 02:11:40,338 inside here I can just type in one of the keys. 3736 02:11:40,579 --> 02:11:42,559 so for example inside here I could type in 3737 02:11:42,619 --> 02:11:42,918 and 3738 02:11:42,948 --> 02:11:43,638 oh thee. 3739 02:11:44,058 --> 02:11:46,789 and what this should do is it should give us back. 3740 02:11:46,849 --> 02:11:47,329 the 3741 02:11:47,358 --> 02:11:48,349 full 3742 02:11:48,438 --> 02:11:50,809 name for november so when I print this out, 3743 02:11:51,589 --> 02:11:53,870 you'll see that we get back down here. 3744 02:11:53,990 --> 02:11:54,770 nov. 3745 02:11:55,160 --> 02:11:56,840 so I can do the same thing for 3746 02:11:57,080 --> 02:11:59,210 any of these we can say like an a r. 3747 02:11:59,630 --> 02:12:01,880 and now we should get marched back so 3748 02:12:02,090 --> 02:12:04,580 I'm able to refer to the key, 3749 02:12:05,030 --> 02:12:06,951 and it's going to go into the dictionary and it's 3750 02:12:06,980 --> 02:12:10,191 going to give me the value that's associated to that qe 3751 02:12:10,821 --> 02:12:13,341 is actually another way we could do this too so I could 3752 02:12:13,401 --> 02:12:13,971 say 3753 02:12:14,001 --> 02:12:16,041 month conversions dot 3754 02:12:16,341 --> 02:12:17,061 get 3755 02:12:17,331 --> 02:12:21,711 an inside of here I could also pass in the name of the key so I could pass in like 3756 02:12:22,041 --> 02:12:23,211 d c 3757 02:12:24,081 --> 02:12:25,940 and now we'll be printing out 3758 02:12:26,000 --> 02:12:26,840 december. 3759 02:12:27,800 --> 02:12:30,021 and what's cool about using this get function 3760 02:12:30,051 --> 02:12:34,521 is I can actually specify a default value that I want to use. 3761 02:12:34,791 --> 02:12:36,651 if this keys not found so 3762 02:12:37,131 --> 02:12:41,122 there's going to be certain cases when we're dealing with dictionaries where you're going to put in a key 3763 02:12:41,151 --> 02:12:43,131 that might not necessarily 3764 02:12:43,191 --> 02:12:44,572 map to a value 3765 02:12:44,752 --> 02:12:47,302 inside of the dictionary you so he put in an invalid 3766 02:12:47,332 --> 02:12:47,752 key. 3767 02:12:48,142 --> 02:12:48,952 so let's just 3768 02:12:48,982 --> 02:12:51,502 try to do that so honest put like aliyu v. 3769 02:12:51,592 --> 02:12:52,372 that's not 3770 02:12:52,462 --> 02:12:53,782 a month abbreviation. 3771 02:12:54,022 --> 02:12:55,402 so when I try to run this, 3772 02:12:56,032 --> 02:12:57,382 you'll see we get this 3773 02:12:57,412 --> 02:12:58,072 none 3774 02:12:58,102 --> 02:12:58,792 down here. 3775 02:12:59,122 --> 02:13:00,232 and in a lot of cases 3776 02:13:00,262 --> 02:13:01,461 you're gonna want to 3777 02:13:01,491 --> 02:13:03,381 create some sort of a default 3778 02:13:03,411 --> 02:13:04,011 value. 3779 02:13:04,401 --> 02:13:07,162 so if I'm in this situation where I have a key 3780 02:13:07,192 --> 02:13:10,492 that's not mappable to any values inside of this 3781 02:13:10,521 --> 02:13:11,361 dictionary ? 3782 02:13:11,661 --> 02:13:14,001 I can actually pass it a default value. 3783 02:13:14,242 --> 02:13:16,491 so inside this dot get function 3784 02:13:16,521 --> 02:13:16,971 I can 3785 02:13:17,151 --> 02:13:17,961 make a comma. 3786 02:13:18,141 --> 02:13:22,461 and I can pass in like a default value to get printed out so I can say like not 3787 02:13:22,491 --> 02:13:23,301 a valid 3788 02:13:23,361 --> 02:13:23,931 key. 3789 02:13:24,531 --> 02:13:25,251 and now 3790 02:13:25,431 --> 02:13:28,582 when I put in the invalid key instead of saying none. 3791 02:13:28,882 --> 02:13:30,263 it's going to go ahead and say 3792 02:13:30,292 --> 02:13:31,552 not a valid 3793 02:13:31,582 --> 02:13:34,613 key and so this is going to give us like a default value 3794 02:13:34,883 --> 02:13:36,563 that we can fall back on so 3795 02:13:36,894 --> 02:13:38,934 these dictionaries are really awesome and 3796 02:13:40,014 --> 02:13:42,534 the keys over here don't have to be 3797 02:13:42,563 --> 02:13:44,634 strings so you could also use numbers 3798 02:13:44,904 --> 02:13:47,004 so for example I can see like zero 3799 02:13:47,484 --> 02:13:48,354 one 3800 02:13:48,685 --> 02:13:52,405 tan like I can put any numbers I want over here as keys 3801 02:13:52,615 --> 02:13:55,796 as long as their unique and that I could access those keys 3802 02:13:55,976 --> 02:13:58,077 just like I normally would down here 3803 02:13:58,317 --> 02:13:58,797 with this 3804 02:13:58,827 --> 02:14:01,587 get function or with those open and closed square brackets 3805 02:14:02,037 --> 02:14:03,297 so that's sort of the basics 3806 02:14:03,327 --> 02:14:05,906 of using dictionaries like me really useful to store 3807 02:14:05,936 --> 02:14:07,256 key value pairs 3808 02:14:07,616 --> 02:14:12,386 and honestly you're going to be using them a lot in python to store different types of data. 3809 02:14:16,856 --> 02:14:20,786 in this tutorial I wanna talk to you guys about wild loops in python, 3810 02:14:21,176 --> 02:14:21,326 and 3811 02:14:21,356 --> 02:14:26,696 a while loop is basically a structure in python which allows us to loop through 3812 02:14:26,937 --> 02:14:27,837 and execute 3813 02:14:27,867 --> 02:14:30,537 a block of code multiple times. 3814 02:14:30,897 --> 02:14:34,647 so I could specify like a few different lines of code and then I could 3815 02:14:34,677 --> 02:14:35,637 put that code 3816 02:14:35,697 --> 02:14:37,076 inside of a while loop 3817 02:14:37,586 --> 02:14:44,816 and it would basically you loop through that code executing it repeatedly until a certain condition was false. 3818 02:14:45,146 --> 02:14:51,537 so our lives can be awesome and there's a lot of situations in python where we're going to want to loop through specific lines of code, 3819 02:14:51,957 --> 02:14:54,657 so in this tutorial I just want to show you guys the healing 3820 02:14:54,717 --> 02:14:56,997 bare basics of how wildebeests work 3821 02:14:57,267 --> 02:15:01,797 and then in future tutorial is we're going to use while leaps to create little games and stuff like that so 3822 02:15:02,577 --> 02:15:04,408 let's talk about wild sum 3823 02:15:05,158 --> 02:15:06,448 when I create my wild loop. 3824 02:15:06,868 --> 02:15:08,907 the first thing I want to do actually 3825 02:15:09,207 --> 02:15:10,407 is create an 3826 02:15:10,437 --> 02:15:10,977 integer. 3827 02:15:11,157 --> 02:15:15,626 I'm basically creating a variable that's a number and you don't have to do this for a while 3828 02:15:15,656 --> 02:15:17,786 but just for our demonstration I'm going to. 3829 02:15:18,085 --> 02:15:19,046 so I'm going to call this, 3830 02:15:19,106 --> 02:15:19,646 I 3831 02:15:19,676 --> 02:15:21,416 am going to set it equal to one. 3832 02:15:22,166 --> 02:15:25,165 now what I wanna do is I want to create a while loop 3833 02:15:25,195 --> 02:15:26,784 so I'm basically just going to say. 3834 02:15:26,934 --> 02:15:27,744 while 3835 02:15:28,554 --> 02:15:29,064 and 3836 02:15:29,274 --> 02:15:31,284 over here I want to specify 3837 02:15:31,313 --> 02:15:31,854 a 3838 02:15:32,003 --> 02:15:32,843 condition, 3839 02:15:33,323 --> 02:15:36,924 and this is what's called our loop condition or you can also 3840 02:15:36,984 --> 02:15:38,245 refer to it as a loop 3841 02:15:38,274 --> 02:15:38,844 guard 3842 02:15:38,964 --> 02:15:42,265 and basically we are going to keep looping through the code 3843 02:15:42,354 --> 02:15:43,794 inside of the while loop. 3844 02:15:44,154 --> 02:15:46,705 as long as this condition is true. 3845 02:15:47,035 --> 02:15:50,245 so whatever condition I put in here as long as it's true 3846 02:15:50,485 --> 02:15:54,055 we're going to keep looping through the code inside the wild is I'm just going to say while 3847 02:15:54,745 --> 02:15:55,255 I 3848 02:15:55,735 --> 02:15:56,635 is less than 3849 02:15:56,665 --> 02:15:56,875 or 3850 02:15:56,904 --> 02:15:57,714 equal to 3851 02:15:57,984 --> 02:15:58,554 ten 3852 02:15:59,844 --> 02:16:01,164 and now I'm gonna put a 3853 02:16:01,344 --> 02:16:01,974 colon 3854 02:16:02,694 --> 02:16:04,044 and I'm gonna make a new line. 3855 02:16:04,314 --> 02:16:04,705 and so 3856 02:16:04,734 --> 02:16:08,634 anything that's below this while loop declaration and that's 3857 02:16:08,694 --> 02:16:09,564 indented 3858 02:16:09,864 --> 02:16:10,645 like this 3859 02:16:10,825 --> 02:16:12,595 is going to be considered code that's 3860 02:16:12,625 --> 02:16:14,875 inside the while loop and so that code 3861 02:16:15,115 --> 02:16:17,456 is going to get repeatedly executed 3862 02:16:17,696 --> 02:16:20,306 while this condition up here is true. 3863 02:16:20,696 --> 02:16:24,027 so I'm just gonna put a very simple line of code here where it's going to print 3864 02:16:24,057 --> 02:16:24,986 out the value of 3865 02:16:25,016 --> 02:16:25,556 I, 3866 02:16:26,126 --> 02:16:28,045 and then down here I'm going to actually 3867 02:16:28,075 --> 02:16:28,615 increment 3868 02:16:28,645 --> 02:16:30,145 eyes I'm going to add one 3869 02:16:30,175 --> 02:16:31,286 to eyes I must say 3870 02:16:31,346 --> 02:16:31,826 I 3871 02:16:32,126 --> 02:16:32,456 is 3872 02:16:32,516 --> 02:16:33,056 equal to 3873 02:16:33,086 --> 02:16:33,536 I 3874 02:16:33,596 --> 02:16:34,136 plus 3875 02:16:34,195 --> 02:16:34,766 one, 3876 02:16:35,006 --> 02:16:38,666 so basically I'm taking this I value and I'm adding one to it 3877 02:16:39,086 --> 02:16:42,057 is actually a shorthand that we can use in 3878 02:16:42,207 --> 02:16:44,577 python to do something like this though I could just say 3879 02:16:44,607 --> 02:16:45,207 I 3880 02:16:45,537 --> 02:16:46,018 plus 3881 02:16:46,048 --> 02:16:47,008 equals one 3882 02:16:47,368 --> 02:16:49,619 and not automatically going to add one 3883 02:16:49,649 --> 02:16:50,369 to 3884 02:16:50,459 --> 02:16:50,819 I 3885 02:16:50,850 --> 02:16:52,408 so this is like a little shorthand and 3886 02:16:52,618 --> 02:16:54,778 you'll see people in pipe on using that a lot. 3887 02:16:55,469 --> 02:16:55,919 so 3888 02:16:56,219 --> 02:16:58,348 over here we basically have 3889 02:16:58,378 --> 02:17:00,088 our wild lives I have 3890 02:17:00,778 --> 02:17:04,198 the outline for a while lives we're defining this variable up here 3891 02:17:04,528 --> 02:17:06,989 and we're going to keep looping through the code 3892 02:17:07,049 --> 02:17:08,399 inside the while loop. 3893 02:17:08,669 --> 02:17:11,280 as long as this condition up here 3894 02:17:11,431 --> 02:17:12,151 is true. 3895 02:17:12,392 --> 02:17:15,031 so if this condition is false for example if 3896 02:17:15,062 --> 02:17:15,602 I 3897 02:17:15,752 --> 02:17:16,622 is equal to 3898 02:17:16,682 --> 02:17:17,401 eleven, 3899 02:17:17,731 --> 02:17:21,061 then we're not going to loop through this company more than just going to move on. 3900 02:17:21,421 --> 02:17:23,520 so down here I'm actually just going to print 3901 02:17:25,140 --> 02:17:26,430 done with loop. 3902 02:17:27,000 --> 02:17:29,011 so this was kind of illustrate this for us. 3903 02:17:29,730 --> 02:17:33,240 so let's go ahead and run this program I'm just gonna run it 3904 02:17:34,110 --> 02:17:34,561 and 3905 02:17:34,591 --> 02:17:36,479 you'll see down here we get some 3906 02:17:36,510 --> 02:17:37,710 output so 3907 02:17:38,400 --> 02:17:39,690 we're actually going to get 3908 02:17:39,900 --> 02:17:41,670 numbers printed out one 3909 02:17:41,700 --> 02:17:42,749 all the way down 3910 02:17:42,779 --> 02:17:43,619 through 3911 02:17:43,739 --> 02:17:44,459 ten 3912 02:17:44,759 --> 02:17:46,949 and then were printing out done with loop 3913 02:17:47,279 --> 02:17:50,669 so basically what's happening is we're printing out 3914 02:17:50,909 --> 02:17:52,559 every time we go through this loop 3915 02:17:52,589 --> 02:17:52,949 so 3916 02:17:53,129 --> 02:17:55,078 initially I is equal to one right. 3917 02:17:55,348 --> 02:17:58,317 the first thing that python's going to do when it gets to this while loop 3918 02:17:58,348 --> 02:18:00,057 is it's going to check this condition. 3919 02:18:00,236 --> 02:18:01,915 so before it does anything else, 3920 02:18:02,095 --> 02:18:04,074 it's going to check this condition and it's going to say 3921 02:18:04,104 --> 02:18:04,524 okay, 3922 02:18:04,914 --> 02:18:05,395 is 3923 02:18:05,425 --> 02:18:06,145 one 3924 02:18:06,175 --> 02:18:07,556 less than or equal to ten. 3925 02:18:08,006 --> 02:18:08,937 and that's true. 3926 02:18:09,116 --> 02:18:10,795 so as long as this guy is 3927 02:18:10,825 --> 02:18:11,365 true 3928 02:18:11,396 --> 02:18:13,976 we're going to go through and loop through all the code inside of here. 3929 02:18:14,186 --> 02:18:15,175 so we're going to print out 3930 02:18:15,205 --> 02:18:15,625 I 3931 02:18:15,655 --> 02:18:16,975 which has the value of one 3932 02:18:17,574 --> 02:18:18,175 and then we're going to 3933 02:18:18,205 --> 02:18:19,015 add one 3934 02:18:19,045 --> 02:18:21,386 to I so now I'm going to go from one 3935 02:18:21,416 --> 02:18:22,166 to two. 3936 02:18:22,616 --> 02:18:23,876 now what we're going to do 3937 02:18:24,116 --> 02:18:26,396 is we're going to go all the way back up here 3938 02:18:26,426 --> 02:18:27,565 to this while loop 3939 02:18:27,865 --> 02:18:30,086 declaration and we're gonna check the condition 3940 02:18:30,116 --> 02:18:30,776 again. 3941 02:18:31,526 --> 02:18:33,086 so remember I checked the condition 3942 02:18:33,116 --> 02:18:33,776 first time 3943 02:18:33,807 --> 02:18:35,188 and then I looped through all the code, 3944 02:18:35,338 --> 02:18:36,987 then I'd go back up to the top 3945 02:18:37,018 --> 02:18:38,729 and I check it again so I'm gonna say 3946 02:18:38,760 --> 02:18:39,149 ok 3947 02:18:39,510 --> 02:18:41,460 is I less than or equal to ten 3948 02:18:41,880 --> 02:18:42,839 at this point 3949 02:18:42,959 --> 02:18:44,069 I is equal to two 3950 02:18:44,459 --> 02:18:46,168 so I is less than or equal to tenant. 3951 02:18:46,498 --> 02:18:48,147 so now we're going to go through and will 3952 02:18:48,178 --> 02:18:50,217 execute all this code again so I'm going to 3953 02:18:50,247 --> 02:18:50,787 print out 3954 02:18:50,817 --> 02:18:52,106 I so it's going to be too 3955 02:18:52,496 --> 02:18:53,847 and I'm going to add one to eye 3956 02:18:53,877 --> 02:18:55,076 so now we have three 3957 02:18:55,616 --> 02:18:56,066 then 3958 02:18:56,097 --> 02:18:58,677 python's going to go all the way back up to the top 3959 02:18:58,707 --> 02:18:59,607 and it's going to check 3960 02:18:59,667 --> 02:19:01,018 the condition again 3961 02:19:01,287 --> 02:19:01,797 so 3962 02:19:02,037 --> 02:19:03,988 on every iteration through the loop 3963 02:19:04,019 --> 02:19:05,278 before python 3964 02:19:05,368 --> 02:19:06,957 does what's inside of this loop 3965 02:19:06,987 --> 02:19:08,427 it's going to check that condition. 3966 02:19:08,937 --> 02:19:11,307 and as long as the condition remains true. 3967 02:19:11,366 --> 02:19:11,877 we're going to 3968 02:19:11,907 --> 02:19:13,886 keep executing the code inside the loop 3969 02:19:14,366 --> 02:19:15,896 eventually though in this program 3970 02:19:15,956 --> 02:19:18,057 I is going to end up being eleven 3971 02:19:18,326 --> 02:19:18,716 right 3972 02:19:18,806 --> 02:19:19,615 so I'm the last 3973 02:19:19,646 --> 02:19:21,806 iteration it's going to end up being levin, 3974 02:19:22,075 --> 02:19:23,455 we're going to come back up here, 3975 02:19:23,635 --> 02:19:24,504 and we're going to say 3976 02:19:24,534 --> 02:19:24,895 hum 3977 02:19:24,925 --> 02:19:26,726 is eleven less than or equal to ten 3978 02:19:27,025 --> 02:19:27,535 nope 3979 02:19:27,955 --> 02:19:29,245 and so sense it's nope 3980 02:19:29,275 --> 02:19:30,386 we're going to come down here 3981 02:19:30,416 --> 02:19:35,785 and we'll print out this done with loop line so that's the basics of how these wildebeests work 3982 02:19:36,085 --> 02:19:38,156 we're specifying a loop condition. 3983 02:19:38,396 --> 02:19:40,106 as long as that conditions true 3984 02:19:40,376 --> 02:19:41,875 will keep executing the code 3985 02:19:41,905 --> 02:19:43,046 inside of the loop, 3986 02:19:43,226 --> 02:19:45,385 and after every execution of the loop, 3987 02:19:45,444 --> 02:19:47,635 we're going to come back up and check the condition again so 3988 02:19:47,904 --> 02:19:49,613 that's how we end up with 3989 02:19:49,644 --> 02:19:50,424 this. 3990 02:19:50,574 --> 02:19:51,444 printing out 3991 02:19:51,475 --> 02:19:52,195 down here, 3992 02:19:52,646 --> 02:19:53,785 so that's the basics 3993 02:19:53,815 --> 02:19:54,176 of 3994 02:19:54,206 --> 02:19:54,866 a while loop 3995 02:19:54,896 --> 02:19:55,286 and 3996 02:19:55,946 --> 02:19:57,387 we can use these volumes to do 3997 02:19:57,417 --> 02:20:00,806 all sorts of things like wild fruits are very very powerful 3998 02:20:04,706 --> 02:20:07,587 in this tutorial on a show he eyes how to build a basic 3999 02:20:07,617 --> 02:20:09,387 guessing game in python, 4000 02:20:09,896 --> 02:20:15,090 and in this guessing game we're actually going to be using all sorts of cool programming structures that we've 4001 02:20:15,120 --> 02:20:16,859 learned up to this point in the course. 4002 02:20:17,159 --> 02:20:18,539 so we're going to be using things like 4003 02:20:18,599 --> 02:20:21,208 if statements and wild loops and variables and 4004 02:20:21,268 --> 02:20:22,258 all these cool things 4005 02:20:22,588 --> 02:20:24,537 in order to build this game so, 4006 02:20:24,597 --> 02:20:28,437 the basic idea is we will specify lake a secret word. 4007 02:20:28,677 --> 02:20:31,707 so we'll have a secret word that we store inside of our program 4008 02:20:32,127 --> 02:20:35,428 and then the user can interact with the program and try to guess 4009 02:20:35,458 --> 02:20:36,509 the secret word. 4010 02:20:36,839 --> 02:20:41,038 and so what we want to be able to happen is we want the user to be able to keep guessing 4011 02:20:41,068 --> 02:20:44,188 what the secret where it is and keep typing in different responses. 4012 02:20:44,607 --> 02:20:46,947 until they get the secret word right. 4013 02:20:47,188 --> 02:20:48,358 so that's the basics 4014 02:20:48,389 --> 02:20:50,158 of what this game is going to be. 4015 02:20:50,668 --> 02:20:51,088 and 4016 02:20:51,118 --> 02:20:54,449 now let's go ahead and create it so the first thing we want to do is 4017 02:20:54,479 --> 02:20:57,871 create a variable to store our secret word. 4018 02:20:58,171 --> 02:20:59,220 so I can say 4019 02:20:59,399 --> 02:21:00,119 secret 4020 02:21:00,149 --> 02:21:00,779 word. 4021 02:21:01,199 --> 02:21:04,920 and we're just going to set this equal to a secret word so why don't we make it a draft. 4022 02:21:04,979 --> 02:21:06,149 that's a pretty good secret word. 4023 02:21:06,899 --> 02:21:10,859 and now what we wanna do is want to create a variable that will store 4024 02:21:10,890 --> 02:21:12,750 the user's response 4025 02:21:13,020 --> 02:21:15,931 so I want a variable that will store like all the guesses 4026 02:21:15,961 --> 02:21:17,131 that the user makes 4027 02:21:17,161 --> 02:21:18,062 so I'm just gonna 4028 02:21:18,093 --> 02:21:18,813 call this 4029 02:21:18,873 --> 02:21:19,653 guess 4030 02:21:20,043 --> 02:21:20,433 and 4031 02:21:20,463 --> 02:21:21,062 I'm just going to set it 4032 02:21:21,093 --> 02:21:23,312 equal to an empty string right now. 4033 02:21:23,433 --> 02:21:23,793 so 4034 02:21:23,823 --> 02:21:25,202 now we have a secret word 4035 02:21:25,232 --> 02:21:25,893 and we have 4036 02:21:25,923 --> 02:21:28,744 a variable to store the user's guess 4037 02:21:29,014 --> 02:21:31,473 and what we need to do is we need to be able to prompt 4038 02:21:31,503 --> 02:21:32,343 the user 4039 02:21:32,493 --> 02:21:33,933 to input the secret were. 4040 02:21:34,383 --> 02:21:35,612 but here's the catch. 4041 02:21:36,032 --> 02:21:39,331 what we want to happen is we want them to enter the secret word. 4042 02:21:39,571 --> 02:21:41,671 and if they don't guess it correctly 4043 02:21:41,701 --> 02:21:44,072 we want to prompt them to enter it again. 4044 02:21:44,553 --> 02:21:47,162 so we can't just use a single 4045 02:21:47,192 --> 02:21:49,593 input statement we actually have to use 4046 02:21:49,772 --> 02:21:51,482 something called a while loop. 4047 02:21:51,843 --> 02:21:53,251 and we can use a while loop 4048 02:21:53,281 --> 02:21:56,161 in order to continually ask the person 4049 02:21:56,341 --> 02:21:57,361 to guess the word 4050 02:21:57,541 --> 02:21:59,371 until they guess it correctly. 4051 02:21:59,791 --> 02:22:03,060 so let's go ahead and create our while loop so I'm gonna say while 4052 02:22:03,449 --> 02:22:03,810 and 4053 02:22:03,899 --> 02:22:08,879 after a while I need to specify a looping condition or a looping guard. 4054 02:22:09,209 --> 02:22:10,709 basically this is something 4055 02:22:10,739 --> 02:22:12,449 that as long as it's true 4056 02:22:12,479 --> 02:22:14,431 we're going to keep looping through 4057 02:22:14,490 --> 02:22:15,061 this loop. 4058 02:22:15,301 --> 02:22:17,131 so basically I want to say 4059 02:22:17,161 --> 02:22:19,382 I want to keep looping as long as 4060 02:22:19,622 --> 02:22:21,092 the user's gas 4061 02:22:21,242 --> 02:22:22,772 is not equal to 4062 02:22:23,223 --> 02:22:24,304 the secret word. 4063 02:22:24,604 --> 02:22:26,674 so as long as they haven't guessed 4064 02:22:26,704 --> 02:22:27,814 the secret word. 4065 02:22:28,114 --> 02:22:30,214 I'm going to keep going through this loop, 4066 02:22:30,634 --> 02:22:32,194 and inside this loop. 4067 02:22:32,314 --> 02:22:35,796 what we're going to do is we're going to ask them to input the secret word 4068 02:22:36,246 --> 02:22:37,415 so I can take this 4069 02:22:37,445 --> 02:22:38,795 gas variable 4070 02:22:39,035 --> 02:22:39,995 and I can set it 4071 02:22:40,025 --> 02:22:40,865 equal to 4072 02:22:41,436 --> 02:22:42,155 input. 4073 02:22:42,995 --> 02:22:44,016 and I'm just going to say. 4074 02:22:44,586 --> 02:22:45,276 enter 4075 02:22:45,517 --> 02:22:46,207 guess. 4076 02:22:47,438 --> 02:22:51,518 and so over here we're basically telling the user to enter in their guests. 4077 02:22:51,938 --> 02:22:54,008 I'm storing whenever they enter 4078 02:22:54,248 --> 02:22:55,808 inside of this guess 4079 02:22:55,867 --> 02:22:56,707 variable 4080 02:22:57,007 --> 02:22:59,467 and then what's going to happen is that we're going to come back up here 4081 02:22:59,677 --> 02:23:00,066 we're going to 4082 02:23:00,097 --> 02:23:01,508 check to see if the gas 4083 02:23:01,538 --> 02:23:03,158 is equal to the secret word 4084 02:23:03,578 --> 02:23:04,179 if the guests 4085 02:23:04,209 --> 02:23:05,708 isn't equal to the secret word, 4086 02:23:05,888 --> 02:23:06,997 then we're going to do it again. 4087 02:23:07,567 --> 02:23:08,617 but if the guests 4088 02:23:08,647 --> 02:23:10,087 is equal to the secret word, 4089 02:23:10,146 --> 02:23:11,436 then we're just going to break 4090 02:23:11,466 --> 02:23:12,485 out of this loop. 4091 02:23:13,205 --> 02:23:14,945 and so we can come down here 4092 02:23:15,815 --> 02:23:17,225 and we can just print out 4093 02:23:17,675 --> 02:23:19,445 a success message so I could say 4094 02:23:19,806 --> 02:23:20,616 you win 4095 02:23:20,946 --> 02:23:22,746 because they got the secret were 4096 02:23:23,016 --> 02:23:25,086 since they have very very simple program 4097 02:23:25,116 --> 02:23:25,566 but 4098 02:23:25,956 --> 02:23:30,037 this is essentially all of the code that we need to be able to build a game 4099 02:23:30,067 --> 02:23:31,117 like this so 4100 02:23:31,297 --> 02:23:33,877 let's go ahead and play our game we can run it and 4101 02:23:33,907 --> 02:23:35,617 see how he did so I'm gonna 4102 02:23:35,647 --> 02:23:36,397 click play. 4103 02:23:37,298 --> 02:23:42,067 and down here you can see it's prompting us to enter a guest's so I'm just going to type in some 4104 02:23:42,098 --> 02:23:43,238 you know random texts 4105 02:23:43,568 --> 02:23:44,888 we can type in whatever you want. 4106 02:23:45,218 --> 02:23:49,867 and as long as we're not entering that secret word it's going to keep prompting us to 4107 02:23:49,897 --> 02:23:51,607 enter different information. 4108 02:23:52,058 --> 02:23:52,567 but 4109 02:23:52,598 --> 02:23:54,066 if I enter in the secret word 4110 02:23:54,097 --> 02:23:55,416 so if I enter in draft. 4111 02:23:55,986 --> 02:23:56,526 now 4112 02:23:56,586 --> 02:23:59,467 all of a sudden the programs can terminate and it's going to say, 4113 02:23:59,677 --> 02:24:00,066 hey 4114 02:24:00,097 --> 02:24:00,757 you win 4115 02:24:01,057 --> 02:24:02,857 because we were able to guess 4116 02:24:02,917 --> 02:24:03,847 the secret word. 4117 02:24:04,087 --> 02:24:04,807 so that's like 4118 02:24:04,866 --> 02:24:07,807 a really cool way for us to be able to do this. 4119 02:24:07,957 --> 02:24:10,927 and we actually have a fully functional guessing game. 4120 02:24:11,437 --> 02:24:11,977 but 4121 02:24:12,246 --> 02:24:16,116 I think this guessing game could actually be improved quite a bit. 4122 02:24:16,446 --> 02:24:18,006 a lot of times when 4123 02:24:18,036 --> 02:24:20,736 we're making a guessing game we want to set a limit 4124 02:24:20,767 --> 02:24:23,347 so in other words I want to set a limit for 4125 02:24:23,497 --> 02:24:26,498 the number of times that the user can try to guess the word. 4126 02:24:26,918 --> 02:24:28,509 so let's say that the user has 4127 02:24:28,539 --> 02:24:31,868 three tries right they have three guesses in order to guess the word. 4128 02:24:32,168 --> 02:24:34,628 and if they can't guess the word after three tries. 4129 02:24:34,838 --> 02:24:36,278 then they're going to lose the game. 4130 02:24:36,519 --> 02:24:36,938 but 4131 02:24:37,028 --> 02:24:38,048 if they can guess the word 4132 02:24:38,078 --> 02:24:39,697 inside of three tries then 4133 02:24:39,728 --> 02:24:40,987 they'll win the game right. 4134 02:24:41,197 --> 02:24:44,346 I think that will be a little bit more of a fun game so 4135 02:24:44,376 --> 02:24:45,666 why don't we try to program 4136 02:24:45,696 --> 02:24:46,446 that game, 4137 02:24:46,716 --> 02:24:48,726 basically we're going to set a limit 4138 02:24:48,966 --> 02:24:49,596 on the number of 4139 02:24:49,626 --> 02:24:50,286 guesses 4140 02:24:50,316 --> 02:24:51,756 that the user can have 4141 02:24:51,996 --> 02:24:57,096 in order to do this and we're going to have to create a couple more variables down here. 4142 02:24:57,396 --> 02:24:57,995 in other words 4143 02:24:58,025 --> 02:25:01,054 we're going to have to store a couple more pieces of information. 4144 02:25:01,504 --> 02:25:04,294 the first piece of information I want to keep track of is 4145 02:25:04,474 --> 02:25:06,063 how many times the user 4146 02:25:06,094 --> 02:25:07,174 has guessed 4147 02:25:07,264 --> 02:25:07,653 right, 4148 02:25:07,894 --> 02:25:10,234 so we can just make a variable called guests 4149 02:25:10,265 --> 02:25:10,774 cao 4150 02:25:11,164 --> 02:25:13,653 and we'll just set this equal to zero because initially 4151 02:25:13,983 --> 02:25:15,033 the user won't have 4152 02:25:15,063 --> 02:25:15,634 guest 4153 02:25:15,784 --> 02:25:17,434 down in this while loop. 4154 02:25:17,644 --> 02:25:19,833 every time we go through the loop, 4155 02:25:20,253 --> 02:25:22,263 I want to increment that gas can 4156 02:25:22,743 --> 02:25:24,963 write so every time we've gone through this while loop 4157 02:25:24,993 --> 02:25:25,593 I want to 4158 02:25:25,623 --> 02:25:27,452 increment that count because that means 4159 02:25:27,632 --> 02:25:29,252 the user will have guessed 4160 02:25:29,552 --> 02:25:31,262 so down here I'm going to say. 4161 02:25:31,712 --> 02:25:32,252 guess 4162 02:25:32,282 --> 02:25:32,792 count 4163 02:25:34,382 --> 02:25:34,892 plus 4164 02:25:34,922 --> 02:25:36,062 equals one 4165 02:25:36,302 --> 02:25:37,473 and this is just going to add 4166 02:25:37,503 --> 02:25:39,812 one to the gasket actually whips. 4167 02:25:41,191 --> 02:25:41,611 so 4168 02:25:42,092 --> 02:25:45,812 after each iteration of this loop we're going to go ahead and add one 4169 02:25:45,843 --> 02:25:46,953 to the gas count 4170 02:25:47,104 --> 02:25:50,374 right so that's the first variable that we're going to need we're also going to want to 4171 02:25:50,434 --> 02:25:52,383 store another variable 4172 02:25:52,413 --> 02:25:54,273 and this is going to be called guess 4173 02:25:54,304 --> 02:25:54,903 limit 4174 02:25:55,233 --> 02:26:01,145 and basically this is going to tell us how many times the user can guess the words on it it's going to be guests 4175 02:26:01,744 --> 02:26:02,254 limit 4176 02:26:02,284 --> 02:26:02,794 and 4177 02:26:03,334 --> 02:26:06,995 will basically just say three so let's say that the user has three tries 4178 02:26:07,205 --> 02:26:09,935 to guess the word three strikes and you're out so 4179 02:26:10,564 --> 02:26:13,025 the user if they can't get it in three tries 4180 02:26:13,056 --> 02:26:13,565 then 4181 02:26:13,596 --> 02:26:14,046 we're going to 4182 02:26:14,076 --> 02:26:15,968 basically say that they lose the game. 4183 02:26:16,208 --> 02:26:18,428 and I'm also going to need one more 4184 02:26:18,487 --> 02:26:19,837 variable here, 4185 02:26:20,317 --> 02:26:20,647 which 4186 02:26:20,678 --> 02:26:21,428 we're going to call 4187 02:26:21,458 --> 02:26:21,938 out 4188 02:26:22,419 --> 02:26:22,959 of 4189 02:26:23,649 --> 02:26:24,399 gases. 4190 02:26:24,789 --> 02:26:25,149 and 4191 02:26:25,180 --> 02:26:27,850 I'm just going to set this equal to false initially. 4192 02:26:28,119 --> 02:26:28,629 so this 4193 02:26:28,659 --> 02:26:31,300 out of gases variable is going to be a boolean. 4194 02:26:31,540 --> 02:26:34,780 and it's gonna tell us whether or not the user is out of gases. 4195 02:26:34,990 --> 02:26:36,790 so if out of gases is true 4196 02:26:36,820 --> 02:26:40,239 that means they have no more guesses right they basically lost the game 4197 02:26:40,810 --> 02:26:42,039 and if out of guesses 4198 02:26:42,099 --> 02:26:46,601 is false that means that they still have some guesses left so they can keep playing. 4199 02:26:47,320 --> 02:26:50,711 so let's use these different variables in order to 4200 02:26:50,741 --> 02:26:52,871 make our program or functional so 4201 02:26:53,381 --> 02:26:55,151 the first thing I want to do is 4202 02:26:55,722 --> 02:26:57,281 when I go through this loop. 4203 02:26:57,371 --> 02:27:00,911 I want to check to make sure that the user has more guesses, 4204 02:27:01,301 --> 02:27:01,661 right 4205 02:27:01,871 --> 02:27:04,363 in other words before I let the user 4206 02:27:04,394 --> 02:27:05,563 enter a gasp. 4207 02:27:05,833 --> 02:27:09,401 I want to check to see that they haven't already used up all their guesses. 4208 02:27:09,701 --> 02:27:10,691 so down here 4209 02:27:10,722 --> 02:27:12,281 I can make an if statement I can say 4210 02:27:12,312 --> 02:27:12,792 if 4211 02:27:13,302 --> 02:27:15,972 and inside of the condition I want to check to see that 4212 02:27:16,302 --> 02:27:16,901 guess 4213 02:27:16,961 --> 02:27:17,501 count 4214 02:27:18,611 --> 02:27:19,751 is less then 4215 02:27:20,201 --> 02:27:20,951 guess 4216 02:27:21,041 --> 02:27:21,551 limit 4217 02:27:22,661 --> 02:27:25,031 if gas count is less than guess limit. 4218 02:27:25,301 --> 02:27:26,651 that means that they haven't 4219 02:27:26,711 --> 02:27:27,341 guessed 4220 02:27:27,371 --> 02:27:27,761 the 4221 02:27:27,791 --> 02:27:31,333 total number of guesses that they have so they have some guesses left. 4222 02:27:31,873 --> 02:27:32,263 and 4223 02:27:32,293 --> 02:27:34,212 if that's the case and if that's true, 4224 02:27:34,602 --> 02:27:36,282 then I'm going to go ahead and 4225 02:27:37,572 --> 02:27:40,094 give them a guess and then we'll increment the guest count. 4226 02:27:40,724 --> 02:27:43,153 if this isn't true in other words, 4227 02:27:43,213 --> 02:27:43,992 if they 4228 02:27:44,022 --> 02:27:45,763 have reached their guests limit, 4229 02:27:46,213 --> 02:27:47,593 then I'm going to want to set 4230 02:27:47,652 --> 02:27:48,162 out 4231 02:27:48,492 --> 02:27:48,973 of 4232 02:27:49,423 --> 02:27:50,232 guesses 4233 02:27:50,652 --> 02:27:51,373 equal to 4234 02:27:51,403 --> 02:27:51,974 true 4235 02:27:52,334 --> 02:27:55,153 because there are guesses right they have no more guesses because 4236 02:27:55,333 --> 02:27:58,005 the gas count wasn't less than the guest limit. 4237 02:27:58,425 --> 02:28:01,334 and so that means that there are two gases so they have no more gases. 4238 02:28:01,394 --> 02:28:02,473 so there's actually 4239 02:28:02,683 --> 02:28:05,023 one more thing we need to do inside of this while loop 4240 02:28:05,054 --> 02:28:05,863 we need to 4241 02:28:05,894 --> 02:28:07,333 add another condition 4242 02:28:07,603 --> 02:28:08,863 onto this loop guard. 4243 02:28:09,104 --> 02:28:12,283 so right now we're going to keep looping as long as the guest 4244 02:28:12,313 --> 02:28:14,113 is not equal to the secret word 4245 02:28:14,533 --> 02:28:15,674 but remember 4246 02:28:15,914 --> 02:28:20,175 if the users out of gases in other words if they've reached their gas limit 4247 02:28:20,505 --> 02:28:22,185 we don't want them to guess anymore, 4248 02:28:22,274 --> 02:28:24,283 right so if they ran out of gas is then 4249 02:28:24,493 --> 02:28:28,603 we want to basically break out of this loop and not give them anymore guesses so 4250 02:28:28,633 --> 02:28:30,941 I'm going to go ahead and add another condition onto here 4251 02:28:31,331 --> 02:28:32,230 and I'm gonna say 4252 02:28:32,320 --> 02:28:32,801 wow 4253 02:28:32,831 --> 02:28:34,722 they haven't guessed the secret word 4254 02:28:34,781 --> 02:28:35,411 and 4255 02:28:35,471 --> 02:28:36,610 they're not 4256 02:28:37,120 --> 02:28:37,660 out 4257 02:28:38,021 --> 02:28:40,061 of gases so it's going to be not 4258 02:28:40,091 --> 02:28:40,811 out 4259 02:28:41,261 --> 02:28:42,011 of 4260 02:28:42,221 --> 02:28:43,001 guesses, 4261 02:28:43,661 --> 02:28:44,291 then 4262 02:28:44,891 --> 02:28:50,920 we're going to keep looping so as long as they haven't guessed the word and as long as they still have some guesses laugh we're going to keep looping 4263 02:28:51,010 --> 02:28:51,460 but 4264 02:28:51,940 --> 02:28:52,750 otherwise 4265 02:28:52,780 --> 02:28:54,011 we're going to break out of the loop. 4266 02:28:54,280 --> 02:28:55,571 and so down here 4267 02:28:55,812 --> 02:28:57,672 we're printing out you win, 4268 02:28:58,122 --> 02:29:00,792 but actually when we break out of this loop, 4269 02:29:00,852 --> 02:29:02,021 there's going to be two 4270 02:29:02,051 --> 02:29:03,461 possible scenarios. 4271 02:29:03,671 --> 02:29:04,331 so again, 4272 02:29:04,541 --> 02:29:07,780 there's two possible ways that this loop could andrei 4273 02:29:08,050 --> 02:29:10,210 either the gas is equal to the secret word. 4274 02:29:10,420 --> 02:29:13,060 so either the user guests of the word correctly, 4275 02:29:13,359 --> 02:29:14,050 or 4276 02:29:14,109 --> 02:29:16,180 the user ran out of guesses 4277 02:29:16,479 --> 02:29:17,020 and so 4278 02:29:17,199 --> 02:29:19,238 there's two situations down here 4279 02:29:19,479 --> 02:29:20,769 that we need to account for. 4280 02:29:21,129 --> 02:29:23,348 and so I'm going to use an if statement to figure out 4281 02:29:23,438 --> 02:29:23,857 which 4282 02:29:23,888 --> 02:29:24,967 is which I'm going to say 4283 02:29:24,997 --> 02:29:25,507 if. 4284 02:29:25,927 --> 02:29:26,856 and we're just going to say, 4285 02:29:26,946 --> 02:29:27,456 out 4286 02:29:27,876 --> 02:29:28,476 of 4287 02:29:28,716 --> 02:29:29,525 gases, 4288 02:29:30,726 --> 02:29:31,115 and, 4289 02:29:31,175 --> 02:29:32,796 if the user is out of guesses 4290 02:29:32,826 --> 02:29:33,845 that I want to print, 4291 02:29:36,545 --> 02:29:37,385 you lose 4292 02:29:37,415 --> 02:29:38,494 so we're basically going to be like 4293 02:29:38,524 --> 02:29:39,574 you lost the game. 4294 02:29:40,324 --> 02:29:41,435 otherwise though 4295 02:29:41,494 --> 02:29:42,154 if they're not 4296 02:29:42,185 --> 02:29:43,294 out of gases. 4297 02:29:43,534 --> 02:29:45,845 that means that they guessed the word correctly 4298 02:29:45,875 --> 02:29:46,955 so we're just going to pronounce 4299 02:29:46,985 --> 02:29:47,525 you win. 4300 02:29:48,695 --> 02:29:52,535 all right so now we have all the logic for this little guessing game set up 4301 02:29:52,565 --> 02:29:55,534 and let's see if we can run it and play through it so 4302 02:29:56,374 --> 02:29:57,755 I'm just going to run this program. 4303 02:29:58,564 --> 02:30:00,635 and now it's going to tell us to enter a guess 4304 02:30:00,665 --> 02:30:01,835 so why don't we 4305 02:30:01,895 --> 02:30:05,944 enter more guesses than we have so we're going to try to lose the game so I'm going to enter one gas 4306 02:30:06,274 --> 02:30:07,114 two guesses. 4307 02:30:07,324 --> 02:30:10,805 and now I'm on my final guess so if I don't get it here, 4308 02:30:11,135 --> 02:30:12,725 we should actually lose the game. 4309 02:30:13,295 --> 02:30:14,435 and you can see it says 4310 02:30:14,465 --> 02:30:15,995 out of guesses you lose. 4311 02:30:16,115 --> 02:30:17,766 so we were able to guess it 4312 02:30:17,796 --> 02:30:19,716 in the number of trials that we had. 4313 02:30:20,346 --> 02:30:21,636 let's run the program again 4314 02:30:21,666 --> 02:30:23,046 and we'll try to win the game. 4315 02:30:23,105 --> 02:30:23,766 so 4316 02:30:23,825 --> 02:30:25,114 we'll get a couple wrong. 4317 02:30:25,475 --> 02:30:27,456 let's say we're on our last gas and unlike 4318 02:30:27,486 --> 02:30:28,777 okay I can do this 4319 02:30:29,107 --> 02:30:30,817 so I type in the word and 4320 02:30:31,087 --> 02:30:31,687 bam 4321 02:30:31,717 --> 02:30:33,066 we won the game so, 4322 02:30:33,876 --> 02:30:36,516 that's how we can basically create a game where we have 4323 02:30:36,546 --> 02:30:37,536 a guess limit 4324 02:30:37,566 --> 02:30:38,017 so 4325 02:30:38,557 --> 02:30:39,605 this is a lot of code 4326 02:30:39,636 --> 02:30:41,885 let me walk you guys through this one more time 4327 02:30:41,915 --> 02:30:44,555 so you can just get a full understanding of what we're doing 4328 02:30:45,064 --> 02:30:47,434 up here I created a few different variables 4329 02:30:47,464 --> 02:30:49,504 we created this secret word variable 4330 02:30:49,714 --> 02:30:51,574 and we created this guests variable. 4331 02:30:52,024 --> 02:30:52,624 then 4332 02:30:52,894 --> 02:30:54,124 we also created 4333 02:30:54,154 --> 02:30:56,405 some more variable so we created this guests 4334 02:30:56,436 --> 02:30:57,455 count variable. 4335 02:30:57,725 --> 02:31:00,935 and this just keeps track of how many times the user has 4336 02:31:01,085 --> 02:31:01,745 guessed 4337 02:31:01,805 --> 02:31:02,495 the word. 4338 02:31:02,825 --> 02:31:04,296 and you can see down here. 4339 02:31:04,656 --> 02:31:05,557 every time 4340 02:31:05,587 --> 02:31:07,086 we give them a gas 4341 02:31:07,956 --> 02:31:08,946 were incremental 4342 02:31:08,977 --> 02:31:09,727 the guest count. 4343 02:31:10,536 --> 02:31:11,706 we also have guests 4344 02:31:11,736 --> 02:31:12,276 limit 4345 02:31:12,576 --> 02:31:16,688 and gas limit is telling the program how many times the user can guess. 4346 02:31:17,197 --> 02:31:22,178 so before I go through this while loop the first thing I'm doing is I'm checking to see that the guest 4347 02:31:22,208 --> 02:31:22,718 count 4348 02:31:23,048 --> 02:31:24,487 is less than the guests limit. 4349 02:31:24,787 --> 02:31:25,628 in other words 4350 02:31:25,778 --> 02:31:27,759 do they still have some guesses 4351 02:31:27,789 --> 02:31:28,389 left 4352 02:31:28,599 --> 02:31:29,679 if they do, 4353 02:31:30,009 --> 02:31:32,169 then we're going to get the input from the user. 4354 02:31:32,559 --> 02:31:33,639 otherwise, 4355 02:31:33,698 --> 02:31:34,388 we have this 4356 02:31:34,418 --> 02:31:36,158 other variable up here called 4357 02:31:36,188 --> 02:31:37,328 out of gases 4358 02:31:37,628 --> 02:31:41,347 and out of gases is going to tell us whether or not they have some guesses left. 4359 02:31:41,707 --> 02:31:43,237 so this is equal to false. 4360 02:31:43,297 --> 02:31:45,037 that means they have some guesses, 4361 02:31:45,397 --> 02:31:47,648 if it's equal to true however it means 4362 02:31:47,979 --> 02:31:48,849 no more dice 4363 02:31:48,879 --> 02:31:50,889 no more guesses they are done 4364 02:31:50,919 --> 02:31:52,059 so they lost the game. 4365 02:31:52,479 --> 02:31:56,558 the last thing we needed to do is specify an additional condition up here. 4366 02:31:57,038 --> 02:31:57,488 so 4367 02:31:57,519 --> 02:31:59,708 we are going to keep looping through the code 4368 02:31:59,738 --> 02:32:01,028 inside of this loop, 4369 02:32:01,418 --> 02:32:03,878 as long as the conditions up here 4370 02:32:04,088 --> 02:32:04,808 are true. 4371 02:32:05,527 --> 02:32:07,928 so as long as they haven't guessed the word. 4372 02:32:08,408 --> 02:32:08,979 and 4373 02:32:09,248 --> 02:32:10,598 as long as they're not 4374 02:32:10,657 --> 02:32:11,978 out of guesses. 4375 02:32:12,487 --> 02:32:13,718 we are going to keep 4376 02:32:13,748 --> 02:32:14,978 looping through. 4377 02:32:15,277 --> 02:32:15,968 and so 4378 02:32:16,027 --> 02:32:18,697 when eventually the user does break out of this loop, 4379 02:32:18,817 --> 02:32:23,319 there's going to be two possible situations the first situation is that they ran out of guesses 4380 02:32:23,350 --> 02:32:26,048 and so we want to check to see if that's the situation. 4381 02:32:26,408 --> 02:32:28,479 I want to check to see if they're out of guesses. 4382 02:32:28,748 --> 02:32:29,498 if they are 4383 02:32:29,528 --> 02:32:31,089 will print out a lose message, 4384 02:32:31,299 --> 02:32:32,079 if they're not, 4385 02:32:32,289 --> 02:32:34,208 then they must have guessed it correctly so 4386 02:32:34,268 --> 02:32:34,778 they win. 4387 02:32:34,929 --> 02:32:37,149 and so that is how we can use while loops 4388 02:32:37,180 --> 02:32:37,569 and 4389 02:32:37,600 --> 02:32:38,319 if statements 4390 02:32:38,350 --> 02:32:39,400 and also variables 4391 02:32:39,610 --> 02:32:42,762 in combination with each other to build a pretty awesome 4392 02:32:42,792 --> 02:32:43,542 guessing game 4393 02:32:47,922 --> 02:32:50,384 in this tutorial on a talk show guys by using 4394 02:32:50,414 --> 02:32:52,395 for loops in python. 4395 02:32:52,814 --> 02:32:53,654 now a for loop 4396 02:32:53,685 --> 02:32:57,256 is a special type of loop in python which allows us 4397 02:32:57,286 --> 02:33:00,076 to loop over a different collections 4398 02:33:00,376 --> 02:33:00,706 of 4399 02:33:00,736 --> 02:33:01,276 items. 4400 02:33:01,517 --> 02:33:06,194 so a lot of times will use for loops in python to like loop through different arrays 4401 02:33:06,464 --> 02:33:07,185 or we can loop 4402 02:33:07,215 --> 02:33:10,034 over like the letters inside of a string or 4403 02:33:10,214 --> 02:33:11,504 we could just loop through like 4404 02:33:11,534 --> 02:33:11,864 a 4405 02:33:12,194 --> 02:33:13,455 series of numbers 4406 02:33:13,635 --> 02:33:16,453 so for lives provide a very specific purpose. 4407 02:33:16,663 --> 02:33:18,973 and the easiest way to kind of wrap your head around 4408 02:33:19,003 --> 02:33:21,372 why four lives are useful as it is for me to show you guys 4409 02:33:21,672 --> 02:33:23,021 a bunch of different examples so 4410 02:33:23,052 --> 02:33:24,672 that's exactly what I'm going to do, 4411 02:33:25,062 --> 02:33:29,291 we're going to look at why four lives are awesome so down here in my 4412 02:33:29,561 --> 02:33:30,790 text file and my a 4413 02:33:30,820 --> 02:33:31,751 python file. 4414 02:33:31,841 --> 02:33:33,160 I'm going to write out a couple different 4415 02:33:33,190 --> 02:33:33,851 for lives. 4416 02:33:34,271 --> 02:33:35,740 so the way that we create a for loop 4417 02:33:35,771 --> 02:33:37,270 is just by saying four. 4418 02:33:37,930 --> 02:33:40,749 and now what I want to do is specify 4419 02:33:40,779 --> 02:33:41,199 a 4420 02:33:41,229 --> 02:33:42,189 variable 4421 02:33:42,609 --> 02:33:44,979 and this variable is going to 4422 02:33:45,009 --> 02:33:46,239 essentially represent 4423 02:33:46,270 --> 02:33:46,689 a 4424 02:33:46,720 --> 02:33:48,100 different value 4425 02:33:48,489 --> 02:33:51,250 every time we go through this for loop 4426 02:33:51,520 --> 02:33:52,539 and you guys will see 4427 02:33:52,569 --> 02:33:56,109 how that works in a second but just know that this variable is going to 4428 02:33:56,319 --> 02:33:58,390 be used on every iteration 4429 02:33:58,420 --> 02:33:59,410 of our for loop, 4430 02:33:59,860 --> 02:34:00,221 and 4431 02:34:00,251 --> 02:34:01,031 each time 4432 02:34:01,062 --> 02:34:03,221 it will most likely have a different 4433 02:34:03,251 --> 02:34:04,211 value so 4434 02:34:04,811 --> 02:34:06,849 in our case I'm just going to call this letter. 4435 02:34:07,059 --> 02:34:08,889 and I'm going to save four letter 4436 02:34:09,278 --> 02:34:09,908 inn. 4437 02:34:10,628 --> 02:34:13,326 and now what I wanna do is I want to specify 4438 02:34:13,356 --> 02:34:14,377 a collection 4439 02:34:14,407 --> 02:34:15,728 that I want to loop over. 4440 02:34:15,938 --> 02:34:16,418 one 4441 02:34:16,478 --> 02:34:18,669 example of this would be like a string 4442 02:34:18,699 --> 02:34:21,279 so I can put a string in here I can just put like draft 4443 02:34:21,640 --> 02:34:22,420 academy. 4444 02:34:22,990 --> 02:34:24,490 and now I can just put a colon 4445 02:34:24,760 --> 02:34:28,029 and so basically what this is gonna say it so it's going to say for 4446 02:34:28,089 --> 02:34:29,169 every letter 4447 02:34:29,499 --> 02:34:31,239 inside of draft academy. 4448 02:34:31,569 --> 02:34:32,770 I want to do something 4449 02:34:33,250 --> 02:34:35,800 and so down here inside of this for loop 4450 02:34:35,830 --> 02:34:37,630 and again we need to indent this 4451 02:34:38,500 --> 02:34:40,358 we can put what we want to do with 4452 02:34:40,389 --> 02:34:45,158 each letter so let me just show you guys like basically what this is going to do so I can print out 4453 02:34:46,148 --> 02:34:48,817 letters I can print out this letter variable. 4454 02:34:49,117 --> 02:34:52,056 and it's actually going to print out a different letter 4455 02:34:52,086 --> 02:34:54,306 inside of this dropoff academy string 4456 02:34:54,575 --> 02:34:56,556 on every single iteration 4457 02:34:56,586 --> 02:34:57,665 of this loop. 4458 02:34:57,935 --> 02:34:58,415 so 4459 02:34:58,445 --> 02:34:59,706 I'm gonna run this program. 4460 02:35:00,576 --> 02:35:00,996 and 4461 02:35:01,266 --> 02:35:05,347 down here inside of my counsel you'll see that I'm basically printing out 4462 02:35:05,646 --> 02:35:07,297 draff academy so 4463 02:35:07,566 --> 02:35:09,517 on the first iteration of the loop. 4464 02:35:09,637 --> 02:35:13,026 I printed out the first letter in draft academy which was g 4465 02:35:13,477 --> 02:35:15,097 on the second iteration of the loop 4466 02:35:15,127 --> 02:35:15,847 I printed out 4467 02:35:15,906 --> 02:35:16,446 I 4468 02:35:16,626 --> 02:35:18,516 third was our fourth with 4469 02:35:18,546 --> 02:35:18,936 a. 4470 02:35:19,205 --> 02:35:19,715 so 4471 02:35:19,774 --> 02:35:22,023 I'm essentially just looping through 4472 02:35:22,054 --> 02:35:23,224 all of the letters 4473 02:35:23,283 --> 02:35:24,062 inside of 4474 02:35:24,093 --> 02:35:25,113 draff academy. 4475 02:35:25,503 --> 02:35:26,254 so I'm saying 4476 02:35:26,284 --> 02:35:27,004 for 4477 02:35:27,034 --> 02:35:27,874 each letter 4478 02:35:27,904 --> 02:35:29,165 in dropoff academy. 4479 02:35:29,345 --> 02:35:30,034 I want to print 4480 02:35:30,064 --> 02:35:30,364 out 4481 02:35:30,395 --> 02:35:30,845 that 4482 02:35:30,875 --> 02:35:31,325 letter. 4483 02:35:31,625 --> 02:35:33,035 and so this is kind of like 4484 02:35:33,065 --> 02:35:36,395 how for loops can be used we can define a variable 4485 02:35:36,755 --> 02:35:38,914 and that variable will change 4486 02:35:39,094 --> 02:35:39,634 on each 4487 02:35:39,664 --> 02:35:42,604 iteration of the loop right so on the first iteration of the loop. 4488 02:35:42,904 --> 02:35:45,213 this letter variable represented a g. 4489 02:35:45,423 --> 02:35:46,952 on the second iteration of the loop. 4490 02:35:47,162 --> 02:35:48,453 the letter variable stores 4491 02:35:48,483 --> 02:35:49,054 the value 4492 02:35:49,113 --> 02:35:49,623 I 4493 02:35:49,683 --> 02:35:50,253 excited 4494 02:35:50,283 --> 02:35:51,482 right so we went through 4495 02:35:51,872 --> 02:35:53,913 this entire string we were able to print 4496 02:35:53,943 --> 02:35:54,304 out 4497 02:35:54,394 --> 02:35:55,264 each letter. 4498 02:35:55,533 --> 02:36:02,011 so in addition to using this with strings we can also use this with other collections for example like an array. 4499 02:36:02,280 --> 02:36:04,261 so if I created in array up here, 4500 02:36:04,320 --> 02:36:05,160 let's call it 4501 02:36:05,190 --> 02:36:05,940 friends. 4502 02:36:06,091 --> 02:36:06,931 I'm gonna set this 4503 02:36:06,961 --> 02:36:09,362 equal to a bunch of different values so we can 4504 02:36:09,452 --> 02:36:11,462 put like a list of our friends in hearings zelig 4505 02:36:11,492 --> 02:36:12,062 jim 4506 02:36:12,872 --> 02:36:13,742 karen 4507 02:36:13,982 --> 02:36:14,522 and 4508 02:36:14,643 --> 02:36:15,183 kevin 4509 02:36:15,692 --> 02:36:18,092 instead of saying the letter why don't we call this 4510 02:36:18,122 --> 02:36:18,932 friend, 4511 02:36:19,622 --> 02:36:21,272 and I could say for friend 4512 02:36:21,303 --> 02:36:21,933 in 4513 02:36:23,463 --> 02:36:24,303 friends 4514 02:36:24,723 --> 02:36:26,223 and now will print out 4515 02:36:26,763 --> 02:36:27,423 the friend 4516 02:36:27,963 --> 02:36:28,503 so 4517 02:36:28,533 --> 02:36:29,942 over here I'm saying for 4518 02:36:29,973 --> 02:36:30,812 each friend 4519 02:36:30,843 --> 02:36:32,463 inside of this friends 4520 02:36:32,493 --> 02:36:33,184 array. 4521 02:36:33,363 --> 02:36:35,434 I want to print out the friend so now 4522 02:36:35,613 --> 02:36:37,174 we'll actually be able to print out 4523 02:36:37,233 --> 02:36:37,533 each 4524 02:36:37,563 --> 02:36:40,172 element inside of that array so not here you'll see 4525 02:36:40,472 --> 02:36:41,731 we're printing out gym 4526 02:36:41,972 --> 02:36:46,503 and then on the second iteration were putting out karen and on the third would bring up kevin tso, 4527 02:36:46,833 --> 02:36:48,871 and he was a loop through all of the values 4528 02:36:48,931 --> 02:36:50,460 inside of the array. 4529 02:36:50,970 --> 02:36:51,359 and 4530 02:36:51,390 --> 02:36:52,709 just so you guys know like 4531 02:36:52,829 --> 02:36:55,858 you can name this variable whatever you want so I could name 4532 02:36:55,889 --> 02:36:58,049 I could give this like any random name, 4533 02:36:58,949 --> 02:37:02,309 and if I want to access it though I have to access it using that 4534 02:37:02,339 --> 02:37:02,969 same 4535 02:37:02,999 --> 02:37:03,599 name 4536 02:37:03,688 --> 02:37:08,040 so we can loop through asking me like an array we can also just loop through 4537 02:37:08,070 --> 02:37:09,510 a series of numbers 4538 02:37:09,540 --> 02:37:10,770 so I could say 4539 02:37:10,829 --> 02:37:12,029 index over here 4540 02:37:12,299 --> 02:37:14,818 and again this can be anything I'm just gonna call index 4541 02:37:15,238 --> 02:37:16,947 so we could say for index 4542 02:37:16,978 --> 02:37:17,548 in 4543 02:37:17,998 --> 02:37:18,718 range 4544 02:37:18,748 --> 02:37:22,228 and then in here I can pass in a number so I can pass in like 4545 02:37:22,258 --> 02:37:23,368 ten for example. 4546 02:37:24,028 --> 02:37:26,308 and down here I'm just going to print out the index. 4547 02:37:26,397 --> 02:37:27,627 when I run this program, 4548 02:37:27,837 --> 02:37:28,946 you guys will see that 4549 02:37:29,456 --> 02:37:32,575 it's basically going to print out every number in the range 4550 02:37:32,605 --> 02:37:34,105 from zero to ten, 4551 02:37:34,256 --> 02:37:35,636 not including ten 4552 02:37:35,936 --> 02:37:40,495 so starting with zero it's going to put out zero one two three four five six seven eight 4553 02:37:40,525 --> 02:37:41,006 nine. 4554 02:37:41,546 --> 02:37:43,136 but notice that it didn't print 4555 02:37:43,166 --> 02:37:43,526 out 4556 02:37:43,586 --> 02:37:44,126 ten 4557 02:37:44,156 --> 02:37:47,035 so it's essentially just printing out all the numbers between 4558 02:37:47,485 --> 02:37:48,626 zero and 4559 02:37:48,836 --> 02:37:49,316 ten 4560 02:37:49,347 --> 02:37:50,456 not including ton. 4561 02:37:51,236 --> 02:37:52,376 you can also specify 4562 02:37:52,406 --> 02:37:52,826 a 4563 02:37:53,156 --> 02:37:55,767 a range of numbers so I can say for example like 4564 02:37:56,156 --> 02:37:57,686 three and ten. 4565 02:37:57,955 --> 02:38:01,555 and now this will print out all the numbers between three and ten 4566 02:38:01,705 --> 02:38:03,235 not including ten 4567 02:38:03,596 --> 02:38:05,097 so run this program, 4568 02:38:06,537 --> 02:38:07,467 and you can see we print 4569 02:38:07,497 --> 02:38:08,966 out three four five six seven 4570 02:38:08,996 --> 02:38:09,775 eight nine 4571 02:38:09,865 --> 02:38:10,915 ten not ten 4572 02:38:11,365 --> 02:38:13,436 so whatever value that you put 4573 02:38:14,365 --> 02:38:16,075 here in this second position 4574 02:38:16,135 --> 02:38:18,295 is not gonna get included in the range 4575 02:38:18,564 --> 02:38:19,555 and ranges can be 4576 02:38:19,734 --> 02:38:22,134 really is also for example I could use a range 4577 02:38:22,374 --> 02:38:25,854 to loop through an array just like we did before. 4578 02:38:25,975 --> 02:38:28,556 so if I wanted I could say something like for 4579 02:38:28,586 --> 02:38:29,246 index 4580 02:38:29,306 --> 02:38:30,415 in range 4581 02:38:30,475 --> 02:38:31,164 and now 4582 02:38:31,194 --> 02:38:32,693 inside of this range 4583 02:38:32,724 --> 02:38:33,863 I can pass in 4584 02:38:33,894 --> 02:38:34,703 the length 4585 02:38:34,733 --> 02:38:35,214 of 4586 02:38:35,273 --> 02:38:36,113 the array. 4587 02:38:36,533 --> 02:38:37,014 so 4588 02:38:37,044 --> 02:38:40,824 just so you guys know if I wanted to get the length of this array. 4589 02:38:41,214 --> 02:38:44,845 in other words if I wanted to figure out how many elements were inside of it. 4590 02:38:45,145 --> 02:38:46,374 I could just type out 4591 02:38:46,464 --> 02:38:47,214 alli end 4592 02:38:47,273 --> 02:38:48,714 and then inside parentheses. 4593 02:38:49,104 --> 02:38:50,663 the name of the array and so 4594 02:38:50,903 --> 02:38:54,803 this is going to spit out three because there's three elements 4595 02:38:54,833 --> 02:38:55,673 inside of here 4596 02:38:55,703 --> 02:38:56,033 right 4597 02:38:56,394 --> 02:38:57,264 kind of make sense. 4598 02:38:57,863 --> 02:39:01,854 so what I can do is I can say down here inside of this range function 4599 02:39:01,884 --> 02:39:02,934 I can just type in 4600 02:39:03,023 --> 02:39:03,804 eliane 4601 02:39:04,193 --> 02:39:04,854 and then 4602 02:39:05,094 --> 02:39:05,844 friends. 4603 02:39:06,144 --> 02:39:09,505 and so what this is gonna do is it's going to essentially give me 4604 02:39:09,865 --> 02:39:10,525 a range 4605 02:39:10,556 --> 02:39:13,316 between zero and the number of friends. 4606 02:39:13,376 --> 02:39:14,606 inside of this list 4607 02:39:14,637 --> 02:39:16,735 so down here I could actually type out 4608 02:39:17,426 --> 02:39:18,416 friends 4609 02:39:19,376 --> 02:39:20,096 index. 4610 02:39:20,396 --> 02:39:21,866 and this will allow me to access 4611 02:39:21,896 --> 02:39:22,257 each 4612 02:39:22,316 --> 02:39:24,656 individual friend inside of this list. 4613 02:39:24,836 --> 02:39:27,086 just like we did before but now I'm doing it with 4614 02:39:27,116 --> 02:39:27,836 a range, 4615 02:39:28,166 --> 02:39:29,396 so you can see I'm 4616 02:39:29,996 --> 02:39:32,126 typing out jim care and kevin so 4617 02:39:32,396 --> 02:39:33,115 actually 4618 02:39:33,385 --> 02:39:33,924 for each 4619 02:39:33,954 --> 02:39:35,334 iteration through this loop 4620 02:39:35,364 --> 02:39:37,344 it's basically going to be printing out 4621 02:39:37,584 --> 02:39:38,544 friends 4622 02:39:38,634 --> 02:39:39,474 zero 4623 02:39:40,283 --> 02:39:41,273 friends one 4624 02:39:41,543 --> 02:39:42,594 and then friends 4625 02:39:42,653 --> 02:39:43,583 too because 4626 02:39:43,913 --> 02:39:46,192 in heater were passing in a three 4627 02:39:46,702 --> 02:39:50,062 and remember whenever I pass in there it's going to range from zero 4628 02:39:50,151 --> 02:39:51,620 all the way up to that number 4629 02:39:51,650 --> 02:39:53,540 but not including that number so 4630 02:39:53,930 --> 02:39:56,780 that's another way that we can print out all the elements in the array 4631 02:39:56,960 --> 02:39:57,380 and 4632 02:39:57,439 --> 02:40:02,720 looping through something like an array is actually a very very common use case 4633 02:40:02,750 --> 02:40:03,830 for four loops. 4634 02:40:04,130 --> 02:40:08,510 but like I said we can you spoil hopes to loop through essentially any collection that we have so 4635 02:40:08,720 --> 02:40:11,630 we can loop through like a string that we could also loop through 4636 02:40:12,260 --> 02:40:13,790 you know something like an array so 4637 02:40:14,180 --> 02:40:17,179 this can be really useful and bats are the basics 4638 02:40:17,209 --> 02:40:18,409 of for loops 4639 02:40:18,439 --> 02:40:18,829 in 4640 02:40:18,859 --> 02:40:19,459 python. 4641 02:40:19,789 --> 02:40:22,787 and I also want to show you guys one more example just while we're here 4642 02:40:22,817 --> 02:40:23,478 so 4643 02:40:23,987 --> 02:40:25,877 why don't we go ahead and print out a range 4644 02:40:25,907 --> 02:40:26,867 up to 4645 02:40:26,927 --> 02:40:27,617 five 4646 02:40:27,647 --> 02:40:29,388 brace this would just be a simple program 4647 02:40:29,808 --> 02:40:31,787 you can use all sorts of logic 4648 02:40:31,817 --> 02:40:33,137 inside of these four lives. 4649 02:40:33,287 --> 02:40:37,787 so let's say that I wanted to do something special on the first iteration of the loop. 4650 02:40:38,087 --> 02:40:39,106 so I could say 4651 02:40:39,467 --> 02:40:39,977 if 4652 02:40:40,366 --> 02:40:41,026 index 4653 02:40:41,057 --> 02:40:42,316 is equal to zero 4654 02:40:43,217 --> 02:40:43,637 and 4655 02:40:43,667 --> 02:40:48,943 if the index to zero than we know it's the first iteration of the loop so I could do something special I could like print out 4656 02:40:49,063 --> 02:40:49,754 first 4657 02:40:49,813 --> 02:40:50,594 iteration. 4658 02:40:51,044 --> 02:40:52,993 and then otherwise we could just 4659 02:40:53,474 --> 02:40:54,374 print lake 4660 02:40:56,414 --> 02:40:58,845 not first so this would be an example of like 4661 02:40:59,055 --> 02:41:01,725 maybe you want to do something on the first iteration of the loop 4662 02:41:01,965 --> 02:41:03,164 and do something else on 4663 02:41:03,404 --> 02:41:05,563 subsequent iteration so if I play this 4664 02:41:05,983 --> 02:41:08,323 you'll see only on the first iteration is it 4665 02:41:08,354 --> 02:41:11,146 printing this out and otherwise it's printing out other stuff so 4666 02:41:11,415 --> 02:41:11,655 you 4667 02:41:11,686 --> 02:41:12,976 don't be afraid to 4668 02:41:13,006 --> 02:41:14,625 put some complex logic 4669 02:41:14,655 --> 02:41:16,004 inside of these four lives 4670 02:41:16,304 --> 02:41:16,754 because 4671 02:41:16,784 --> 02:41:19,305 it can really make your programs more powerful 4672 02:41:23,564 --> 02:41:25,753 in this tutorial I'll show you guys how to build an 4673 02:41:25,783 --> 02:41:27,043 exponent function 4674 02:41:27,073 --> 02:41:29,983 are an exponent function is basically going to allow us 4675 02:41:30,014 --> 02:41:30,464 to 4676 02:41:30,494 --> 02:41:33,972 take a certain number and raise it to a specific power. 4677 02:41:34,332 --> 02:41:38,651 so in python there's actually a really easy way to do this I can come down here and I could print. 4678 02:41:39,281 --> 02:41:40,092 we could say like 4679 02:41:40,122 --> 02:41:40,962 too. 4680 02:41:41,231 --> 02:41:42,012 and we can just do 4681 02:41:42,042 --> 02:41:43,662 two multiplication signs 4682 02:41:43,992 --> 02:41:45,192 and I could say three 4683 02:41:45,492 --> 02:41:47,742 and this is basically just going to be two 4684 02:41:47,802 --> 02:41:49,632 raised to the third power. 4685 02:41:50,142 --> 02:41:50,892 so 4686 02:41:51,012 --> 02:41:51,461 you can 4687 02:41:51,491 --> 02:41:53,172 see here I can just print this out and 4688 02:41:53,202 --> 02:41:53,772 we get a 4689 02:41:53,803 --> 02:41:54,433 cassettes 4690 02:41:54,492 --> 02:41:55,212 to cube 4691 02:41:55,242 --> 02:41:55,662 so 4692 02:41:55,902 --> 02:41:58,603 it's really easy to do exponents in python. 4693 02:41:59,202 --> 02:42:00,401 but I want to show you guys, 4694 02:42:00,461 --> 02:42:07,060 how we can use something like a for loop in order to create a function like this of our own sun will actually create an 4695 02:42:07,119 --> 02:42:07,839 exponent 4696 02:42:07,869 --> 02:42:08,619 function 4697 02:42:08,919 --> 02:42:11,320 that will basically do this and we'll use 4698 02:42:11,351 --> 02:42:12,311 for loops to do it 4699 02:42:12,461 --> 02:42:12,941 so 4700 02:42:13,541 --> 02:42:14,741 let's create a function. 4701 02:42:14,801 --> 02:42:16,030 something as a death 4702 02:42:16,061 --> 02:42:17,261 and now we need to give this 4703 02:42:17,291 --> 02:42:19,330 function a name so why don't we call it 4704 02:42:19,420 --> 02:42:20,229 raise 4705 02:42:20,260 --> 02:42:21,010 two 4706 02:42:21,340 --> 02:42:21,910 power 4707 02:42:22,780 --> 02:42:23,860 and inside of here, 4708 02:42:24,221 --> 02:42:27,610 I'm going to accept two parameters the first parameter is going to be the 4709 02:42:27,641 --> 02:42:28,780 base number. 4710 02:42:29,290 --> 02:42:30,040 and then the second 4711 02:42:30,070 --> 02:42:31,571 parameter is going to be the 4712 02:42:31,661 --> 02:42:34,631 power number so we're going to take the base number 4713 02:42:34,811 --> 02:42:35,980 and raise it to 4714 02:42:36,011 --> 02:42:37,031 the power number. 4715 02:42:37,512 --> 02:42:38,172 so 4716 02:42:38,202 --> 02:42:39,012 over here we can just 4717 02:42:39,042 --> 02:42:39,912 make a colon 4718 02:42:40,182 --> 02:42:40,662 now 4719 02:42:41,172 --> 02:42:44,473 inside of this function when you start writing some code. 4720 02:42:44,742 --> 02:42:45,461 here's the thing 4721 02:42:46,031 --> 02:42:48,701 inside the function we don't necessarily know 4722 02:42:48,731 --> 02:42:50,862 the value of this poem, 4723 02:42:51,252 --> 02:42:51,612 right 4724 02:42:51,792 --> 02:42:53,142 for them why have we knew 4725 02:42:53,172 --> 02:42:56,921 that we were just trying to like square this number or cube this number. 4726 02:42:57,131 --> 02:42:58,541 I could just return 4727 02:42:59,021 --> 02:43:00,102 like bass 4728 02:43:00,161 --> 02:43:00,852 num 4729 02:43:01,182 --> 02:43:02,052 times 4730 02:43:02,231 --> 02:43:02,861 basal cell 4731 02:43:02,921 --> 02:43:03,221 right 4732 02:43:03,251 --> 02:43:05,771 now it's square the number or I could keep the number 4733 02:43:06,252 --> 02:43:06,972 bass num 4734 02:43:07,031 --> 02:43:08,891 so right so this would be like the number cubed. 4735 02:43:09,131 --> 02:43:11,981 the problem is though we don't know like right off the bat 4736 02:43:12,012 --> 02:43:13,661 what this value is going to be 4737 02:43:13,991 --> 02:43:16,632 right this could change like the user can decide that. 4738 02:43:17,021 --> 02:43:21,433 so in order to write this function we're actually going to need to use a for loop. 4739 02:43:21,763 --> 02:43:23,412 and I'm sure you guys how it can use a for loop 4740 02:43:23,442 --> 02:43:25,333 to basically figured this out so 4741 02:43:25,693 --> 02:43:28,902 the first thing I want to do is create a variable and I'm just going to call it 4742 02:43:28,933 --> 02:43:29,713 result. 4743 02:43:30,373 --> 02:43:31,633 and we're just going to set the result 4744 02:43:31,663 --> 02:43:34,364 equal to one so we're gonna start this off at one. 4745 02:43:34,814 --> 02:43:36,074 now I want to create 4746 02:43:36,104 --> 02:43:37,334 a for loop, 4747 02:43:37,394 --> 02:43:38,953 so I'm basically just gonna say 4748 02:43:38,983 --> 02:43:39,674 four 4749 02:43:40,574 --> 02:43:41,564 and over here, 4750 02:43:41,834 --> 02:43:43,663 I don't want to specify like 4751 02:43:43,693 --> 02:43:44,144 a 4752 02:43:44,233 --> 02:43:46,123 index on aug eight index 4753 02:43:46,363 --> 02:43:46,903 in 4754 02:43:47,023 --> 02:43:48,824 and now want to specify a range 4755 02:43:48,884 --> 02:43:50,324 and arrange will basically 4756 02:43:50,354 --> 02:43:51,044 range us 4757 02:43:51,074 --> 02:43:51,584 through 4758 02:43:51,614 --> 02:43:52,124 a 4759 02:43:52,184 --> 02:43:53,623 collection of numbers. 4760 02:43:53,923 --> 02:43:55,183 so basically I want to 4761 02:43:55,272 --> 02:43:56,863 multiply the bass num 4762 02:43:56,894 --> 02:43:57,974 by itself, 4763 02:43:58,544 --> 02:44:01,064 as many times as the pound numb 4764 02:44:01,095 --> 02:44:02,114 specifies 4765 02:44:02,174 --> 02:44:02,624 right 4766 02:44:02,954 --> 02:44:04,483 over here I can just make this 4767 02:44:04,514 --> 02:44:05,443 a range 4768 02:44:05,503 --> 02:44:06,163 of 4769 02:44:06,283 --> 02:44:06,883 power 4770 02:44:06,913 --> 02:44:07,453 numb 4771 02:44:07,843 --> 02:44:10,512 right and so we'll basically a loop through 4772 02:44:10,542 --> 02:44:11,652 this for loop 4773 02:44:11,952 --> 02:44:15,281 as many times as pound them so eponymous two 4774 02:44:15,551 --> 02:44:16,750 will loop through it twice. 4775 02:44:16,900 --> 02:44:19,301 economists for will luther at four times 4776 02:44:19,570 --> 02:44:23,170 and every time through the loop will multiply bass num by itself 4777 02:44:23,200 --> 02:44:25,631 or actually you'll see we're going to multiply it by this result, 4778 02:44:26,111 --> 02:44:27,191 and so down here inside 4779 02:44:27,222 --> 02:44:27,972 this for loop 4780 02:44:28,002 --> 02:44:29,262 I can basically say 4781 02:44:29,622 --> 02:44:30,342 result 4782 02:44:30,372 --> 02:44:31,481 is equal to 4783 02:44:31,901 --> 02:44:32,651 result 4784 02:44:32,802 --> 02:44:33,762 times, 4785 02:44:34,332 --> 02:44:35,082 pacing up 4786 02:44:35,262 --> 02:44:38,772 this should actually give us everything we need to take this number 4787 02:44:38,982 --> 02:44:40,723 to the specific power so 4788 02:44:40,933 --> 02:44:42,162 the actual like 4789 02:44:42,192 --> 02:44:42,942 result 4790 02:44:43,212 --> 02:44:44,501 of doing the math 4791 02:44:44,531 --> 02:44:45,762 is going to get stored 4792 02:44:45,792 --> 02:44:46,872 inside of this 4793 02:44:46,902 --> 02:44:47,622 result 4794 02:44:47,652 --> 02:44:48,643 variable so 4795 02:44:49,123 --> 02:44:50,293 the first time through the loop, 4796 02:44:50,353 --> 02:44:52,692 we're just multiplying basin on by one 4797 02:44:52,752 --> 02:44:53,292 right. 4798 02:44:53,832 --> 02:44:54,912 and so now result 4799 02:44:54,942 --> 02:44:55,933 is going to become 4800 02:44:55,992 --> 02:44:57,432 the same value is based on 4801 02:44:57,731 --> 02:45:01,422 the second time through the loop so this would be if we were squaring the number. 4802 02:45:01,632 --> 02:45:05,383 we're basically multiplying resort by basin um again so it's essentially just 4803 02:45:05,413 --> 02:45:07,184 based on long times based on 4804 02:45:07,573 --> 02:45:08,864 the third time through the loop 4805 02:45:08,895 --> 02:45:10,904 we're multiplying result times bass num 4806 02:45:10,935 --> 02:45:12,314 so we're essentially just like 4807 02:45:12,345 --> 02:45:13,695 keeping the number so 4808 02:45:13,905 --> 02:45:15,586 that's essentially what this for loop 4809 02:45:15,616 --> 02:45:16,727 is doing for us. 4810 02:45:16,937 --> 02:45:18,586 so the last thing I want to do is 4811 02:45:18,676 --> 02:45:20,506 right here below this for loop 4812 02:45:20,536 --> 02:45:21,047 I'm just going to 4813 02:45:21,077 --> 02:45:21,827 return 4814 02:45:22,308 --> 02:45:22,998 the result 4815 02:45:23,028 --> 02:45:23,568 so 4816 02:45:23,748 --> 02:45:28,369 we'll be able to return whatever the result of raising the number to the power was 4817 02:45:29,060 --> 02:45:29,961 so let's come down 4818 02:45:29,991 --> 02:45:33,681 after this function and we're just going to call it so I'm just going to say, 4819 02:45:34,490 --> 02:45:36,170 actually will print out the answer so 4820 02:45:36,320 --> 02:45:38,301 save raise to power 4821 02:45:38,751 --> 02:45:41,961 and the inside of these pregnancies member we can pass two numbers so let's 4822 02:45:42,021 --> 02:45:43,400 raise three 4823 02:45:43,910 --> 02:45:47,479 to the second power so we're just going to square three and we'll see how this works 4824 02:45:47,510 --> 02:45:47,960 so 4825 02:45:48,350 --> 02:45:49,249 from the program 4826 02:45:49,639 --> 02:45:53,028 and you can see down here in the console were getting nine. 4827 02:45:53,088 --> 02:45:54,197 let's try something a little bit 4828 02:45:54,527 --> 02:45:55,157 crazier 4829 02:45:55,397 --> 02:45:56,508 drive three 4830 02:45:56,538 --> 02:45:57,738 to the fourth power 4831 02:45:58,309 --> 02:45:59,509 and will run this 4832 02:45:59,568 --> 02:46:00,049 aggregate 4833 02:46:00,079 --> 02:46:01,428 eighty one so that's 4834 02:46:01,458 --> 02:46:02,657 three to the fourth power. 4835 02:46:03,138 --> 02:46:05,718 let's try two to the third power 4836 02:46:05,897 --> 02:46:06,767 and were getting eight 4837 02:46:06,797 --> 02:46:07,667 yeah so that makes us 4838 02:46:07,697 --> 02:46:08,087 so 4839 02:46:08,807 --> 02:46:10,787 our raised the power function is working 4840 02:46:10,817 --> 02:46:13,906 just as expected and that is what he has to do it one more time. 4841 02:46:14,176 --> 02:46:14,836 so 4842 02:46:14,956 --> 02:46:19,426 inside of this function were taking in two pieces of input were taken in a base number. 4843 02:46:19,695 --> 02:46:21,854 we're taking it a pow number so that's like 4844 02:46:22,305 --> 02:46:24,944 the base number is going to be taken to the power number 4845 02:46:25,334 --> 02:46:27,824 I'm defining a variable here called result 4846 02:46:28,124 --> 02:46:30,313 and result is where we're going to store 4847 02:46:30,373 --> 02:46:32,594 the actual result of doing the math. 4848 02:46:33,014 --> 02:46:34,754 now we specify this 4849 02:46:34,784 --> 02:46:35,414 for loop, 4850 02:46:35,474 --> 02:46:37,305 and I'm basically saying that 4851 02:46:37,395 --> 02:46:39,974 I want to loop through this range of numbers. 4852 02:46:40,033 --> 02:46:40,543 when I put 4853 02:46:40,573 --> 02:46:43,123 pounha um here is basically going to range from zero 4854 02:46:43,423 --> 02:46:46,633 all the way up to but not including the power number silk 4855 02:46:46,783 --> 02:46:49,724 we'll basically loop through power number of times 4856 02:46:49,754 --> 02:46:50,413 that makes sense. 4857 02:46:50,894 --> 02:46:54,223 and then every time through the loop we're just multiplying result by 4858 02:46:54,282 --> 02:46:54,942 base numb. 4859 02:46:55,272 --> 02:46:57,073 and then we're just returning results so 4860 02:46:57,253 --> 02:46:59,052 that's the basics of building a 4861 02:46:59,082 --> 02:46:59,922 power function 4862 02:46:59,952 --> 02:47:00,192 and 4863 02:47:00,252 --> 02:47:01,062 obviously like 4864 02:47:01,093 --> 02:47:04,391 if you're just trying to take a number to a power in python it's really easy but 4865 02:47:04,570 --> 02:47:07,180 this kind of shows you like the internal workings right 4866 02:47:07,420 --> 02:47:10,269 for a function like that to work we would have to actually 4867 02:47:10,358 --> 02:47:12,218 type something out just like this, 4868 02:47:16,208 --> 02:47:19,957 and this tutorial I wanna talk to you guys about two different concepts 4869 02:47:19,987 --> 02:47:20,407 in 4870 02:47:20,438 --> 02:47:21,098 python. 4871 02:47:21,487 --> 02:47:22,717 it's going be a pretty cool lesson. 4872 02:47:23,047 --> 02:47:24,845 first thing I want to show you guys though are 4873 02:47:24,875 --> 02:47:27,784 two dimensional lists so down here in our 4874 02:47:27,964 --> 02:47:28,983 python file. 4875 02:47:29,163 --> 02:47:30,242 I just want to create 4876 02:47:30,632 --> 02:47:31,262 a 4877 02:47:31,292 --> 02:47:32,012 basic list 4878 02:47:32,042 --> 02:47:33,632 so I'm just going to call this 4879 02:47:33,722 --> 02:47:34,652 number grid. 4880 02:47:35,522 --> 02:47:37,232 and I'm going to set this equal to 4881 02:47:37,263 --> 02:47:39,152 a normal let strangers like this 4882 02:47:40,172 --> 02:47:46,112 now normally if we were creating a list I could just put in a bunch attributes and bunch elements right, 4883 02:47:46,532 --> 02:47:50,190 and now all of these elements are inside of this number grid lists everybody's happy. 4884 02:47:50,671 --> 02:47:51,211 but 4885 02:47:51,601 --> 02:47:52,980 another thing I can do 4886 02:47:53,011 --> 02:47:54,240 is I can make 4887 02:47:54,271 --> 02:47:55,561 all of the elements 4888 02:47:55,591 --> 02:47:58,052 inside of this number grid list 4889 02:47:58,622 --> 02:47:59,492 lists 4890 02:47:59,522 --> 02:48:00,062 so 4891 02:48:00,093 --> 02:48:00,723 the first 4892 02:48:00,753 --> 02:48:01,203 item 4893 02:48:01,233 --> 02:48:03,334 in the numbered list is going to be a list. 4894 02:48:03,574 --> 02:48:06,032 the second item and the number grew less is going to be a list 4895 02:48:06,062 --> 02:48:06,692 etc. 4896 02:48:07,112 --> 02:48:08,401 so I'm going to show you guys have to do that 4897 02:48:08,432 --> 02:48:10,382 I can basically just come down here and 4898 02:48:10,412 --> 02:48:12,241 why would normally put the first 4899 02:48:12,571 --> 02:48:13,531 element in the list 4900 02:48:13,562 --> 02:48:15,332 I can just create another array 4901 02:48:15,632 --> 02:48:18,392 someone's going to make an open closed square bracket, 4902 02:48:18,691 --> 02:48:19,411 and now 4903 02:48:19,711 --> 02:48:22,172 I'm just going to say one two three 4904 02:48:23,102 --> 02:48:25,111 and I can create the next item in my list 4905 02:48:25,142 --> 02:48:26,011 I can say 4906 02:48:26,610 --> 02:48:28,380 four five six, 4907 02:48:28,710 --> 02:48:30,780 and then let's make another item in this list. 4908 02:48:30,840 --> 02:48:31,590 I can say 4909 02:48:32,160 --> 02:48:32,730 seven 4910 02:48:32,761 --> 02:48:33,001 eight 4911 02:48:33,031 --> 02:48:33,602 nine 4912 02:48:33,871 --> 02:48:37,800 and finally we're going to put one more list inside of the number grid list 4913 02:48:38,010 --> 02:48:39,089 and it's just going to have 4914 02:48:39,119 --> 02:48:40,648 zero in it so 4915 02:48:41,129 --> 02:48:43,769 inside of this numbered red lips write this 4916 02:48:43,828 --> 02:48:45,808 high level overall list, 4917 02:48:46,048 --> 02:48:46,798 we have 4918 02:48:46,828 --> 02:48:48,298 four elements 4919 02:48:48,448 --> 02:48:48,658 in 4920 02:48:48,688 --> 02:48:49,888 all of those elements 4921 02:48:49,918 --> 02:48:50,308 are 4922 02:48:50,338 --> 02:48:51,418 themselves 4923 02:48:51,568 --> 02:48:52,559 lists. 4924 02:48:52,679 --> 02:48:55,948 so essentially what we're doing is we're creating a grid right 4925 02:48:56,099 --> 02:49:00,059 this grid has one two three four rows 4926 02:49:00,269 --> 02:49:01,108 and one 4927 02:49:01,139 --> 02:49:03,147 two three carbons 4928 02:49:03,417 --> 02:49:03,807 right 4929 02:49:03,837 --> 02:49:04,616 for rose 4930 02:49:04,646 --> 02:49:06,446 three columns and that's kind of like 4931 02:49:06,927 --> 02:49:10,077 why these can be useful as we can create a grid like 4932 02:49:10,107 --> 02:49:11,997 structure inside of python 4933 02:49:12,057 --> 02:49:12,717 using 4934 02:49:12,747 --> 02:49:14,547 two dimensional lists. 4935 02:49:14,787 --> 02:49:17,007 so this is a pretty cool list structure. 4936 02:49:17,487 --> 02:49:18,657 and I wanna show you guys, 4937 02:49:18,808 --> 02:49:19,888 how it can access 4938 02:49:19,918 --> 02:49:21,447 individual elements 4939 02:49:21,657 --> 02:49:23,698 inside of this list structure so 4940 02:49:24,358 --> 02:49:29,430 for example let's say I wanted to print out one of these values if they wanted to print out this one right here, 4941 02:49:29,790 --> 02:49:31,681 the way I can access it is by saying 4942 02:49:32,431 --> 02:49:33,361 number grid. 4943 02:49:34,352 --> 02:49:34,832 and 4944 02:49:34,892 --> 02:49:37,952 the first thing I want to do is make an open and closed square brackets 4945 02:49:38,132 --> 02:49:39,122 and in here 4946 02:49:39,152 --> 02:49:40,953 I want to put the 4947 02:49:41,223 --> 02:49:43,562 index of the row that I want to access. 4948 02:49:43,742 --> 02:49:45,782 so this would be like row zero 4949 02:49:45,962 --> 02:49:48,152 because it's the zero of element in the array. 4950 02:49:48,422 --> 02:49:50,942 this would be row on its it and exposition one 4951 02:49:51,122 --> 02:49:54,002 this would be row to row three etc so I could put 4952 02:49:54,212 --> 02:49:55,172 roses grow 4953 02:49:56,012 --> 02:49:56,821 and now 4954 02:49:56,911 --> 02:49:59,610 right next to this I'm going to make another square bracket, 4955 02:49:59,880 --> 02:50:01,229 and I want to put the 4956 02:50:01,439 --> 02:50:03,300 index of the column so 4957 02:50:03,510 --> 02:50:04,979 this would be like column one 4958 02:50:05,009 --> 02:50:06,269 column to column three. 4959 02:50:06,389 --> 02:50:06,869 so 4960 02:50:06,899 --> 02:50:08,188 I'm going to put it another zero 4961 02:50:08,219 --> 02:50:09,779 because this is at the 4962 02:50:09,810 --> 02:50:10,350 zero 4963 02:50:10,380 --> 02:50:10,979 index 4964 02:50:11,039 --> 02:50:12,209 of this first 4965 02:50:12,239 --> 02:50:13,079 array so 4966 02:50:13,439 --> 02:50:13,529 I've 4967 02:50:13,560 --> 02:50:14,819 been zero zero here. 4968 02:50:15,149 --> 02:50:17,459 now we can print this guy out to the screen 4969 02:50:18,299 --> 02:50:19,349 and you'll see down here 4970 02:50:19,589 --> 02:50:20,969 that we get that one 4971 02:50:21,329 --> 02:50:25,318 so I can also do this for like for this eight for example so this is going to be 4972 02:50:25,349 --> 02:50:26,699 zero one two 4973 02:50:27,119 --> 02:50:28,858 can be row two and 4974 02:50:29,368 --> 02:50:30,538 column one 4975 02:50:30,928 --> 02:50:32,848 and now we should be able to print out that 4976 02:50:32,907 --> 02:50:33,207 e. 4977 02:50:34,407 --> 02:50:37,557 so that's basically how we can access elements inside of this 4978 02:50:37,587 --> 02:50:38,517 two d 4979 02:50:38,547 --> 02:50:39,237 list. 4980 02:50:39,718 --> 02:50:40,888 the next thing I want to show you guys 4981 02:50:40,918 --> 02:50:41,188 is 4982 02:50:41,218 --> 02:50:41,938 a 4983 02:50:41,997 --> 02:50:43,437 nested for loop 4984 02:50:43,467 --> 02:50:46,137 nested poorly with the situation in mega said well we have 4985 02:50:46,167 --> 02:50:47,098 a for loop 4986 02:50:47,128 --> 02:50:48,267 inside of a for loop. 4987 02:50:48,566 --> 02:50:51,415 and I'll show you how we can use this nested for loop 4988 02:50:51,835 --> 02:50:57,834 in order to print out all the elements inside of this array so I've basically shown you guys on a parse through 4989 02:50:57,864 --> 02:50:58,284 a 4990 02:50:58,645 --> 02:50:59,755 two dimensional 4991 02:50:59,905 --> 02:51:01,706 list or a two dimensional array. 4992 02:51:02,066 --> 02:51:05,514 so basically we're going to create a normal for loop so I'm going to say four 4993 02:51:05,754 --> 02:51:07,644 and I'm just going to say row 4994 02:51:08,063 --> 02:51:08,604 in 4995 02:51:08,663 --> 02:51:09,533 number grid. 4996 02:51:10,253 --> 02:51:12,322 and I'm using the word row here because 4997 02:51:12,353 --> 02:51:13,583 I'm kind of seeing 4998 02:51:13,613 --> 02:51:17,094 these guys as rows right these are sort of horizontal rows 4999 02:51:17,574 --> 02:51:18,895 in our little grid 5000 02:51:19,194 --> 02:51:22,074 so for each of those rows for each of the 5001 02:51:22,134 --> 02:51:22,794 elements 5002 02:51:22,854 --> 02:51:24,144 inside of number grid. 5003 02:51:24,203 --> 02:51:26,844 I want to loop through so I could actually just print out 5004 02:51:27,113 --> 02:51:28,403 each row right now 5005 02:51:28,613 --> 02:51:31,015 and it's going to print out all the rows inside of this 5006 02:51:31,045 --> 02:51:32,486 list you can see down here 5007 02:51:32,756 --> 02:51:35,335 we basically just get exactly what we have up there. 5008 02:51:35,815 --> 02:51:37,285 but I want to be able to access 5009 02:51:37,345 --> 02:51:39,084 each of these individual 5010 02:51:39,114 --> 02:51:39,864 attributes 5011 02:51:39,924 --> 02:51:41,635 inside of each of these 5012 02:51:41,694 --> 02:51:42,685 array elements 5013 02:51:42,715 --> 02:51:43,225 so 5014 02:51:43,585 --> 02:51:47,994 we can actually create another for loop and am I put that for loop inside of here, 5015 02:51:48,624 --> 02:51:50,514 so now I'm going to say four 5016 02:51:51,204 --> 02:51:51,954 column 5017 02:51:52,224 --> 02:51:52,854 in a 5018 02:51:53,273 --> 02:51:53,964 row. 5019 02:51:54,864 --> 02:51:56,604 and basically what this is going to give us is 5020 02:51:56,904 --> 02:51:57,265 each 5021 02:51:57,295 --> 02:51:58,345 individual 5022 02:51:58,404 --> 02:52:00,114 column or each individual 5023 02:52:00,145 --> 02:52:02,035 element inside of these 5024 02:52:02,095 --> 02:52:02,694 arrays 5025 02:52:02,725 --> 02:52:04,824 so for example inside of the arrays that are 5026 02:52:04,884 --> 02:52:06,384 the elements of the number grid 5027 02:52:07,254 --> 02:52:08,214 over that makes sense 5028 02:52:08,244 --> 02:52:08,754 so 5029 02:52:08,784 --> 02:52:09,474 down here. 5030 02:52:09,863 --> 02:52:10,433 now we can just 5031 02:52:10,463 --> 02:52:10,823 print 5032 02:52:10,854 --> 02:52:11,304 out 5033 02:52:11,483 --> 02:52:12,203 column 5034 02:52:12,263 --> 02:52:13,823 and this should actually print out 5035 02:52:14,093 --> 02:52:15,113 every single 5036 02:52:15,144 --> 02:52:17,304 value inside of this two dimensional array. 5037 02:52:17,363 --> 02:52:19,163 so let's go ahead and run this program. 5038 02:52:20,063 --> 02:52:23,005 and down here you'll see that we're basically printing out 5039 02:52:23,274 --> 02:52:24,744 one all the way down 5040 02:52:24,774 --> 02:52:25,225 to 5041 02:52:25,255 --> 02:52:25,675 zero 5042 02:52:25,705 --> 02:52:27,656 so we're printing out all of the 5043 02:52:27,716 --> 02:52:28,286 elements 5044 02:52:28,586 --> 02:52:29,396 inside of 5045 02:52:29,455 --> 02:52:31,944 all of the arrays inside of the number grid. 5046 02:52:32,034 --> 02:52:34,523 so that's how we can use two dimensional lists and 5047 02:52:34,554 --> 02:52:37,193 nested for loops together in both of those things 5048 02:52:37,253 --> 02:52:39,533 are actually pretty handy in python 5049 02:52:44,093 --> 02:52:48,264 in this tutorial I'm going to show you how to build a basic translator in 5050 02:52:48,294 --> 02:52:48,984 python. 5051 02:52:49,314 --> 02:52:50,454 so essentially we can 5052 02:52:50,484 --> 02:52:51,265 take in 5053 02:52:51,295 --> 02:52:54,596 a strings we can take him like a phrase or a word 5054 02:52:54,985 --> 02:52:58,676 and will be able to translate it into a different language. 5055 02:52:59,096 --> 02:52:59,485 so 5056 02:52:59,516 --> 02:53:01,135 over here I have this little file 5057 02:53:01,165 --> 02:53:03,476 and it basically specifies this language 5058 02:53:03,506 --> 02:53:06,175 that I made up so I'm calling it the draft language 5059 02:53:06,564 --> 02:53:06,925 and 5060 02:53:06,955 --> 02:53:08,305 in the draft language 5061 02:53:08,335 --> 02:53:09,564 all vowels 5062 02:53:09,595 --> 02:53:10,285 become 5063 02:53:10,315 --> 02:53:11,096 g 5064 02:53:11,456 --> 02:53:14,096 so if I was going to translate an english word into 5065 02:53:14,126 --> 02:53:15,326 a draft word 5066 02:53:15,926 --> 02:53:17,517 for example the word dog, 5067 02:53:17,606 --> 02:53:19,256 I would look through the word dog 5068 02:53:19,315 --> 02:53:19,525 and 5069 02:53:19,556 --> 02:53:21,746 any instances where there was a vowel 5070 02:53:21,776 --> 02:53:22,316 so 5071 02:53:22,406 --> 02:53:23,397 in our case let's just say 5072 02:53:23,428 --> 02:53:24,777 a e I o u. 5073 02:53:25,258 --> 02:53:27,028 I would convert that vowel 5074 02:53:27,088 --> 02:53:27,987 into a g 5075 02:53:28,167 --> 02:53:29,906 so dog would map to 5076 02:53:30,026 --> 02:53:31,076 ddg 5077 02:53:31,346 --> 02:53:32,456 cat would get mapped 5078 02:53:32,486 --> 02:53:33,177 into 5079 02:53:33,236 --> 02:53:34,347 c g t. 5080 02:53:34,616 --> 02:53:36,206 so those are the basic translation rules. 5081 02:53:36,266 --> 02:53:38,425 obviously this is a pretty simple language but 5082 02:53:38,665 --> 02:53:41,185 you get the point any vowel is going to become a 5083 02:53:41,215 --> 02:53:42,476 g and then we'll get 5084 02:53:42,506 --> 02:53:43,556 the draft language. 5085 02:53:43,706 --> 02:53:44,395 so we're going to build 5086 02:53:44,425 --> 02:53:45,205 a draft 5087 02:53:45,235 --> 02:53:46,045 translator 5088 02:53:46,615 --> 02:53:48,054 over here in our 5089 02:53:48,084 --> 02:53:49,074 python file. 5090 02:53:49,164 --> 02:53:49,584 let's 5091 02:53:49,614 --> 02:53:54,865 start making this translator the first thing I'm going to do is just define a translate function. 5092 02:53:55,375 --> 02:53:57,864 so I'm going to make a function here and I'm just going to call it 5093 02:53:58,914 --> 02:53:59,604 translate 5094 02:54:00,204 --> 02:54:00,714 and 5095 02:54:00,773 --> 02:54:02,094 inside of these parentheses 5096 02:54:02,124 --> 02:54:03,385 we want this to take 5097 02:54:03,415 --> 02:54:03,985 one 5098 02:54:04,016 --> 02:54:05,664 piece of information which is going to be 5099 02:54:05,904 --> 02:54:06,925 the phrase 5100 02:54:07,075 --> 02:54:09,024 that we want to translate so I'm gonna say 5101 02:54:09,055 --> 02:54:09,774 phrase 5102 02:54:10,524 --> 02:54:13,403 and now inside of this function we need to figure out like 5103 02:54:13,493 --> 02:54:13,793 ok 5104 02:54:13,823 --> 02:54:15,594 how can we translate 5105 02:54:16,014 --> 02:54:19,284 english into our draft language well remember 5106 02:54:19,314 --> 02:54:21,115 the rules is basically just 5107 02:54:21,325 --> 02:54:22,704 any vowels become 5108 02:54:22,734 --> 02:54:23,454 jeez. 5109 02:54:23,874 --> 02:54:26,303 so the first thing I want to do is create a variable 5110 02:54:26,393 --> 02:54:32,305 and this variable is going to be the translation so this will be like the final result that we're going to return to the user. 5111 02:54:32,665 --> 02:54:33,566 so I can say 5112 02:54:33,896 --> 02:54:34,887 translation 5113 02:54:35,127 --> 02:54:36,567 for now I'm just going to set it 5114 02:54:36,598 --> 02:54:37,647 equal to 5115 02:54:37,827 --> 02:54:39,807 the empty string so this is just going to be like 5116 02:54:40,076 --> 02:54:42,087 a completely empty string it's not gonna 5117 02:54:42,117 --> 02:54:43,137 be doing anything. 5118 02:54:43,736 --> 02:54:44,336 and 5119 02:54:44,696 --> 02:54:47,516 now what we want to do is we basically want to 5120 02:54:47,546 --> 02:54:48,026 loop 5121 02:54:48,057 --> 02:54:48,776 through 5122 02:54:49,166 --> 02:54:51,656 every letter inside of this phrase. 5123 02:54:51,956 --> 02:54:52,376 and 5124 02:54:52,436 --> 02:54:54,806 if it's a vowel we want to change it to g 5125 02:54:54,836 --> 02:54:57,086 and if it's not avowal we want to leave it alone 5126 02:54:57,355 --> 02:54:57,806 and 5127 02:54:57,896 --> 02:54:58,105 we're 5128 02:54:58,165 --> 02:55:00,055 essentially going to be looping through phrase. 5129 02:55:00,175 --> 02:55:02,094 and we're going to be adding the letters 5130 02:55:02,244 --> 02:55:04,193 onto this translation 5131 02:55:04,313 --> 02:55:07,044 one by one so make sure you guys how we can do this. 5132 02:55:07,104 --> 02:55:09,443 I'm going to make a for loop somewhere safe for 5133 02:55:10,014 --> 02:55:11,543 and I'm just going to say a letter 5134 02:55:12,173 --> 02:55:12,743 in 5135 02:55:13,133 --> 02:55:14,033 phrase. 5136 02:55:14,783 --> 02:55:15,503 and so now 5137 02:55:16,193 --> 02:55:18,533 when I looped through here I can access 5138 02:55:18,593 --> 02:55:18,982 each 5139 02:55:19,013 --> 02:55:20,272 individual letter 5140 02:55:20,362 --> 02:55:22,644 inside of the phrase that they passed in. 5141 02:55:23,063 --> 02:55:26,094 so what I wanna do is I want to check to see if 5142 02:55:26,273 --> 02:55:28,042 the letter is a vowel or not 5143 02:55:28,072 --> 02:55:28,433 right. 5144 02:55:28,612 --> 02:55:30,264 if it's a vowel than we can 5145 02:55:30,294 --> 02:55:30,684 add 5146 02:55:30,714 --> 02:55:32,604 a g onto translation. 5147 02:55:32,934 --> 02:55:34,104 if it's not available 5148 02:55:34,134 --> 02:55:35,994 then we can just add on whatever 5149 02:55:36,114 --> 02:55:37,913 letter it was onto translation 5150 02:55:37,973 --> 02:55:38,903 anyway so 5151 02:55:39,354 --> 02:55:39,863 many users 5152 02:55:39,894 --> 02:55:40,974 if statement I'm going to say 5153 02:55:41,063 --> 02:55:41,453 if. 5154 02:55:42,113 --> 02:55:47,634 and there's actually this special thing we can do in python we can check to see if something is in 5155 02:55:47,664 --> 02:55:48,505 something else 5156 02:55:48,805 --> 02:55:49,854 so I can say if 5157 02:55:50,604 --> 02:55:51,295 letter 5158 02:55:51,535 --> 02:55:52,105 inn. 5159 02:55:52,945 --> 02:55:57,296 and over here I'm just going to take out all the vowels that was a e I o u. 5160 02:55:57,355 --> 02:55:57,655 and 5161 02:55:57,686 --> 02:55:58,375 a e 5162 02:55:58,555 --> 02:55:58,795 I 5163 02:55:58,854 --> 02:55:59,364 o to you. 5164 02:56:00,055 --> 02:56:02,125 I'm basically checking to see if the letter 5165 02:56:02,305 --> 02:56:03,324 is inside of 5166 02:56:03,354 --> 02:56:04,645 this string 5167 02:56:04,854 --> 02:56:06,774 and if the letter is inside of here, 5168 02:56:06,984 --> 02:56:08,154 then we know that it's 5169 02:56:08,185 --> 02:56:09,115 a vowel so 5170 02:56:09,146 --> 02:56:11,097 down here we can handle that case 5171 02:56:11,127 --> 02:56:12,026 so I can say. 5172 02:56:12,687 --> 02:56:13,677 translation 5173 02:56:14,637 --> 02:56:15,597 is equal to 5174 02:56:16,167 --> 02:56:17,037 translation 5175 02:56:17,247 --> 02:56:18,117 plus 5176 02:56:18,598 --> 02:56:19,138 g 5177 02:56:19,888 --> 02:56:20,697 because 5178 02:56:21,147 --> 02:56:21,598 if 5179 02:56:21,928 --> 02:56:25,619 this letter is a vowel we just wanted to convert it into a g. 5180 02:56:26,459 --> 02:56:27,629 otherwise though 5181 02:56:28,739 --> 02:56:30,301 I can basically just say 5182 02:56:31,201 --> 02:56:32,102 translation 5183 02:56:32,132 --> 02:56:32,972 is equal to 5184 02:56:33,542 --> 02:56:34,322 translation 5185 02:56:34,382 --> 02:56:35,102 plus 5186 02:56:35,552 --> 02:56:36,092 letter. 5187 02:56:36,452 --> 02:56:40,261 so in the case where we have a vowel I'm adding a g onto 5188 02:56:40,291 --> 02:56:40,981 translation 5189 02:56:41,012 --> 02:56:42,571 and the case where we don't have a vowel. 5190 02:56:42,812 --> 02:56:43,802 I'm just adding on 5191 02:56:43,832 --> 02:56:46,622 whatever letter it was on to translation so 5192 02:56:47,042 --> 02:56:49,621 finally down below this for loop 5193 02:56:49,651 --> 02:56:51,481 we just want to return 5194 02:56:51,541 --> 02:56:53,521 the translation so I'm just going to say 5195 02:56:54,002 --> 02:56:54,752 return 5196 02:56:54,902 --> 02:56:55,742 translation. 5197 02:56:56,612 --> 02:56:57,332 and now we have 5198 02:56:57,362 --> 02:56:57,933 a 5199 02:56:57,963 --> 02:56:59,462 awesome translate function 5200 02:56:59,492 --> 02:57:00,151 and it should 5201 02:57:00,331 --> 02:57:01,651 probably work so 5202 02:57:01,921 --> 02:57:03,781 let's come down here and we'll test it out so 5203 02:57:04,021 --> 02:57:07,562 we only allow a user to input some information so 5204 02:57:07,592 --> 02:57:09,513 I'm basically going to call this function. 5205 02:57:09,663 --> 02:57:11,252 actually we're going to print it out so 5206 02:57:11,672 --> 02:57:14,281 we'll print this out and I'm going to call this function 5207 02:57:15,991 --> 02:57:16,801 translate 5208 02:57:17,281 --> 02:57:17,642 and 5209 02:57:17,672 --> 02:57:19,652 inside of here I'm actually just gonna 5210 02:57:19,683 --> 02:57:20,492 pass 5211 02:57:20,822 --> 02:57:21,872 whatever the user 5212 02:57:21,902 --> 02:57:22,473 inputs 5213 02:57:22,503 --> 02:57:23,133 so 5214 02:57:23,463 --> 02:57:24,453 I can just say 5215 02:57:24,543 --> 02:57:25,353 input 5216 02:57:25,562 --> 02:57:25,982 and 5217 02:57:26,013 --> 02:57:28,773 inside of these parentheses I can say the problem so 5218 02:57:29,313 --> 02:57:30,813 enter a phrase, 5219 02:57:31,174 --> 02:57:31,983 and so now 5220 02:57:32,224 --> 02:57:36,216 I'm basically combining all these statements together I'm saying I want to print 5221 02:57:36,246 --> 02:57:36,696 out 5222 02:57:37,326 --> 02:57:38,587 the translation 5223 02:57:38,887 --> 02:57:41,228 of whatever the user enters in. 5224 02:57:42,037 --> 02:57:44,107 so let's go ahead and run this program 5225 02:57:44,138 --> 02:57:45,548 and we'll see how we do 5226 02:57:45,578 --> 02:57:46,118 so 5227 02:57:46,208 --> 02:57:47,198 I'm gonna run the program 5228 02:57:47,258 --> 02:57:47,858 it says 5229 02:57:47,889 --> 02:57:49,389 enter a phrase actually let me 5230 02:57:49,479 --> 02:57:50,859 format this a little bit better. 5231 02:57:52,300 --> 02:57:52,569 okay 5232 02:57:55,209 --> 02:57:57,549 that's it says enter a phrase. 5233 02:57:57,608 --> 02:57:58,810 so let's go ahead and do that. 5234 02:57:59,079 --> 02:57:59,529 so 5235 02:57:59,560 --> 02:58:00,579 let's just type in 5236 02:58:00,729 --> 02:58:02,799 the example we use before him and say dog 5237 02:58:03,339 --> 02:58:05,919 and so now out pops the answer which is 5238 02:58:05,949 --> 02:58:06,520 d 5239 02:58:06,550 --> 02:58:07,450 g g. 5240 02:58:07,750 --> 02:58:08,619 so that's kind of cool. 5241 02:58:08,709 --> 02:58:12,218 and we can just keep running this as many times as we want so I could type only. 5242 02:58:12,397 --> 02:58:14,346 to be or not to be, 5243 02:58:14,826 --> 02:58:16,595 this is like a little bit longer of a string, 5244 02:58:16,984 --> 02:58:17,795 and you can see 5245 02:58:17,825 --> 02:58:19,627 it translates it into our 5246 02:58:19,657 --> 02:58:20,647 draft language. 5247 02:58:20,917 --> 02:58:23,227 so that's basically how we can 5248 02:58:23,467 --> 02:58:25,956 create our little a translator out and that's pretty cool. 5249 02:58:26,256 --> 02:58:28,356 as you can see we're using a for loop 5250 02:58:28,387 --> 02:58:30,127 in combination with an 5251 02:58:30,157 --> 02:58:32,466 f loop and that's a really powerful structure 5252 02:58:32,826 --> 02:58:35,287 and actually there's one place over here where we can 5253 02:58:35,347 --> 02:58:37,387 make this a little bit more efficient so 5254 02:58:37,627 --> 02:58:38,497 instead of saying 5255 02:58:38,527 --> 02:58:38,857 if 5256 02:58:38,888 --> 02:58:40,058 letter in 5257 02:58:40,088 --> 02:58:41,078 this string. 5258 02:58:41,378 --> 02:58:43,898 you'll notice here I'm checking to see if it's in 5259 02:58:44,049 --> 02:58:46,359 all the lower case and the upper case. 5260 02:58:46,600 --> 02:58:48,009 I could actually just say if 5261 02:58:48,039 --> 02:58:48,609 letter 5262 02:58:48,640 --> 02:58:49,149 dot 5263 02:58:49,209 --> 02:58:49,929 lower 5264 02:58:50,738 --> 02:58:51,309 in 5265 02:58:51,488 --> 02:58:54,338 and now I only have to type out the lower case letters, 5266 02:58:54,488 --> 02:58:56,647 and it's still going to do the same exact thing so 5267 02:58:57,008 --> 02:58:58,027 that's a little like 5268 02:58:58,058 --> 02:58:58,538 hack 5269 02:58:58,568 --> 02:58:59,858 or whatever that we could use 5270 02:58:59,979 --> 02:59:02,499 and there's also one more problem with this program so 5271 02:59:02,529 --> 02:59:03,640 you'll notice down here 5272 02:59:03,909 --> 02:59:06,490 we're setting the translation equal to the translation 5273 02:59:06,521 --> 02:59:07,301 plus 5274 02:59:07,421 --> 02:59:08,081 g. 5275 02:59:08,351 --> 02:59:09,400 but the problem is if 5276 02:59:09,431 --> 02:59:10,750 I was to start 5277 02:59:11,320 --> 02:59:14,739 my word inside of the phrase with a capital vowel 5278 02:59:14,770 --> 02:59:16,148 so in other words if I said like 5279 02:59:16,389 --> 02:59:16,869 on, 5280 02:59:17,560 --> 02:59:19,420 you'll notice that when this gets printed out, 5281 02:59:19,570 --> 02:59:22,271 it gets printed out as lower case g and 5282 02:59:22,451 --> 02:59:24,191 so it's not keeping our 5283 02:59:24,281 --> 02:59:24,911 uppercase 5284 02:59:24,941 --> 02:59:25,722 syntax 5285 02:59:25,962 --> 02:59:27,401 and that's kind of a problem so 5286 02:59:27,671 --> 02:59:29,802 we can actually use another if statement in here 5287 02:59:29,892 --> 02:59:31,152 and we could check to see 5288 02:59:32,202 --> 02:59:32,742 if 5289 02:59:33,762 --> 02:59:34,662 letter dot 5290 02:59:34,692 --> 02:59:35,473 is 5291 02:59:36,492 --> 02:59:37,002 upper 5292 02:59:37,782 --> 02:59:39,763 and if the letter is upper case 5293 02:59:39,793 --> 02:59:40,303 then 5294 02:59:40,333 --> 02:59:42,583 we can just set the translation equal to 5295 02:59:42,823 --> 02:59:43,634 the translation 5296 02:59:43,664 --> 02:59:44,234 plus 5297 02:59:44,265 --> 02:59:45,314 a capital g, 5298 02:59:47,954 --> 02:59:48,944 otherwise, 5299 02:59:49,274 --> 02:59:51,704 we can just set it equal to the lower case g. 5300 02:59:52,544 --> 02:59:54,254 it's a now we're able to control 5301 02:59:54,284 --> 02:59:56,054 both of those situation so 5302 02:59:56,594 --> 02:59:58,693 let's just test this and see if it works 5303 02:59:59,563 --> 03:00:00,613 and to rephrase 5304 03:00:00,883 --> 03:00:01,692 say on. 5305 03:00:02,112 --> 03:00:03,942 and now we're keeping that 5306 03:00:04,242 --> 03:00:05,352 capital letter so 5307 03:00:05,562 --> 03:00:08,771 those are just a couple different ways that we could make this program a little bit better, 5308 03:00:09,071 --> 03:00:11,172 but the basic concept is we have a for loop 5309 03:00:11,202 --> 03:00:11,803 and then we have some 5310 03:00:11,833 --> 03:00:12,882 if loops inside of it, 5311 03:00:13,122 --> 03:00:17,291 and we're calling this awesome function that can translate a word for us 5312 03:00:21,191 --> 03:00:25,062 in this tutorial I wanna talk to you guys about comments in python. 5313 03:00:25,362 --> 03:00:32,110 this is going to be a pretty short tutorial I just want to give you an overview of what comments are and how we can use them in our python programs. 5314 03:00:32,591 --> 03:00:33,431 so over here 5315 03:00:33,521 --> 03:00:36,851 in my python program I just have this line here it says print 5316 03:00:36,881 --> 03:00:37,541 comments 5317 03:00:37,571 --> 03:00:38,262 are fun. 5318 03:00:38,531 --> 03:00:39,881 so if I run my program 5319 03:00:40,150 --> 03:00:44,949 down here inside of the council it's going to print out comments are fun right, 5320 03:00:45,430 --> 03:00:47,619 so any code that I put over here is 5321 03:00:47,649 --> 03:00:49,629 going to get executed by python, 5322 03:00:50,079 --> 03:00:52,059 but there's actually a special 5323 03:00:52,089 --> 03:00:54,010 line of code that we can write 5324 03:00:54,189 --> 03:00:55,449 and it's called a comment 5325 03:00:55,749 --> 03:01:01,899 and a comment is basically a line inside of our python file that's just not going to get rendered by python, 5326 03:01:02,199 --> 03:01:06,639 so in python sees it as just going to ignore it it's not going to execute its not going to print anything out. 5327 03:01:07,059 --> 03:01:09,849 it's just gonna kind of ignore it and comments are 5328 03:01:09,879 --> 03:01:12,488 basically just used for us humans, 5329 03:01:12,788 --> 03:01:16,658 so a comment is used for like me or another developer to 5330 03:01:16,898 --> 03:01:21,876 write a little comment a little like plain tax dino comment inside of a file 5331 03:01:22,296 --> 03:01:23,105 nor retreat of 5332 03:01:23,165 --> 03:01:23,735 a comment 5333 03:01:23,766 --> 03:01:24,695 I could use this 5334 03:01:24,726 --> 03:01:25,926 hashtag symbol. 5335 03:01:26,256 --> 03:01:28,146 so in click hashtag and now I'm 5336 03:01:28,205 --> 03:01:29,285 writing a comment. 5337 03:01:29,705 --> 03:01:32,343 so I can write whatever I wanted in here I could say like 5338 03:01:32,493 --> 03:01:33,213 this 5339 03:01:33,843 --> 03:01:34,473 program 5340 03:01:34,503 --> 03:01:35,283 is cool 5341 03:01:36,093 --> 03:01:36,543 and 5342 03:01:36,603 --> 03:01:38,372 you'll notice when I run the program 5343 03:01:38,972 --> 03:01:40,502 that doesn't show up anywhere. 5344 03:01:40,562 --> 03:01:42,092 it doesn't matter what 5345 03:01:42,212 --> 03:01:43,592 I put off at halftime 5346 03:01:43,622 --> 03:01:45,602 this is just like ignore by python, 5347 03:01:45,871 --> 03:01:49,111 it's just for me or another developer to come in here and use. 5348 03:01:49,441 --> 03:01:51,960 so a lot of times you want to write like a little note 5349 03:01:51,990 --> 03:01:55,770 inside of your python files or maybe you can write yourself a little reminder. 5350 03:01:56,159 --> 03:01:57,209 or if you want to write 5351 03:01:57,239 --> 03:01:59,939 a line to lay explain a line of code 5352 03:02:00,090 --> 03:02:00,689 to for example 5353 03:02:00,720 --> 03:02:02,879 I can write a comment that would explain 5354 03:02:02,909 --> 03:02:04,589 this print statement sighted sailing 5355 03:02:04,619 --> 03:02:05,369 this 5356 03:02:05,909 --> 03:02:06,299 prints 5357 03:02:06,329 --> 03:02:06,689 out 5358 03:02:06,720 --> 03:02:07,799 a string 5359 03:02:07,829 --> 03:02:08,189 right 5360 03:02:08,459 --> 03:02:12,058 now anybody looking at my file would be able to read this and they'd be like, 5361 03:02:12,117 --> 03:02:13,527 oh that's what this does ok 5362 03:02:13,558 --> 03:02:13,918 cool 5363 03:02:14,578 --> 03:02:16,199 so comments are useful for 5364 03:02:16,529 --> 03:02:19,019 leaving little comments in a python file 5365 03:02:19,318 --> 03:02:20,068 you want to make 5366 03:02:20,128 --> 03:02:21,568 comments on multiple lines. 5367 03:02:21,778 --> 03:02:24,658 you can just create a new line and use another hashtag 5368 03:02:24,958 --> 03:02:27,566 and so that I could type out whatever my next comment was 5369 03:02:27,896 --> 03:02:32,877 I mean generally if you're gonna put comments on multiple lines you want to just use multiple hash tags 5370 03:02:33,327 --> 03:02:33,657 plot 5371 03:02:33,688 --> 03:02:36,746 there's actually another way that you can write out comments 5372 03:02:36,776 --> 03:02:38,486 so you can use a triple 5373 03:02:38,756 --> 03:02:41,485 quotation marks so I'm typing out these single quote 5374 03:02:42,355 --> 03:02:44,064 and I'm typing not three times 5375 03:02:44,095 --> 03:02:45,295 so you can see here, 5376 03:02:45,625 --> 03:02:48,654 up here we have this three times we have this three times. 5377 03:02:48,895 --> 03:02:52,586 so in here I can you know write any comment that I wanted so I can 5378 03:02:52,616 --> 03:02:53,275 put you know 5379 03:02:53,545 --> 03:02:55,405 as much taxed up here as I would want. 5380 03:02:56,215 --> 03:02:56,814 and 5381 03:02:56,904 --> 03:02:58,854 same thing when I run this program. 5382 03:02:58,975 --> 03:03:00,774 it's just not going to get rendered so 5383 03:03:00,805 --> 03:03:02,544 this is another way to make 5384 03:03:02,574 --> 03:03:04,494 multiple line comments 5385 03:03:04,854 --> 03:03:08,785 but the link official python like style guides or whatever 5386 03:03:08,995 --> 03:03:14,215 just recommends that if you're going to put comments on multiple lines you used these hashtags so 5387 03:03:14,515 --> 03:03:17,484 you know you can really do whatever you want but if you want to be like super 5388 03:03:17,515 --> 03:03:18,925 python official then 5389 03:03:19,255 --> 03:03:20,334 use these hashtags 5390 03:03:21,144 --> 03:03:22,974 comments can also be useful for 5391 03:03:23,004 --> 03:03:26,062 doing something called commenting out a line of code. 5392 03:03:26,362 --> 03:03:28,221 a lot of times when you're writing a program, 5393 03:03:28,431 --> 03:03:30,410 you might have a line of code in there 5394 03:03:30,500 --> 03:03:30,980 that 5395 03:03:31,011 --> 03:03:33,771 is maybe like potentially making stuff up. 5396 03:03:34,191 --> 03:03:36,411 and so what you can do is you can actually comment 5397 03:03:36,441 --> 03:03:37,971 out that line of code so 5398 03:03:38,181 --> 03:03:40,911 I can put a comment in front of this line of code. 5399 03:03:41,211 --> 03:03:42,951 and now when I run my program. 5400 03:03:43,071 --> 03:03:44,481 the program is going to run, 5401 03:03:44,661 --> 03:03:45,981 but it's not going to use 5402 03:03:46,041 --> 03:03:46,851 this line 5403 03:03:47,061 --> 03:03:49,940 so sometimes if you're trying to see if like a line of code is 5404 03:03:50,091 --> 03:03:54,199 causing you trouble or if you want to see what your program would be like without a line of code 5405 03:03:54,439 --> 03:03:55,939 or even like a block of code, 5406 03:03:56,119 --> 03:03:57,379 you can just commented out. 5407 03:03:57,559 --> 03:03:59,989 and that way you're not actually deleting the code 5408 03:04:00,020 --> 03:04:01,130 from your file 5409 03:04:01,340 --> 03:04:04,130 you're just commenting it out so pythons gonna ignore it, 5410 03:04:04,460 --> 03:04:08,149 and those are really the two uses for comments as to write little notes 5411 03:04:08,749 --> 03:04:10,519 right little comments about different things 5412 03:04:10,549 --> 03:04:11,718 or to comment 5413 03:04:11,748 --> 03:04:12,828 out code and 5414 03:04:13,038 --> 03:04:14,418 as you go forward and python 5415 03:04:14,448 --> 03:04:16,338 I'm sure you'll find uses for 5416 03:04:16,368 --> 03:04:17,059 comments 5417 03:04:20,839 --> 03:04:23,419 in this tutorial on a talk to you guys about 5418 03:04:23,449 --> 03:04:25,220 catching errors in 5419 03:04:25,250 --> 03:04:25,880 python, 5420 03:04:26,300 --> 03:04:28,549 and a lot of times when we're writing python programs 5421 03:04:28,938 --> 03:04:29,898 you'll encounter of an 5422 03:04:29,929 --> 03:04:32,327 error so different situations could come up 5423 03:04:32,597 --> 03:04:35,985 and your program might throw an error or it might throw an exception. 5424 03:04:36,315 --> 03:04:37,604 and a lot of times when these 5425 03:04:37,635 --> 03:04:41,234 situations happen though completely stop your program from running. 5426 03:04:41,954 --> 03:04:44,834 and what we can actually do is we can watch out for 5427 03:04:44,894 --> 03:04:47,294 you know a certain specific errors that are going to 5428 03:04:47,324 --> 03:04:49,904 pop up in our program and we can actually handle them. 5429 03:04:50,294 --> 03:04:53,475 so instead of our program just breaking and stop executing, 5430 03:04:53,625 --> 03:04:57,255 we can actually handle those errors and do things when they occur so 5431 03:04:57,615 --> 03:05:01,726 I want to show you guys an example of using this down here I'm saying number is equal to 5432 03:05:01,785 --> 03:05:02,295 its 5433 03:05:02,745 --> 03:05:03,944 input enter a number, 5434 03:05:04,185 --> 03:05:07,635 basically what's happening is I'm prompting the user to enter into a number 5435 03:05:07,665 --> 03:05:08,895 using this input command 5436 03:05:09,404 --> 03:05:11,774 and then I'm converting whatever they entered 5437 03:05:11,895 --> 03:05:12,824 into an integer. 5438 03:05:13,305 --> 03:05:17,685 so as long as they enter in like a valid integer I can convert it into an integer. 5439 03:05:18,104 --> 03:05:20,265 so I can convert it into like a whole number 5440 03:05:20,505 --> 03:05:22,695 and I can store it inside of this number variable 5441 03:05:22,726 --> 03:05:25,486 that I'm just printing it out so let's try to execute this program, 5442 03:05:25,906 --> 03:05:26,985 I'm going around the program 5443 03:05:27,855 --> 03:05:29,834 and you'll see down here it says enter a number, 5444 03:05:30,134 --> 03:05:32,624 so we can enter in like four for example 5445 03:05:33,044 --> 03:05:36,942 and when I answer in four everything's going to work and it's just going to print out four and 5446 03:05:37,002 --> 03:05:38,261 everything is right in the world. 5447 03:05:38,951 --> 03:05:41,801 and actually I'm going to modify this appears it's a little easier to see. 5448 03:05:42,400 --> 03:05:44,260 but what if we run the program again. 5449 03:05:44,560 --> 03:05:46,270 so it says okay enter your number. 5450 03:05:46,449 --> 03:05:51,640 let's say that I break the rules might don't enter a number so it is ignore what the prompts says and I put 5451 03:05:52,120 --> 03:05:52,480 you know 5452 03:05:52,511 --> 03:05:53,860 some random text in here, 5453 03:05:54,400 --> 03:05:56,142 now when I enter this 5454 03:05:56,741 --> 03:05:58,392 the program's going to throw an error, 5455 03:05:58,542 --> 03:06:00,853 you see down here it says value error 5456 03:06:01,122 --> 03:06:01,632 invalid 5457 03:06:01,662 --> 03:06:03,103 literal for ants 5458 03:06:03,133 --> 03:06:03,673 base 5459 03:06:03,703 --> 03:06:04,483 with basten 5460 03:06:04,813 --> 03:06:05,474 basically 5461 03:06:05,504 --> 03:06:06,704 paved and answering 5462 03:06:06,854 --> 03:06:07,694 an integer like 5463 03:06:07,725 --> 03:06:08,504 you said you would 5464 03:06:08,773 --> 03:06:09,193 write. 5465 03:06:09,373 --> 03:06:10,962 we told them to enter in a number 5466 03:06:10,992 --> 03:06:12,402 they entered in text 5467 03:06:12,522 --> 03:06:13,873 so it broke the program. 5468 03:06:14,443 --> 03:06:14,833 and 5469 03:06:14,863 --> 03:06:20,530 this is a situation that happens a lot so there's a lot of them in situations where something can just go wrong in our program. 5470 03:06:20,920 --> 03:06:24,009 and up until now we've just kind of accepted it as a reality 5471 03:06:24,039 --> 03:06:24,520 but 5472 03:06:24,729 --> 03:06:27,190 if you're writing a real live python program 5473 03:06:27,221 --> 03:06:30,162 you don't want something like this to trip up your program, 5474 03:06:30,312 --> 03:06:34,031 you don't want the entire program to break when somebody just forgets to enter in a number 5475 03:06:34,361 --> 03:06:34,571 right 5476 03:06:34,602 --> 03:06:37,271 you want to be able to handle all these different situations, 5477 03:06:37,571 --> 03:06:37,991 and 5478 03:06:38,142 --> 03:06:39,732 in order to handle them we can use 5479 03:06:39,763 --> 03:06:42,313 something called a try except block 5480 03:06:42,613 --> 03:06:46,364 in a try accept blog will basically allow your programs to try out 5481 03:06:46,994 --> 03:06:47,894 a piece of code, 5482 03:06:48,044 --> 03:06:50,204 and if everything goes well then we're great like 5483 03:06:50,414 --> 03:06:52,545 we could try out entering in the number 5484 03:06:52,575 --> 03:06:54,555 and if the user enters into correct number great, 5485 03:06:54,854 --> 03:06:58,334 but if they don't enter in the correct number then we can basically like 5486 03:06:58,424 --> 03:07:02,683 account for that so they entered it in something like a string when they're supposed to render in a number. 5487 03:07:02,982 --> 03:07:05,441 we could tell them like hey you entered in the wrong thing 5488 03:07:05,892 --> 03:07:09,911 so I'm sure you guys how we can use these try accept blocks are going to come up here 5489 03:07:10,271 --> 03:07:11,651 and I'm just going to say try 5490 03:07:12,432 --> 03:07:13,302 to make a colon. 5491 03:07:13,602 --> 03:07:14,892 and I want to indent. 5492 03:07:14,981 --> 03:07:15,971 both of these things. 5493 03:07:16,121 --> 03:07:18,760 so both of these things are going to be inside of this 5494 03:07:18,790 --> 03:07:19,900 try block. 5495 03:07:20,290 --> 03:07:23,259 now I'm going to make a new line I'm going to come down here and I'm just going to tape out 5496 03:07:24,068 --> 03:07:24,849 except. 5497 03:07:25,028 --> 03:07:26,707 and I'm also going to put a colon here, 5498 03:07:27,097 --> 03:07:29,917 and down here I'm just going to print something out so I'll just say like 5499 03:07:30,427 --> 03:07:31,117 invalid 5500 03:07:31,147 --> 03:07:31,657 input. 5501 03:07:32,167 --> 03:07:32,917 so now 5502 03:07:32,947 --> 03:07:35,945 since I put this code inside of this try block. 5503 03:07:36,665 --> 03:07:38,766 if the user enters in something wrong 5504 03:07:38,796 --> 03:07:42,487 it's going to be able to catch it so it'll be able to catch what the user does wrong 5505 03:07:42,787 --> 03:07:43,627 and print out 5506 03:07:43,657 --> 03:07:45,547 invalid input onto the stream. 5507 03:07:45,877 --> 03:07:47,587 so let's go ahead and run our program. 5508 03:07:48,517 --> 03:07:50,197 and it's just gonna say enter a number. 5509 03:07:50,348 --> 03:07:52,717 so we're going to ignore that will enter this end 5510 03:07:53,017 --> 03:07:55,508 and now instead of yelling at us in breaking the program 5511 03:07:55,538 --> 03:07:56,468 just says hey 5512 03:07:56,498 --> 03:07:57,368 invalid input. 5513 03:07:58,059 --> 03:08:02,919 so was able to handle the error they got called it was able to handle the invalid 5514 03:08:02,949 --> 03:08:03,850 input error 5515 03:08:04,180 --> 03:08:05,800 basically just told us hey 5516 03:08:06,100 --> 03:08:06,910 nowhere input. 5517 03:08:07,330 --> 03:08:07,960 so 5518 03:08:07,990 --> 03:08:11,200 this is a really powerful thing that we can do in our python programs 5519 03:08:11,561 --> 03:08:13,480 basically just to protect our programs 5520 03:08:13,511 --> 03:08:13,811 right 5521 03:08:14,080 --> 03:08:17,050 if I want to have my program running for long period the time 5522 03:08:17,080 --> 03:08:19,510 I can't have something as simple as an invalid 5523 03:08:19,540 --> 03:08:19,960 input 5524 03:08:19,990 --> 03:08:20,650 trip it up 5525 03:08:20,920 --> 03:08:24,158 so I can catch that invalid input using these try except 5526 03:08:24,188 --> 03:08:24,729 blocks. 5527 03:08:24,969 --> 03:08:26,737 but here's the thing you notice that this 5528 03:08:26,768 --> 03:08:28,447 little guy down here is getting 5529 03:08:28,688 --> 03:08:29,348 highlighted. 5530 03:08:29,768 --> 03:08:32,587 and let's just see what it has to say so it's basically saying 5531 03:08:32,797 --> 03:08:34,988 two broad exception clause. 5532 03:08:35,588 --> 03:08:36,038 and 5533 03:08:36,068 --> 03:08:39,668 this is a message that we're getting because when I just say accept 5534 03:08:39,758 --> 03:08:40,658 this will catch 5535 03:08:40,688 --> 03:08:44,587 any error under the sun so anything that can go wrong in my program for the most part 5536 03:08:44,617 --> 03:08:46,148 this is gonna accept it so 5537 03:08:46,898 --> 03:08:48,157 let me give you guys an example, 5538 03:08:48,427 --> 03:08:50,557 let's say I had in my program 5539 03:08:50,646 --> 03:08:52,388 I was creating a variable right so I'm 5540 03:08:52,418 --> 03:08:52,628 gonna 5541 03:08:52,658 --> 03:08:54,219 create a variable called 5542 03:08:54,549 --> 03:08:57,877 value and I set it equal to ten divided by the zero. 5543 03:08:58,327 --> 03:08:59,467 now if you know anything about math 5544 03:08:59,497 --> 03:09:02,978 you'll know that you can't divide a number by zero it's not possible. 5545 03:09:03,218 --> 03:09:03,698 so 5546 03:09:03,729 --> 03:09:04,508 the program 5547 03:09:04,538 --> 03:09:08,229 isn't going to be able to handle this and you'll see that this is going to throw an error for us. 5548 03:09:08,498 --> 03:09:09,729 so I run the program. 5549 03:09:10,179 --> 03:09:11,169 it basically says 5550 03:09:11,199 --> 03:09:13,360 zero division enter division by zero, 5551 03:09:13,420 --> 03:09:14,771 we're not allowed to do that right. 5552 03:09:15,311 --> 03:09:19,062 if I took this and I put this down and out of this try block. 5553 03:09:20,441 --> 03:09:20,951 and 5554 03:09:20,981 --> 03:09:22,481 I just pasted it in here, 5555 03:09:23,201 --> 03:09:25,452 it's going to get caught by this exception 5556 03:09:25,482 --> 03:09:29,351 that we wrote down here so it's going to get caught by that accepts and when I run the program 5557 03:09:29,650 --> 03:09:30,850 you'll see it says 5558 03:09:30,909 --> 03:09:31,960 invalid input. 5559 03:09:32,590 --> 03:09:34,449 but the problem is that we didn't 5560 03:09:34,539 --> 03:09:36,069 input something that was invalid 5561 03:09:36,220 --> 03:09:36,640 right 5562 03:09:37,000 --> 03:09:38,351 we just divided by zero 5563 03:09:38,381 --> 03:09:39,101 but it wasn't 5564 03:09:39,131 --> 03:09:40,301 able to handle that. 5565 03:09:40,360 --> 03:09:42,610 right so it could not divide by zero 5566 03:09:42,700 --> 03:09:43,540 it through an error. 5567 03:09:43,600 --> 03:09:45,580 so even though we didn't get an invalid 5568 03:09:45,610 --> 03:09:49,301 input even though it was because we divided by zero it's still printed this out. 5569 03:09:49,631 --> 03:09:52,781 and this brings me up to another point is we can actually catch 5570 03:09:53,081 --> 03:09:54,191 or we can accept 5571 03:09:54,222 --> 03:09:56,441 specific types of errors. 5572 03:09:56,711 --> 03:09:57,761 so for example 5573 03:09:57,940 --> 03:10:00,340 in this case we got a division by zero error 5574 03:10:00,550 --> 03:10:01,779 in this case we got 5575 03:10:01,869 --> 03:10:03,879 an invalid input air I we we 5576 03:10:03,909 --> 03:10:05,198 put something in that was wrong you 5577 03:10:05,229 --> 03:10:06,699 can convert the value. 5578 03:10:06,879 --> 03:10:12,100 so I can create two different except blocks to catch two different types of error so down here 5579 03:10:12,460 --> 03:10:16,869 I can just make a space and I can specify the type of error that I want to catch. 5580 03:10:17,139 --> 03:10:19,630 so when we divided by zero it was 5581 03:10:19,870 --> 03:10:21,490 zero division air. 5582 03:10:21,910 --> 03:10:24,340 so if I just put zero division error in here. 5583 03:10:24,580 --> 03:10:27,640 now it's going to catch that zero division later so I can say 5584 03:10:28,239 --> 03:10:29,920 divided by zero. 5585 03:10:30,310 --> 03:10:32,950 I can also make another accepts I could say 5586 03:10:33,040 --> 03:10:33,790 accepts 5587 03:10:34,210 --> 03:10:34,780 and 5588 03:10:34,900 --> 03:10:38,080 we can catch the other exception that we got so I think it was 5589 03:10:38,320 --> 03:10:40,000 a value air right now is 5590 03:10:40,120 --> 03:10:42,220 we put in the wrong type of value 5591 03:10:42,580 --> 03:10:43,661 inside of that 5592 03:10:43,812 --> 03:10:45,762 inputs so now we can print out 5593 03:10:46,092 --> 03:10:47,202 invalid input. 5594 03:10:47,442 --> 03:10:47,982 so 5595 03:10:48,013 --> 03:10:51,854 with these two except blocks were basically able to handle both of these 5596 03:10:51,884 --> 03:10:53,084 situations so 5597 03:10:53,414 --> 03:10:54,314 for example if 5598 03:10:54,345 --> 03:10:57,314 this ends up breaking the program this division by zero, 5599 03:10:57,675 --> 03:11:00,794 then it'll be able to catch that so down here it'll tell us. 5600 03:11:00,854 --> 03:11:01,334 hey 5601 03:11:01,394 --> 03:11:02,534 you divided by zero, 5602 03:11:02,954 --> 03:11:04,635 but if I was to get rid of 5603 03:11:04,665 --> 03:11:05,775 this line of code, 5604 03:11:06,405 --> 03:11:06,945 and 5605 03:11:06,976 --> 03:11:07,695 I just 5606 03:11:07,905 --> 03:11:09,135 entered in the number wrong 5607 03:11:09,375 --> 03:11:10,995 so I came down here and I answered in 5608 03:11:11,025 --> 03:11:12,346 a string set of a number. 5609 03:11:12,615 --> 03:11:13,517 now it's going to 5610 03:11:13,547 --> 03:11:15,108 tell us invalid input so 5611 03:11:15,318 --> 03:11:16,968 we're going to be able to specify 5612 03:11:16,998 --> 03:11:19,248 what happens when certain things break. 5613 03:11:19,518 --> 03:11:20,777 so when we get a valid it 5614 03:11:20,837 --> 03:11:23,117 when we get a value error we can say invalid 5615 03:11:23,147 --> 03:11:23,628 input. 5616 03:11:23,688 --> 03:11:29,928 when we get a zero division error we can say divided by zero and depending on what breaks depending on what happens, 5617 03:11:30,348 --> 03:11:31,548 we can actually 5618 03:11:31,578 --> 03:11:32,868 do different things, 5619 03:11:33,138 --> 03:11:34,067 and I want to show you guys 5620 03:11:34,098 --> 03:11:35,748 one more thing we can do which is 5621 03:11:35,928 --> 03:11:37,578 we can actually store 5622 03:11:37,608 --> 03:11:38,118 this 5623 03:11:38,178 --> 03:11:39,768 error as a variable. 5624 03:11:39,857 --> 03:11:41,327 so I can say except 5625 03:11:41,567 --> 03:11:42,798 I can say as 5626 03:11:42,978 --> 03:11:46,216 and I can type in a name here so a lot of times people will just say like. 5627 03:11:46,275 --> 03:11:47,236 ye are our 5628 03:11:48,076 --> 03:11:48,976 and down here 5629 03:11:49,216 --> 03:11:52,306 I can print out the actual error so I can just print 5630 03:11:52,786 --> 03:11:53,656 e r r. 5631 03:11:53,926 --> 03:11:56,027 and so if we end up dividing by zero. 5632 03:11:57,047 --> 03:12:00,167 so if I say answer is equal to ten divided by zero. 5633 03:12:00,797 --> 03:12:03,076 we're going to throw this error and it's going to print 5634 03:12:03,106 --> 03:12:04,756 out what went wrong so 5635 03:12:04,786 --> 03:12:06,227 now I can run this program 5636 03:12:06,496 --> 03:12:07,636 and it just says 5637 03:12:08,025 --> 03:12:09,105 division by zero 5638 03:12:09,136 --> 03:12:09,496 so it 5639 03:12:09,526 --> 03:12:10,486 just printed out 5640 03:12:10,517 --> 03:12:11,747 the error that we got. 5641 03:12:12,077 --> 03:12:14,747 so that's another useful thing you can do is you can actually print 5642 03:12:14,777 --> 03:12:17,209 out the specific error that got thrown. 5643 03:12:17,389 --> 03:12:17,898 now 5644 03:12:18,049 --> 03:12:21,081 a best practice in python is to use these 5645 03:12:21,111 --> 03:12:23,751 specific error so you always want to accept 5646 03:12:23,781 --> 03:12:25,521 and except for a specific 5647 03:12:25,552 --> 03:12:25,912 error 5648 03:12:27,472 --> 03:12:29,271 when you don't want to do is just say 5649 03:12:29,302 --> 03:12:30,202 except 5650 03:12:30,592 --> 03:12:31,162 and 5651 03:12:31,372 --> 03:12:33,472 then just accept anything under the sun. 5652 03:12:34,042 --> 03:12:35,332 it's this too broad 5653 03:12:35,362 --> 03:12:35,843 and 5654 03:12:36,022 --> 03:12:40,612 if not in good practice and pythons you wanna be catching specific errors like this 5655 03:12:44,422 --> 03:12:47,393 in this tutorial on a talk to you guys about reading from 5656 03:12:47,452 --> 03:12:48,951 external files in 5657 03:12:48,981 --> 03:12:49,672 python, 5658 03:12:50,152 --> 03:12:52,700 you know a lot of times in python you're going to want to 5659 03:12:52,730 --> 03:12:53,330 read 5660 03:12:53,360 --> 03:12:56,781 from files that are outside of your python file, 5661 03:12:57,081 --> 03:13:02,959 so you might want to read information from like a text file or a csv file or like an html file. 5662 03:13:03,439 --> 03:13:03,859 and 5663 03:13:03,890 --> 03:13:06,800 you can actually use something called the python 5664 03:13:06,859 --> 03:13:09,229 read command and it will allow you to 5665 03:13:09,260 --> 03:13:10,520 read a file 5666 03:13:10,729 --> 03:13:15,980 that is stored outside of your python file so you can use these files to get information or you can 5667 03:13:16,190 --> 03:13:18,800 parse through different files and do different things. 5668 03:13:19,160 --> 03:13:20,751 so I'm gonna show you guys the basics 5669 03:13:20,781 --> 03:13:22,102 of reading files 5670 03:13:22,132 --> 03:13:23,692 opening files closing files 5671 03:13:23,723 --> 03:13:24,863 doing all that stuff 5672 03:13:25,224 --> 03:13:26,903 over here I have this 5673 03:13:26,934 --> 03:13:27,653 file 5674 03:13:28,373 --> 03:13:29,933 called employees dot text 5675 03:13:30,232 --> 03:13:33,533 and it basically just lists out a bunch of different employees like 5676 03:13:33,773 --> 03:13:36,204 these can be employees in an office or whatever. 5677 03:13:36,564 --> 03:13:38,484 so it's just listing out all of this 5678 03:13:38,515 --> 03:13:39,385 information. 5679 03:13:39,654 --> 03:13:43,975 so let's say that inside of my app dot python file I wanted to read 5680 03:13:44,034 --> 03:13:45,414 the employees 5681 03:13:45,624 --> 03:13:46,974 inside of that file. 5682 03:13:47,273 --> 03:13:49,254 the first thing I have to do is actually 5683 03:13:49,313 --> 03:13:50,964 open that file from inside 5684 03:13:50,994 --> 03:13:51,624 python. 5685 03:13:51,954 --> 03:13:53,664 so I can use a special command 5686 03:13:53,694 --> 03:13:54,354 called 5687 03:13:54,624 --> 03:13:55,164 open. 5688 03:13:55,434 --> 03:13:56,454 so I can say open 5689 03:13:56,754 --> 03:13:57,084 and then 5690 03:13:57,114 --> 03:14:00,083 in here I can type in the name of the file that I want to 5691 03:14:00,113 --> 03:14:03,232 open so this is either going to be a relative path to the file. 5692 03:14:03,502 --> 03:14:05,572 an absolute path to the file or 5693 03:14:05,632 --> 03:14:07,492 just the files name if 5694 03:14:08,332 --> 03:14:09,112 both files 5695 03:14:09,143 --> 03:14:10,762 in the same directories on my case 5696 03:14:11,212 --> 03:14:13,671 app dot python and employees dot text 5697 03:14:13,701 --> 03:14:15,561 are in the same folder 5698 03:14:15,740 --> 03:14:19,997 within the same directory so I can just type out the name of the file liking to say 5699 03:14:20,327 --> 03:14:22,097 employees dot text. 5700 03:14:22,486 --> 03:14:25,605 and I want to put one more thing inside of this 5701 03:14:25,636 --> 03:14:26,535 open function, 5702 03:14:26,686 --> 03:14:27,886 and it's going to be the mode 5703 03:14:27,916 --> 03:14:29,626 that I want to open the file in 5704 03:14:29,866 --> 03:14:31,516 which you could actually open files in 5705 03:14:31,546 --> 03:14:32,835 a couple different modes 5706 03:14:33,075 --> 03:14:35,235 and the first mode is called read 5707 03:14:35,415 --> 03:14:36,194 so I just put an 5708 03:14:36,225 --> 03:14:38,205 r here and that's going to stand for a read 5709 03:14:38,505 --> 03:14:44,982 and this basically means that I only want to read the information inside the file I don't want to modify it I don't want to 5710 03:14:45,013 --> 03:14:45,643 change it. 5711 03:14:45,973 --> 03:14:50,442 I just want to read it I just want to see what's in the file and do some stuff without information. 5712 03:14:50,893 --> 03:14:51,553 another 5713 03:14:51,643 --> 03:14:52,902 mode is called right 5714 03:14:52,933 --> 03:14:54,372 so I can type in this w 5715 03:14:54,702 --> 03:14:56,532 and writing basically means that you can 5716 03:14:56,592 --> 03:14:58,451 change the file right you can write 5717 03:14:58,481 --> 03:15:01,032 new information you can change existing information. 5718 03:15:01,603 --> 03:15:02,593 there's another one called 5719 03:15:02,623 --> 03:15:03,163 a 5720 03:15:03,583 --> 03:15:03,883 and 5721 03:15:03,913 --> 03:15:05,502 a stands for a pen. 5722 03:15:05,802 --> 03:15:07,662 and it's basically means that you can 5723 03:15:07,782 --> 03:15:10,721 append information onto the end of the file so 5724 03:15:10,900 --> 03:15:13,301 you can't modify any of the information in the file. 5725 03:15:13,451 --> 03:15:15,041 you can't change any information 5726 03:15:15,071 --> 03:15:15,641 but you can 5727 03:15:15,700 --> 03:15:16,120 add 5728 03:15:16,150 --> 03:15:17,351 new information. 5729 03:15:17,681 --> 03:15:19,091 and there's one more which is 5730 03:15:19,181 --> 03:15:19,570 r 5731 03:15:19,601 --> 03:15:20,320 plus 5732 03:15:20,561 --> 03:15:21,971 and this basically means 5733 03:15:22,001 --> 03:15:22,601 read 5734 03:15:22,631 --> 03:15:24,401 and write so this will give you 5735 03:15:24,461 --> 03:15:26,922 all the power of reading and writing. 5736 03:15:27,072 --> 03:15:27,882 so in our case, 5737 03:15:28,212 --> 03:15:29,562 we are just going to be working with 5738 03:15:29,622 --> 03:15:32,081 regular are so we're going to be reading 5739 03:15:32,111 --> 03:15:33,281 from the file. 5740 03:15:33,791 --> 03:15:36,131 now this open function will essentially just 5741 03:15:36,161 --> 03:15:36,791 open 5742 03:15:36,821 --> 03:15:37,541 the 5743 03:15:37,601 --> 03:15:38,801 file so it's going to like 5744 03:15:38,831 --> 03:15:40,811 golden map file inside of our file system 5745 03:15:40,841 --> 03:15:41,470 opened it up 5746 03:15:41,770 --> 03:15:43,600 and it'll allow us to read through it 5747 03:15:43,779 --> 03:15:46,239 but generally we're going to want to store this 5748 03:15:46,270 --> 03:15:47,319 opened file 5749 03:15:47,350 --> 03:15:49,211 inside of a variable so 5750 03:15:49,541 --> 03:15:51,911 I can create a variable and we can just call it 5751 03:15:52,392 --> 03:15:53,892 employee file. 5752 03:15:54,161 --> 03:15:55,090 and I'm just going to set it 5753 03:15:55,120 --> 03:15:56,440 equal to this 5754 03:15:56,471 --> 03:15:57,370 open function. 5755 03:15:57,640 --> 03:15:58,480 so now the 5756 03:15:58,511 --> 03:16:00,940 open employees dot text file and 5757 03:16:00,971 --> 03:16:02,651 all the content inside of it 5758 03:16:03,041 --> 03:16:04,450 is stored inside of this 5759 03:16:04,480 --> 03:16:05,591 employee file 5760 03:16:05,621 --> 03:16:06,341 variable. 5761 03:16:06,791 --> 03:16:07,211 now 5762 03:16:07,271 --> 03:16:07,900 whenever you 5763 03:16:07,931 --> 03:16:08,830 open a file 5764 03:16:08,860 --> 03:16:10,630 you always want to make sure that you 5765 03:16:10,660 --> 03:16:12,911 close the file as well so 5766 03:16:13,271 --> 03:16:15,013 just like we have this open command 5767 03:16:15,043 --> 03:16:16,033 we also have 5768 03:16:16,063 --> 03:16:16,453 in 5769 03:16:16,543 --> 03:16:17,323 close 5770 03:16:17,354 --> 03:16:19,334 function so I can come down here and say. 5771 03:16:19,844 --> 03:16:20,624 employee 5772 03:16:20,654 --> 03:16:21,345 file 5773 03:16:21,375 --> 03:16:21,945 dot 5774 03:16:22,096 --> 03:16:22,876 clothes. 5775 03:16:23,236 --> 03:16:23,626 and 5776 03:16:23,656 --> 03:16:29,177 this is essentially just going to close the file so we're no longer going to be able to access it and 5777 03:16:29,537 --> 03:16:36,738 generally it's a good idea whenever you're opening up a file and you want to also make sure that your closing the file at some point so generally 5778 03:16:36,889 --> 03:16:39,019 once you're done reading it and you can just close it. 5779 03:16:39,288 --> 03:16:41,778 so that's kind of like how we can open and close the file. 5780 03:16:42,139 --> 03:16:45,498 now let's talk about how we can get information from the far right 5781 03:16:45,528 --> 03:16:48,110 there's no point having the file that we can't figure out what's in it 5782 03:16:48,141 --> 03:16:48,561 so 5783 03:16:48,740 --> 03:16:51,680 there's actually a few different functions that we can use 5784 03:16:51,739 --> 03:16:54,800 on this employee filed to figure out what's inside of it. 5785 03:16:55,250 --> 03:16:56,270 and I'm gonna show you guys 5786 03:16:56,300 --> 03:16:58,278 some of those so I'm just going to make a print statement. 5787 03:16:58,668 --> 03:16:59,208 and 5788 03:16:59,388 --> 03:17:02,688 inside this print statement will basically just print out some information 5789 03:17:02,718 --> 03:17:04,997 about the employee file so 5790 03:17:05,837 --> 03:17:08,747 the most basic thing we can print out is just the entire 5791 03:17:08,897 --> 03:17:10,217 contents of the file. 5792 03:17:10,486 --> 03:17:13,216 but before I do that I want to show you guys how you can check 5793 03:17:13,246 --> 03:17:15,465 to make sure that a file as readable. 5794 03:17:15,795 --> 03:17:19,427 so before we do anything else generally is a good idea to make sure 5795 03:17:19,457 --> 03:17:21,558 that it's possible to read this file. 5796 03:17:21,947 --> 03:17:22,427 and there's 5797 03:17:22,457 --> 03:17:23,597 a function 5798 03:17:23,656 --> 03:17:25,517 inside of python we can use called 5799 03:17:25,547 --> 03:17:27,407 readable so I'm just going to type out 5800 03:17:28,308 --> 03:17:29,388 in poorly file 5801 03:17:29,418 --> 03:17:30,048 dot 5802 03:17:31,488 --> 03:17:32,179 readable. 5803 03:17:32,629 --> 03:17:33,019 and 5804 03:17:33,049 --> 03:17:39,677 this is going to return a boolean value and it's going to tell us whether or not we can read from this file so I'm going to run my program 5805 03:17:40,547 --> 03:17:43,547 and you'll see down here we get a value of true 5806 03:17:43,877 --> 03:17:46,098 and that's because we set the file with 5807 03:17:46,128 --> 03:17:46,998 a read 5808 03:17:47,058 --> 03:17:49,396 mode so it's in read mode we can read from it. 5809 03:17:49,666 --> 03:17:50,625 if I was to put 5810 03:17:50,685 --> 03:17:52,845 a w here so if I put like right 5811 03:17:53,114 --> 03:17:53,685 now 5812 03:17:53,715 --> 03:17:58,306 redouble is going to be false because we can no longer read the file we can only write 5813 03:17:58,336 --> 03:17:59,506 to the file so 5814 03:17:59,596 --> 03:18:00,705 I'm going to 5815 03:18:00,735 --> 03:18:03,286 change this back to our so we can just read it. 5816 03:18:03,796 --> 03:18:07,006 so once you figure out whether or not the file can be read from 5817 03:18:07,036 --> 03:18:07,786 let's 5818 03:18:08,056 --> 03:18:09,286 actually read it so 5819 03:18:09,586 --> 03:18:15,770 there's another function called employee file dot read and this is basically just going to spit out all the information in the files 5820 03:18:15,800 --> 03:18:17,209 so when I run the program 5821 03:18:17,239 --> 03:18:18,561 it's just going to spit out 5822 03:18:18,591 --> 03:18:19,642 all of this 5823 03:18:19,672 --> 03:18:22,701 information right all the information isn't that was in that file. 5824 03:18:23,062 --> 03:18:29,392 I can also come down here and we could read an individual line inside this file so I can say employee filed dot 5825 03:18:29,422 --> 03:18:30,412 read line. 5826 03:18:30,652 --> 03:18:33,833 and what this is gonna do is it's gonna read an individual line 5827 03:18:34,253 --> 03:18:35,873 inside of this file so 5828 03:18:36,173 --> 03:18:40,972 now when I run this program you'll see it's just reading that first line in the file. 5829 03:18:41,092 --> 03:18:43,611 and this red line function is actually just 5830 03:18:43,642 --> 03:18:48,591 reading the first line and then it's basically like moving a little cursor onto the next line so 5831 03:18:48,831 --> 03:18:50,900 if I was to copy this line of code, 5832 03:18:51,530 --> 03:18:51,891 and then 5833 03:18:52,101 --> 03:18:53,570 printed again down here 5834 03:18:54,051 --> 03:18:56,480 I'm saying employee filed out read line. 5835 03:18:56,601 --> 03:18:58,069 so it's going to read the first line 5836 03:18:58,279 --> 03:19:00,621 and then when I say it again it's going to read 5837 03:19:00,681 --> 03:19:05,688 the line after that so this is actually going to end up printing out the first two lines in the file. 5838 03:19:06,198 --> 03:19:09,260 when I run this program you'll see we print out jim sales men 5839 03:19:09,470 --> 03:19:10,729 and dwight salesman. 5840 03:19:10,999 --> 03:19:14,808 so if I was to do this multiple times I could technically print out 5841 03:19:15,197 --> 03:19:17,718 every line inside of this file. 5842 03:19:18,857 --> 03:19:20,089 and you can see we can do that 5843 03:19:20,779 --> 03:19:27,140 and so that can be pretty useful for reading multiple lines in a file but there's actually another function that is better at doing that. 5844 03:19:27,590 --> 03:19:29,359 we can say instead of employee father 5845 03:19:29,390 --> 03:19:31,430 read line we can say dot read 5846 03:19:31,460 --> 03:19:32,330 lines. 5847 03:19:32,480 --> 03:19:34,252 and what this is gonna do is it's going to take 5848 03:19:34,282 --> 03:19:36,621 all of the lines inside of our file 5849 03:19:36,831 --> 03:19:38,511 and put them inside of an array. 5850 03:19:38,780 --> 03:19:42,471 and so now when I print this out you'll see we have this array down here it says 5851 03:19:42,740 --> 03:19:45,500 jim sales men that's the first item in the array 5852 03:19:45,680 --> 03:19:46,670 to white salesman 5853 03:19:46,700 --> 03:19:47,360 the second 5854 03:19:47,391 --> 03:19:48,320 item in the array. 5855 03:19:48,620 --> 03:19:51,859 it's basically taking each line and putting it inside of an array. 5856 03:19:52,159 --> 03:19:54,379 so if I want to access a specific line 5857 03:19:54,409 --> 03:19:58,340 I can just refer to it by its index in the array so if I said one. 5858 03:19:58,609 --> 03:20:00,319 now this is going to give us that 5859 03:20:00,379 --> 03:20:02,089 do white salesmen line 5860 03:20:02,329 --> 03:20:05,508 because that is at index position one inside of the array. 5861 03:20:06,107 --> 03:20:08,957 you can also use this reliance function 5862 03:20:08,987 --> 03:20:09,917 with a for loop 5863 03:20:09,947 --> 03:20:12,017 so I could come up here and create a for loop 5864 03:20:12,316 --> 03:20:13,696 is going to save four 5865 03:20:14,116 --> 03:20:15,016 and we'll say 5866 03:20:15,676 --> 03:20:16,546 employee 5867 03:20:16,576 --> 03:20:17,176 and 5868 03:20:17,565 --> 03:20:18,886 employee file 5869 03:20:19,756 --> 03:20:22,756 and then for each employee we just want to print them out so 5870 03:20:22,876 --> 03:20:23,566 it actually started 5871 03:20:23,597 --> 03:20:25,217 we have to put employee file dot 5872 03:20:25,247 --> 03:20:25,907 read 5873 03:20:26,417 --> 03:20:27,587 lines up here 5874 03:20:27,947 --> 03:20:30,587 and so now there's a loop through all the employees 5875 03:20:30,617 --> 03:20:33,168 in this employee filed out read lines array. 5876 03:20:33,468 --> 03:20:34,607 so we can actually just 5877 03:20:34,638 --> 03:20:35,447 print out 5878 03:20:35,808 --> 03:20:37,427 the individual employee 5879 03:20:37,816 --> 03:20:39,796 and now this will print out all the employees 5880 03:20:39,826 --> 03:20:42,437 inside of that files is basically printing out 5881 03:20:42,767 --> 03:20:44,536 each line in the file. 5882 03:20:44,776 --> 03:20:46,008 and that can be pretty useful. 5883 03:20:46,218 --> 03:20:50,807 so you can use all of these different functions like read read line read lines 5884 03:20:51,377 --> 03:20:56,235 readable you know there's a bunch of these different things that we can do to get information from a file. 5885 03:20:56,295 --> 03:21:01,635 and so there's a lot of cases where you're going to want to be able to parse through information in a file and this is a 5886 03:21:01,665 --> 03:21:02,926 awesome way to do it so 5887 03:21:03,286 --> 03:21:07,156 just to recap in whenever you want to open a file and read from it you can just use this 5888 03:21:07,187 --> 03:21:08,027 open function 5889 03:21:08,058 --> 03:21:10,277 type in the name of the file and then the mode, 5890 03:21:10,428 --> 03:21:12,048 which in our case is going to be r. 5891 03:21:12,317 --> 03:21:15,676 then you can do all sorts of stuff with it and you always want to make sure that 5892 03:21:15,735 --> 03:21:19,155 you close it when you've done that's just good practice so 5893 03:21:19,516 --> 03:21:22,664 that's the basics of reading from files and hopefully you guys can 5894 03:21:22,694 --> 03:21:25,335 use this in some way shape or form in the future. 5895 03:21:29,354 --> 03:21:34,363 in this tutorial on to talk to you about writing and appending to files in 5896 03:21:34,543 --> 03:21:35,143 python. 5897 03:21:35,532 --> 03:21:38,980 so one of the cool things about python is it allows you to work with 5898 03:21:39,011 --> 03:21:42,520 external files so I could have like an external text file and 5899 03:21:42,850 --> 03:21:44,830 I could actually like completely 5900 03:21:44,950 --> 03:21:47,531 read all the information in it I could pass through it 5901 03:21:47,562 --> 03:21:49,602 use that information to do certain things, 5902 03:21:50,142 --> 03:21:59,530 but it isn't a reading a file I can also write a file and that's what I want to talk to you guys about today's writing new files and appending onto existing files 5903 03:21:59,620 --> 03:22:01,989 over here I basically just have some code written out 5904 03:22:02,020 --> 03:22:03,280 and this essentially just 5905 03:22:03,490 --> 03:22:08,050 reads information from this employee's dot text file so you can see over here, 5906 03:22:08,439 --> 03:22:10,450 I am specifying the mode which is 5907 03:22:10,510 --> 03:22:12,221 r and that stands for read 5908 03:22:12,521 --> 03:22:14,170 and then down here under his reading 5909 03:22:14,200 --> 03:22:17,109 all of the contents of the file and spitting it out on the screen. 5910 03:22:17,649 --> 03:22:19,448 so I'm gonna click the play button over here, 5911 03:22:19,538 --> 03:22:20,138 and 5912 03:22:20,317 --> 03:22:21,188 you'll see that 5913 03:22:21,248 --> 03:22:23,348 if this executes so it's printing out 5914 03:22:23,708 --> 03:22:24,729 all of the 5915 03:22:24,818 --> 03:22:29,529 lines of code in our text file so over here I'm in this employee's dot text file 5916 03:22:29,859 --> 03:22:31,838 and it just has all this information like 5917 03:22:31,868 --> 03:22:33,309 employees in an office. 5918 03:22:33,698 --> 03:22:36,908 but let's say that I wanted to add another employee onto here 5919 03:22:37,059 --> 03:22:37,448 right ? 5920 03:22:37,568 --> 03:22:38,318 let's say that 5921 03:22:38,408 --> 03:22:39,038 a new 5922 03:22:39,068 --> 03:22:42,487 employee joined our company is that we wanted to add them onto this list. 5923 03:22:42,817 --> 03:22:43,178 well 5924 03:22:43,237 --> 03:22:45,847 I can come over here to my app dot python file 5925 03:22:46,236 --> 03:22:46,746 and 5926 03:22:46,836 --> 03:22:47,496 instead of 5927 03:22:47,556 --> 03:22:48,906 reading from the file 5928 03:22:48,937 --> 03:22:49,626 I want to 5929 03:22:49,656 --> 03:22:51,726 append it to the files I want to say 5930 03:22:51,756 --> 03:22:52,176 a 5931 03:22:52,656 --> 03:22:54,546 and appending to the file basically 5932 03:22:54,576 --> 03:22:56,226 basically means that you're adding 5933 03:22:56,346 --> 03:22:57,155 some text 5934 03:22:57,215 --> 03:22:58,686 at the end of the file so 5935 03:22:58,985 --> 03:23:01,537 wherever the file ends you're just going to add some text 5936 03:23:01,567 --> 03:23:02,317 onto there. 5937 03:23:02,888 --> 03:23:06,728 so what we can do is we can actually add another employee into the file. 5938 03:23:07,147 --> 03:23:07,718 so 5939 03:23:07,808 --> 03:23:08,887 instead of printing something 5940 03:23:08,917 --> 03:23:10,657 out I'm actually just going to say. 5941 03:23:12,157 --> 03:23:12,967 employee 5942 03:23:12,997 --> 03:23:13,717 file 5943 03:23:13,776 --> 03:23:14,526 dot 5944 03:23:14,706 --> 03:23:15,246 right. 5945 03:23:15,786 --> 03:23:19,837 and when I say employee filed out right I'm going to be able to write something to 5946 03:23:19,867 --> 03:23:21,427 the end of the file so 5947 03:23:21,907 --> 03:23:25,987 I can basically does right whatever I want so why don't we add in another employee 5948 03:23:26,228 --> 03:23:30,816 into our employees dot text file so we can add in another employee why don't we say like 5949 03:23:31,116 --> 03:23:31,986 toby. 5950 03:23:32,286 --> 03:23:33,938 and he's going to be in 5951 03:23:33,997 --> 03:23:34,807 human 5952 03:23:34,986 --> 03:23:36,097 resources. 5953 03:23:36,847 --> 03:23:37,417 so now 5954 03:23:37,717 --> 03:23:39,577 when I run this program. 5955 03:23:39,938 --> 03:23:40,809 it's going to add 5956 03:23:40,839 --> 03:23:44,648 toby human resources onto the end of the file somewhere on my program. 5957 03:23:45,368 --> 03:23:45,968 and 5958 03:23:46,298 --> 03:23:48,607 you'll see that nothing shows up down here in the council. 5959 03:23:48,877 --> 03:23:52,207 but if I go over to my employees dot text file. 5960 03:23:52,567 --> 03:23:53,438 all of a sudden 5961 03:23:53,468 --> 03:23:55,447 we have a new entry over here it's 5962 03:23:55,478 --> 03:23:56,197 toby 5963 03:23:56,228 --> 03:23:58,567 from human resource is right so I was able to 5964 03:23:58,957 --> 03:24:01,866 append a line onto the end of this file. 5965 03:24:02,736 --> 03:24:07,597 but here's the thing you need to be careful when you're writing to files because you can actually mess up a file 5966 03:24:07,627 --> 03:24:08,497 very easily 5967 03:24:08,797 --> 03:24:09,487 for example 5968 03:24:09,518 --> 03:24:12,277 I already added toby here into my file. 5969 03:24:12,487 --> 03:24:14,618 but if I was to run this program again, 5970 03:24:15,849 --> 03:24:18,519 you'll see that over here in this employee's dot text file 5971 03:24:18,759 --> 03:24:19,449 it when I hadn't 5972 03:24:19,479 --> 03:24:20,919 added toby again 5973 03:24:21,249 --> 03:24:23,710 right so it added this employee here 5974 03:24:23,740 --> 03:24:24,311 again 5975 03:24:24,490 --> 03:24:26,440 and also you'll notice that in this case, 5976 03:24:26,740 --> 03:24:29,501 these employee didn't go onto the next line 5977 03:24:29,621 --> 03:24:33,221 I accidentally ran my file again and all the sudden it messed up 5978 03:24:33,251 --> 03:24:34,900 this file over here 5979 03:24:35,051 --> 03:24:39,490 and so appending you really need to be careful because if you actually go under file again or have you 5980 03:24:39,550 --> 03:24:39,939 you know, 5981 03:24:40,569 --> 03:24:46,420 append something on something wrong to the file it's permanently it's getting saved inside of the file. 5982 03:24:47,020 --> 03:24:49,449 so I want to talk to you guys are a little bit more about you know 5983 03:24:49,479 --> 03:24:52,629 appending another thing we can do let's say we wanted to add another 5984 03:24:53,409 --> 03:24:54,100 employee 5985 03:24:54,279 --> 03:24:56,950 and you'll notice over here in this employees that text file 5986 03:24:57,670 --> 03:24:59,230 when I appended it on again 5987 03:24:59,261 --> 03:25:00,161 it got appended 5988 03:25:00,191 --> 03:25:00,882 to 5989 03:25:00,941 --> 03:25:03,041 the end of the existing line right 5990 03:25:03,281 --> 03:25:04,512 so the first time I had 5991 03:25:04,542 --> 03:25:08,202 a new line there but if you don't have a new line at the end of your file 5992 03:25:08,502 --> 03:25:10,302 and you all and you want to add a new line, 5993 03:25:10,632 --> 03:25:12,701 you're going to have to add some special characters 5994 03:25:12,731 --> 03:25:14,621 so let's add another employee 5995 03:25:14,921 --> 03:25:15,851 and we'll call her 5996 03:25:15,881 --> 03:25:16,541 kelly, 5997 03:25:16,631 --> 03:25:18,521 and let's just say kelley is in 5998 03:25:22,271 --> 03:25:23,621 customer service so 5999 03:25:23,891 --> 03:25:25,569 kelly is going to be in customer service. 6000 03:25:25,779 --> 03:25:27,130 and if I want to add 6001 03:25:27,189 --> 03:25:33,850 this employee onto the end of the file in a new line I'm going to have to put a new line character in front of it so I can say 6002 03:25:34,149 --> 03:25:34,899 backslash 6003 03:25:34,959 --> 03:25:35,439 n 6004 03:25:35,770 --> 03:25:37,149 and this will upend 6005 03:25:37,180 --> 03:25:38,170 this entry 6006 03:25:38,200 --> 03:25:39,160 into the file 6007 03:25:39,311 --> 03:25:42,250 with a new line so on a new line so now when I run this, 6008 03:25:42,550 --> 03:25:44,800 you'll see we get kelly from customer service 6009 03:25:44,830 --> 03:25:46,150 on her own line. 6010 03:25:46,480 --> 03:25:51,371 so you want to make sure that you're aware of like these special characters that you can use they call them 6011 03:25:51,401 --> 03:25:52,602 escape characters 6012 03:25:53,082 --> 03:25:58,841 and you're in time you're audi onto a file you want to make sure that you're adding on exactly where you want to add on. 6013 03:25:58,900 --> 03:26:01,390 so in addition to appending to a file. 6014 03:26:01,720 --> 03:26:02,979 I can also just like 6015 03:26:03,039 --> 03:26:04,899 overwrite a file or I can 6016 03:26:04,930 --> 03:26:05,500 write 6017 03:26:05,530 --> 03:26:07,090 an entirely new file. 6018 03:26:07,240 --> 03:26:10,332 this is as we already have this open instead of appending to the file. 6019 03:26:10,662 --> 03:26:12,042 why don't we just write 6020 03:26:12,162 --> 03:26:13,602 a file so I'm going to use this 6021 03:26:13,632 --> 03:26:14,352 w. 6022 03:26:15,191 --> 03:26:15,882 and now 6023 03:26:16,151 --> 03:26:18,401 if I say employee filed out right 6024 03:26:18,642 --> 03:26:21,161 because I'm using w and I'm not using 6025 03:26:21,221 --> 03:26:21,730 a, 6026 03:26:21,940 --> 03:26:22,630 it's actually going to 6027 03:26:22,660 --> 03:26:23,530 override 6028 03:26:23,561 --> 03:26:27,281 the entire file and it's only gonna put this inside the file so 6029 03:26:27,581 --> 03:26:28,540 when I run this 6030 03:26:28,720 --> 03:26:30,971 and we go over to this employee's dot text file 6031 03:26:31,360 --> 03:26:35,199 you'll see we only have one line inside of this file now it's just 6032 03:26:35,229 --> 03:26:36,670 kelley customer service. 6033 03:26:37,060 --> 03:26:39,009 that's because I was using double you 6034 03:26:39,039 --> 03:26:39,549 not 6035 03:26:39,608 --> 03:26:41,497 a when you use w it's just 6036 03:26:41,527 --> 03:26:44,377 overwriting everything that's in that existing file. 6037 03:26:45,127 --> 03:26:47,827 you can also use w to create a new file 6038 03:26:47,857 --> 03:26:51,398 so over here I could say employee file as he could to employees 6039 03:26:51,458 --> 03:26:52,058 one 6040 03:26:52,088 --> 03:26:52,958 dot text. 6041 03:26:53,408 --> 03:26:59,468 and now what's going to happen is when I run this it's going to create another file for me song in a run this 6042 03:27:00,067 --> 03:27:00,548 and 6043 03:27:00,578 --> 03:27:02,830 you'll see over here in my file browser. 6044 03:27:02,980 --> 03:27:05,829 we have this new file employees one dot text 6045 03:27:06,069 --> 03:27:07,389 so if I open this up. 6046 03:27:07,539 --> 03:27:10,389 it has exactly the same stuff as in this employees file, 6047 03:27:10,869 --> 03:27:15,905 but it basically created a new file for us and so a lot of times you're going to want to create a new file, 6048 03:27:16,535 --> 03:27:20,795 and you can use different extensions to so if I wanted to create like a web page 6049 03:27:20,825 --> 03:27:21,694 I could say 6050 03:27:23,164 --> 03:27:23,884 index start 6051 03:27:23,914 --> 03:27:24,724 each tier mel 6052 03:27:25,084 --> 03:27:26,854 and I could also add in some 6053 03:27:26,885 --> 03:27:28,385 each team malcolm here so 6054 03:27:28,475 --> 03:27:30,873 if you don't understand html don't worry about it but 6055 03:27:31,143 --> 03:27:32,312 if you do I can put like 6056 03:27:32,401 --> 03:27:33,751 a paragraph in year 6057 03:27:34,561 --> 03:27:35,910 another paragraph like 6058 03:27:36,630 --> 03:27:37,290 this is 6059 03:27:37,320 --> 03:27:38,070 html 6060 03:27:38,221 --> 03:27:40,262 basically ht mouth like a webpage. 6061 03:27:40,952 --> 03:27:41,222 and 6062 03:27:41,252 --> 03:27:43,922 the point I'm trying to make is that you can write out a webpage 6063 03:27:43,952 --> 03:27:46,352 inside of python by doing something like this so 6064 03:27:46,592 --> 03:27:47,941 now when I have played this 6065 03:27:47,972 --> 03:27:48,601 we get this 6066 03:27:48,631 --> 03:27:49,291 index style 6067 03:27:49,321 --> 03:27:50,491 html file. 6068 03:27:50,941 --> 03:27:51,992 and it has some 6069 03:27:52,022 --> 03:27:53,672 html inside of it so 6070 03:27:54,032 --> 03:27:57,123 that's one way that writing to files can be really useful you can 6071 03:27:57,153 --> 03:27:57,903 overwrite 6072 03:27:57,934 --> 03:27:59,104 an existing file, 6073 03:27:59,164 --> 03:28:01,294 you can write a new file and create it, 6074 03:28:01,384 --> 03:28:01,954 or 6075 03:28:02,104 --> 03:28:04,414 you can append onto the end of a file and 6076 03:28:04,924 --> 03:28:05,254 there's 6077 03:28:05,313 --> 03:28:09,363 tons of applications for writing to files and pythons and great language for 6078 03:28:09,633 --> 03:28:11,344 working with reading writing 6079 03:28:11,374 --> 03:28:13,024 doing all itself with files 6080 03:28:16,925 --> 03:28:21,274 in this tutorial on its altea guys about using modules in python. 6081 03:28:21,604 --> 03:28:25,324 now a module is essentially just a python file that we can 6082 03:28:25,414 --> 03:28:26,884 import into our 6083 03:28:26,914 --> 03:28:28,384 current python file so 6084 03:28:28,684 --> 03:28:36,002 for example if I wrote a python file that had a bunch of like useful functions are useful variables are you know other things like that. 6085 03:28:36,452 --> 03:28:38,312 I could take that file I could 6086 03:28:38,372 --> 03:28:40,951 import it into the file I'm currently working on 6087 03:28:41,161 --> 03:28:42,451 and I could actually access 6088 03:28:42,481 --> 03:28:43,650 all of those functions 6089 03:28:43,681 --> 03:28:44,881 all those variables. 6090 03:28:44,940 --> 03:28:46,201 all the stuff from that 6091 03:28:46,231 --> 03:28:47,401 external file 6092 03:28:47,821 --> 03:28:49,650 inside the file that I'm currently 6093 03:28:49,681 --> 03:28:50,610 working on so 6094 03:28:50,971 --> 03:28:53,700 I'm sure you guys how we can use module and then we'll talk about like 6095 03:28:53,970 --> 03:28:58,531 you know where you can find awesome modules and and really why modules make python and 6096 03:28:58,562 --> 03:28:59,161 awesome 6097 03:28:59,221 --> 03:28:59,881 language, 6098 03:29:00,271 --> 03:29:04,562 so over here in my text editor actually created this file and it's called 6099 03:29:04,593 --> 03:29:05,943 useful tools 6100 03:29:06,273 --> 03:29:07,264 dot python 6101 03:29:07,653 --> 03:29:10,684 and basically this file just has a bunch of 6102 03:29:10,773 --> 03:29:14,344 sort of like useful tools that I might want to use in one of my progress, 6103 03:29:14,824 --> 03:29:20,074 she'll see over here I have some variables this one is telling me how many feet are in a mile. 6104 03:29:20,374 --> 03:29:23,193 this one's telling me how many meters or a kilometer. 6105 03:29:23,313 --> 03:29:26,044 and then we have this list here which lists out all of the 6106 03:29:26,074 --> 03:29:27,333 members of the beatles, 6107 03:29:27,693 --> 03:29:32,702 am I also have a couple different functions down here so I have this get file extension function. 6108 03:29:33,122 --> 03:29:33,722 and this 6109 03:29:34,082 --> 03:29:35,012 basically just was 6110 03:29:35,042 --> 03:29:37,562 you know you give it a file name it'll tell you what the extension is, 6111 03:29:37,862 --> 03:29:39,961 and then we have this other function down here which 6112 03:29:40,021 --> 03:29:41,460 simulates rolling the dice 6113 03:29:41,490 --> 03:29:42,780 so you pass it a number 6114 03:29:43,021 --> 03:29:45,811 bypass it like a six it would roll a six sided dice 6115 03:29:46,051 --> 03:29:46,500 a passive 6116 03:29:46,530 --> 03:29:48,300 nine at roland nine sided dice etc 6117 03:29:48,330 --> 03:29:48,690 so 6118 03:29:48,780 --> 03:29:50,851 this is like a pipe on file that I wrote. 6119 03:29:51,181 --> 03:29:52,710 and it has some useful stuff in it, 6120 03:29:52,950 --> 03:29:56,667 and honestly there's a lot of stuff in here that I might want to use in the 6121 03:29:56,697 --> 03:29:59,066 other python files that I work with, 6122 03:29:59,366 --> 03:30:00,986 so let's say I'm over here at this 6123 03:30:01,046 --> 03:30:01,466 app 6124 03:30:01,496 --> 03:30:01,886 dot 6125 03:30:01,916 --> 03:30:03,836 python file and I'm thinking to myself, 6126 03:30:04,105 --> 03:30:04,676 ha, 6127 03:30:05,126 --> 03:30:07,497 I think I could use one of those functions 6128 03:30:07,527 --> 03:30:10,017 that was inside of that useful tools file 6129 03:30:10,047 --> 03:30:10,736 actually yeah 6130 03:30:10,767 --> 03:30:11,606 I need to 6131 03:30:11,637 --> 03:30:13,826 simulate rolling the dice in my program 6132 03:30:14,517 --> 03:30:16,437 well instead of having to go over here 6133 03:30:16,467 --> 03:30:17,696 copy this 6134 03:30:17,727 --> 03:30:18,626 function and then 6135 03:30:18,656 --> 03:30:20,396 paste it over here in my program 6136 03:30:20,757 --> 03:30:21,838 I can actually just 6137 03:30:21,958 --> 03:30:22,798 import 6138 03:30:22,828 --> 03:30:23,278 this 6139 03:30:23,309 --> 03:30:24,630 useful tools file 6140 03:30:24,870 --> 03:30:28,468 and I'll be able to import all of these functions and all of these 6141 03:30:28,498 --> 03:30:29,908 variables and attributes. 6142 03:30:30,298 --> 03:30:32,547 so the way I can do that is by coming up here 6143 03:30:32,606 --> 03:30:34,646 and I'm just going to go right at the top of my 6144 03:30:34,677 --> 03:30:36,146 file and I'm just going to say. 6145 03:30:36,507 --> 03:30:37,197 import. 6146 03:30:37,527 --> 03:30:41,424 and then I want to type in the name of the file that I want to import it so I was going to say, 6147 03:30:41,844 --> 03:30:43,313 useful underscore 6148 03:30:43,344 --> 03:30:44,094 tools 6149 03:30:44,454 --> 03:30:48,054 and pythons going to be smart enough to know that it should go off and 6150 03:30:48,084 --> 03:30:51,175 grab all the stuff from this useful tools dot 6151 03:30:51,205 --> 03:30:52,314 pi file 6152 03:30:52,765 --> 03:30:54,565 so once I've used that important statement 6153 03:30:54,596 --> 03:30:56,996 I can actually use all of the functions 6154 03:30:57,026 --> 03:30:58,885 inside of that useful tools file. 6155 03:30:59,365 --> 03:31:00,056 so 6156 03:31:00,086 --> 03:31:03,116 for example I could simulate rolling the dice I could say 6157 03:31:03,626 --> 03:31:04,826 useful tools. 6158 03:31:05,846 --> 03:31:06,596 dot, 6159 03:31:06,926 --> 03:31:09,297 and now I'm actually able to access 6160 03:31:09,327 --> 03:31:13,528 all of the attributes from inside that file so when I say useful tools dot 6161 03:31:13,828 --> 03:31:18,479 you'll see down here and my little suggestions menu it's telling me like beetles feet miles 6162 03:31:18,929 --> 03:31:21,839 get file extension meters and kilometers roll dice. 6163 03:31:21,959 --> 03:31:27,269 so it's giving me access to all of the stuff that was in that file so over here I could just say like 6164 03:31:28,108 --> 03:31:32,128 roll dice and we could pass this like a ten will roll a ten sided dice. 6165 03:31:32,578 --> 03:31:32,998 and 6166 03:31:33,028 --> 03:31:34,349 now this should actually 6167 03:31:34,379 --> 03:31:36,180 be able to run that function so 6168 03:31:36,239 --> 03:31:39,838 will simulate rolling a ten cited diet as you can see we got four 6169 03:31:40,438 --> 03:31:40,947 and 6170 03:31:41,277 --> 03:31:45,328 this is a really core concept in python which is 6171 03:31:45,718 --> 03:31:46,647 importing 6172 03:31:46,678 --> 03:31:48,027 functionality from 6173 03:31:48,058 --> 03:31:49,527 external python 6174 03:31:49,558 --> 03:31:50,757 files and this is like 6175 03:31:50,967 --> 03:31:54,806 huge in python and this is seriously going to change the way that you create your 6176 03:31:55,376 --> 03:31:56,396 python files 6177 03:31:56,936 --> 03:31:57,325 so 6178 03:31:57,535 --> 03:31:58,165 you'll notice like 6179 03:31:58,225 --> 03:31:59,545 I didn't have to 6180 03:31:59,575 --> 03:32:02,814 copy any functions or any variables or anything 6181 03:32:03,175 --> 03:32:06,085 over into this file and yet I was able to use 6182 03:32:06,115 --> 03:32:08,995 all this stuff that was inside this useful tools 6183 03:32:09,025 --> 03:32:09,596 file 6184 03:32:09,806 --> 03:32:11,936 so that is huge and honestly, 6185 03:32:12,056 --> 03:32:15,624 it's going to save you a lot of time because you can write something once and then you can 6186 03:32:15,684 --> 03:32:17,964 import it into your other files. 6187 03:32:18,264 --> 03:32:24,923 so that's really the basics of using modules mean modules are very simple module as any external python file 6188 03:32:25,163 --> 03:32:27,292 that you want to use some stuff inside of it. 6189 03:32:27,412 --> 03:32:28,402 I want to show you guys 6190 03:32:28,433 --> 03:32:29,062 a 6191 03:32:29,242 --> 03:32:32,361 place where you can go to find a huge list 6192 03:32:32,392 --> 03:32:33,651 of modules so 6193 03:32:34,012 --> 03:32:35,602 I'm going to go over here my web browser. 6194 03:32:35,661 --> 03:32:36,231 and 6195 03:32:36,592 --> 03:32:37,612 among this website 6196 03:32:37,643 --> 03:32:39,083 it's actually like the 6197 03:32:39,143 --> 03:32:40,643 official python docks 6198 03:32:41,183 --> 03:32:43,343 and basically all I did to get here was just typing 6199 03:32:43,373 --> 03:32:45,443 list of python modules and google, 6200 03:32:45,863 --> 03:32:49,792 and depending on the version of python you're using you're gonna want to make sure that you click the right one. 6201 03:32:50,002 --> 03:32:51,532 I flicked on the version three one 6202 03:32:51,683 --> 03:32:52,943 and over here on this page 6203 03:32:52,974 --> 03:32:55,282 you can see there's just a huge list 6204 03:32:55,312 --> 03:32:57,022 of python modules, 6205 03:32:57,322 --> 03:32:59,932 and these are basically modules inside of python 6206 03:32:59,962 --> 03:33:01,731 that you can just access so 6207 03:33:02,271 --> 03:33:03,291 essentially there's like 6208 03:33:03,321 --> 03:33:05,271 all of this awesome code that's 6209 03:33:05,331 --> 03:33:11,061 already been written for you and so if there's some sort of functionality that you want have inside of your python program, 6210 03:33:11,330 --> 03:33:12,200 chances are 6211 03:33:12,230 --> 03:33:13,791 there's a module in here 6212 03:33:14,121 --> 03:33:15,980 that has that functionalities of 6213 03:33:16,040 --> 03:33:17,060 all sorts of stuff 6214 03:33:17,090 --> 03:33:19,369 you can do I mean if you just look through this list like 6215 03:33:19,489 --> 03:33:21,710 you'll see a huge collection of 6216 03:33:21,979 --> 03:33:22,880 basically just 6217 03:33:23,240 --> 03:33:23,930 you know a bunch of 6218 03:33:23,960 --> 03:33:26,600 either python variables are python functions just 6219 03:33:26,659 --> 03:33:26,989 you know 6220 03:33:27,020 --> 03:33:29,749 things that you can use to make your programs better. 6221 03:33:30,139 --> 03:33:30,499 so 6222 03:33:30,529 --> 03:33:31,850 here's what I would recommend like 6223 03:33:32,060 --> 03:33:33,918 head over to this page and 6224 03:33:34,038 --> 03:33:37,817 to sort of look through a lot of these different module is no see what you can see 6225 03:33:38,178 --> 03:33:38,958 and honestly like 6226 03:33:38,988 --> 03:33:41,568 if you click on one of them it'll bring you to a page that 6227 03:33:41,658 --> 03:33:43,968 talks about like how to use they'll tell you like 6228 03:33:44,268 --> 03:33:45,767 how to import it and just you know 6229 03:33:45,797 --> 03:33:47,297 some basics about it 6230 03:33:48,106 --> 03:33:49,877 and this is sort of like the list 6231 03:33:49,907 --> 03:33:51,348 that on the official 6232 03:33:51,647 --> 03:33:52,488 python docs 6233 03:33:52,519 --> 03:33:52,908 but 6234 03:33:53,269 --> 03:33:54,019 he's using 6235 03:33:54,049 --> 03:33:58,909 the python community is huge there's tons of developers who use python. 6236 03:33:59,390 --> 03:34:03,980 and you can actually find a lot of third party modules so if you just go online and you know 6237 03:34:04,011 --> 03:34:07,071 look up like python module for doing actual 6238 03:34:07,102 --> 03:34:08,692 python module for doing why 6239 03:34:08,933 --> 03:34:14,212 chances are somebody out there has already written a python module to do what you're trying to do so. 6240 03:34:14,542 --> 03:34:18,562 if you get good at using modules and you get good at you know looking for them in finding them 6241 03:34:18,593 --> 03:34:21,083 you can actually save yourself a bunch of time because 6242 03:34:21,353 --> 03:34:24,682 chances are that somebody is already written a module to do 6243 03:34:24,712 --> 03:34:25,072 you know 6244 03:34:25,103 --> 03:34:26,332 what you're trying to do are like 6245 03:34:26,422 --> 03:34:27,801 part of what you're trying to do. 6246 03:34:28,041 --> 03:34:31,491 so now that we've taken a look at all these different python modules 6247 03:34:31,521 --> 03:34:36,771 I wanted to kind of dive in a little bit deeper into how we can actually use these things so 6248 03:34:37,610 --> 03:34:45,408 you'll notice here there's a lot of files right there's a lot of different modules that we apparently have access to in python but the question is 6249 03:34:45,678 --> 03:34:47,928 where all these files store 6250 03:34:47,958 --> 03:34:48,378 right 6251 03:34:48,647 --> 03:34:50,867 when I was over here in my program 6252 03:34:51,107 --> 03:34:53,566 for example I was using this useful tools 6253 03:34:53,776 --> 03:34:54,796 dot pie fire like 6254 03:34:54,826 --> 03:34:57,255 I knew where that was I created that file. 6255 03:34:57,465 --> 03:34:59,775 I was directly involved in making it 6256 03:34:59,835 --> 03:35:02,414 and I just imported over here it was pretty easy right ? 6257 03:35:02,804 --> 03:35:05,264 but what about all of these files 6258 03:35:05,323 --> 03:35:05,653 right 6259 03:35:05,713 --> 03:35:07,933 what about all these modules over healy 6260 03:35:07,963 --> 03:35:09,644 where all of these stored 6261 03:35:10,033 --> 03:35:11,202 and there's basically 6262 03:35:11,232 --> 03:35:16,812 two types of models here there's built in modules which means they're just built into the python language so 6263 03:35:17,052 --> 03:35:19,241 we can't just automatically have access to them. 6264 03:35:19,751 --> 03:35:20,290 and there's no 6265 03:35:20,350 --> 03:35:22,029 external modules 6266 03:35:22,329 --> 03:35:22,869 and 6267 03:35:23,139 --> 03:35:25,087 a lot of these external modules 6268 03:35:25,146 --> 03:35:26,587 are just stored in 6269 03:35:26,797 --> 03:35:27,907 basically the same 6270 03:35:27,938 --> 03:35:30,549 folder that we installed python on our computer so 6271 03:35:30,909 --> 03:35:34,148 for example let's look at a couple of these right we have on linking 6272 03:35:34,479 --> 03:35:35,889 base sixty four 6273 03:35:35,919 --> 03:35:37,119 bd be 6274 03:35:37,179 --> 03:35:38,469 been ascii like 6275 03:35:38,769 --> 03:35:40,087 if I come over here, 6276 03:35:40,537 --> 03:35:44,226 and you'll see I'm over here in milo file explorer I have my 6277 03:35:44,615 --> 03:35:46,386 python project which is draft. 6278 03:35:46,596 --> 03:35:48,996 there's also this other folder over here called 6279 03:35:49,026 --> 03:35:50,376 external libraries. 6280 03:35:50,706 --> 03:35:52,356 if I was to click down on this 6281 03:35:52,416 --> 03:35:53,616 and I come down here 6282 03:35:53,646 --> 03:35:54,636 you can see it's just 6283 03:35:54,695 --> 03:35:56,076 the version of python that I'm 6284 03:35:56,106 --> 03:35:56,767 amusing. 6285 03:35:57,727 --> 03:35:59,736 there's a folder here called lab 6286 03:35:59,796 --> 03:36:03,785 and this is a very important folder and this is basically storing all of those 6287 03:36:03,936 --> 03:36:06,755 external modules so you can see if I scroll down here 6288 03:36:07,085 --> 03:36:09,305 we have all of these different 6289 03:36:09,364 --> 03:36:10,624 like modules right 6290 03:36:10,864 --> 03:36:14,194 so here's that base sixty four hears bd be right. 6291 03:36:14,555 --> 03:36:17,224 a lot of these external modules are stored 6292 03:36:17,283 --> 03:36:19,203 inside of this lib folder and 6293 03:36:19,533 --> 03:36:23,823 like is that there's no external modules there's also a few modules that are just like a built in 6294 03:36:23,854 --> 03:36:24,573 modules 6295 03:36:24,693 --> 03:36:26,734 that are not can be stored inside of here 6296 03:36:26,975 --> 03:36:28,415 and you can actually tell so 6297 03:36:28,445 --> 03:36:30,457 for example if I was to come over here and click on 6298 03:36:30,487 --> 03:36:31,627 base sixty four. 6299 03:36:32,197 --> 03:36:34,628 it tells me where the source code 6300 03:36:34,658 --> 03:36:37,208 so the source codes in lab forward slash 6301 03:36:37,268 --> 03:36:38,317 base sixty four. 6302 03:36:38,647 --> 03:36:42,397 we are able to see that right how is I saw that inside of my lib folder 6303 03:36:43,058 --> 03:36:45,876 this been ascii though for example if I click on this, 6304 03:36:46,086 --> 03:36:47,256 you'll notice that this 6305 03:36:47,286 --> 03:36:47,886 isn't 6306 03:36:48,126 --> 03:36:53,165 giving me a folder cause this is basically just like built in to python so we don't have to worry about 6307 03:36:54,065 --> 03:36:54,546 you 6308 03:36:54,996 --> 03:36:56,556 lucky enough I'll just kind of like 6309 03:36:56,586 --> 03:36:57,516 it just how it works. 6310 03:36:57,756 --> 03:37:00,186 so some of these are external some of them are built in. 6311 03:37:00,275 --> 03:37:00,695 and 6312 03:37:00,905 --> 03:37:01,654 I want to show you guys 6313 03:37:01,864 --> 03:37:02,225 are 6314 03:37:02,314 --> 03:37:04,895 in addition to using these modules races. 6315 03:37:05,045 --> 03:37:07,325 there's a lot of good stuff here and honestly you could spend. 6316 03:37:07,535 --> 03:37:11,075 you know for years and years just learning about all these different modules. 6317 03:37:11,585 --> 03:37:14,163 but a lot of times you're going to want to use modules that 6318 03:37:14,223 --> 03:37:15,843 other people have written 6319 03:37:16,323 --> 03:37:16,684 and 6320 03:37:16,773 --> 03:37:17,044 you know 6321 03:37:17,074 --> 03:37:17,823 there's a lot of 6322 03:37:18,003 --> 03:37:18,933 developers 6323 03:37:19,383 --> 03:37:25,052 who work on python and who write different modules so there's a lot of useful modules either that aren't included 6324 03:37:25,321 --> 03:37:28,471 in this list right they're not going to be inside of this lib 6325 03:37:28,501 --> 03:37:29,221 folder 6326 03:37:29,431 --> 03:37:29,940 by 6327 03:37:29,971 --> 03:37:30,631 default. 6328 03:37:31,021 --> 03:37:33,331 and what we can actually do is 6329 03:37:33,361 --> 03:37:37,381 we can install those external module is as third party modules 6330 03:37:37,621 --> 03:37:38,971 that don't just come 6331 03:37:39,001 --> 03:37:40,531 preinstalled with python, 6332 03:37:40,892 --> 03:37:42,931 and I'm sure you guys haven't do that really quick so 6333 03:37:43,051 --> 03:37:45,781 the first thing you need to do obviously is find 6334 03:37:45,812 --> 03:37:49,022 a python module that you wanna installed you can download 6335 03:37:49,952 --> 03:37:51,782 and I have actually used one in the past. 6336 03:37:52,893 --> 03:37:54,453 python docs it's an 6337 03:37:54,604 --> 03:37:56,284 external module that you can use to 6338 03:37:56,524 --> 03:38:00,574 basically use python to create where documents which is pretty cool as you can like 6339 03:38:00,844 --> 03:38:04,174 format where documents inside of it so I'm just going to look that up here 6340 03:38:04,233 --> 03:38:05,254 in google. 6341 03:38:05,554 --> 03:38:07,114 I'm just gonna type in python 6342 03:38:07,145 --> 03:38:07,715 docks 6343 03:38:08,255 --> 03:38:08,555 and 6344 03:38:08,765 --> 03:38:10,535 here's a thing there's tons of these 6345 03:38:10,565 --> 03:38:13,026 extra modules you don't have to use python dogs. 6346 03:38:13,236 --> 03:38:14,856 I'm just giving you guys an example 6347 03:38:15,757 --> 03:38:17,196 but really it he just look up like 6348 03:38:17,256 --> 03:38:21,665 useful third party python modules there's going to be lists of hundreds of these things online 6349 03:38:22,325 --> 03:38:23,285 or in my case though 6350 03:38:23,315 --> 03:38:24,875 python docs has a website 6351 03:38:25,145 --> 03:38:26,705 and it basically just 6352 03:38:26,795 --> 03:38:29,585 has like some installation instructions are gonna come over here 6353 03:38:29,975 --> 03:38:34,236 and it tells me that I can install python docs using the command pip 6354 03:38:34,597 --> 03:38:36,157 install python docks. 6355 03:38:36,397 --> 03:38:37,928 so this brings us to 6356 03:38:38,138 --> 03:38:39,814 something I want to talk to you guys about which is a 6357 03:38:39,845 --> 03:38:40,354 pip 6358 03:38:40,744 --> 03:38:41,374 and pip 6359 03:38:41,404 --> 03:38:43,624 is essentially a program 6360 03:38:44,044 --> 03:38:49,384 and actually if you have a newer version of python three it comes preinstalled with python three 6361 03:38:49,804 --> 03:38:52,773 and you can use pipe to install python modules. 6362 03:38:53,043 --> 03:38:54,213 it's referred to as 6363 03:38:54,243 --> 03:38:54,903 a 6364 03:38:55,083 --> 03:38:56,133 package manager 6365 03:38:56,433 --> 03:38:59,313 and a package manager basically just allows you to like 6366 03:38:59,523 --> 03:39:01,023 install manage 6367 03:39:01,083 --> 03:39:04,083 update and uninstall like different python 6368 03:39:04,113 --> 03:39:04,804 modules 6369 03:39:05,044 --> 03:39:05,645 so pip 6370 03:39:05,675 --> 03:39:07,265 is extremely useful. 6371 03:39:07,625 --> 03:39:11,403 and in order for us to install python docs we're going to have to use pip 6372 03:39:11,823 --> 03:39:13,563 somno sure you guys are how we can do that, 6373 03:39:14,224 --> 03:39:15,904 but what I want to do is open up the 6374 03:39:15,935 --> 03:39:18,665 command prompt or the terminal on my computer. 6375 03:39:19,025 --> 03:39:21,217 if you're on a mac you wanna open up your terminal. 6376 03:39:21,547 --> 03:39:24,065 if you're on a windows computer you want to open up your command prompt 6377 03:39:24,096 --> 03:39:25,206 I'm using a windows 6378 03:39:25,236 --> 03:39:25,896 right now, 6379 03:39:26,195 --> 03:39:29,255 so I'm just going to come down to the search bar and type a and c m d 6380 03:39:29,615 --> 03:39:32,403 and this command prompts you to come up so I'm gonna click this 6381 03:39:32,823 --> 03:39:34,801 inside of the command prompt we can actually use 6382 03:39:34,831 --> 03:39:35,221 pip 6383 03:39:35,311 --> 03:39:38,160 firstly we want to do is check to make sure that pips install 6384 03:39:38,550 --> 03:39:42,839 and like I said if you have a newer version of python three pictured calm just 6385 03:39:42,869 --> 03:39:43,829 pretty installed 6386 03:39:44,369 --> 03:39:48,119 and it should do some work in here if you don't have a newer version of python three though, 6387 03:39:48,299 --> 03:39:50,129 you might have to install 6388 03:39:50,159 --> 03:39:50,520 pip 6389 03:39:50,550 --> 03:39:51,270 separately 6390 03:39:51,449 --> 03:39:54,239 and there's tons of instructions online and how to install pip. 6391 03:39:54,299 --> 03:39:56,340 so I'm just going to check to make sure that I have 6392 03:39:56,550 --> 03:39:57,119 to type in 6393 03:39:57,239 --> 03:39:57,779 pip 6394 03:39:57,959 --> 03:39:58,948 haven hyphen 6395 03:39:59,309 --> 03:40:00,059 version, 6396 03:40:00,358 --> 03:40:02,127 and they should spit out the version of pip 6397 03:40:02,157 --> 03:40:03,236 that I currently have. 6398 03:40:03,506 --> 03:40:04,466 so as long as we have to 6399 03:40:04,496 --> 03:40:04,856 pip 6400 03:40:04,887 --> 03:40:06,686 then we're ready to install an 6401 03:40:06,716 --> 03:40:08,546 external or third party 6402 03:40:08,846 --> 03:40:09,565 python 6403 03:40:09,596 --> 03:40:10,256 module. 6404 03:40:10,616 --> 03:40:12,087 all I have to do is just say pick 6405 03:40:12,177 --> 03:40:13,077 install 6406 03:40:13,377 --> 03:40:18,146 and now I just want to type in the name of the python module so in the case of python docks. 6407 03:40:18,807 --> 03:40:20,066 it was just 6408 03:40:20,336 --> 03:40:21,596 python dogs like that. 6409 03:40:21,865 --> 03:40:22,466 now again 6410 03:40:22,496 --> 03:40:23,875 you don't have to install python dogs 6411 03:40:23,905 --> 03:40:25,225 I'm just doing this for 6412 03:40:25,255 --> 03:40:27,234 this tutorial just going to show you guys 6413 03:40:27,444 --> 03:40:28,644 how this is going to work. 6414 03:40:28,884 --> 03:40:29,573 but you know 6415 03:40:29,604 --> 03:40:31,854 what you want to do is go online and look up some 6416 03:40:32,214 --> 03:40:34,583 third party external python modules, 6417 03:40:34,763 --> 03:40:35,902 and generally like 6418 03:40:35,933 --> 03:40:37,973 I'd say ninety to ninety five percent of the time 6419 03:40:38,003 --> 03:40:40,253 you're going to be able to just install them using pip. 6420 03:40:40,643 --> 03:40:43,253 in the off case that you can't install them using pip, 6421 03:40:43,493 --> 03:40:46,912 chances are they'll be like some detailed installation instructions but out say 6422 03:40:47,092 --> 03:40:48,352 for the most part any late 6423 03:40:48,411 --> 03:40:49,251 legitimate 6424 03:40:49,491 --> 03:40:50,182 python 6425 03:40:50,241 --> 03:40:53,001 module is going to be able to install using pip. 6426 03:40:53,691 --> 03:40:54,142 so 6427 03:40:54,172 --> 03:40:55,552 over here to understand a pip 6428 03:40:55,582 --> 03:40:57,651 install and add a module name so 6429 03:40:58,041 --> 03:40:59,781 python hyphen docks 6430 03:41:00,321 --> 03:41:04,400 and when I click enter this is going to go off and install python dogs for ourselves, 6431 03:41:04,521 --> 03:41:04,641 we 6432 03:41:04,671 --> 03:41:05,241 enter 6433 03:41:05,841 --> 03:41:09,651 and it's going to go off and install everything we need for python docs. 6434 03:41:10,521 --> 03:41:11,542 so you can see we have 6435 03:41:11,572 --> 03:41:13,822 successfully installed python docks 6436 03:41:14,152 --> 03:41:15,833 zero point eight point six, 6437 03:41:16,163 --> 03:41:16,493 so 6438 03:41:16,523 --> 03:41:17,304 I'm sure you guys 6439 03:41:17,334 --> 03:41:18,983 where exactly this god 6440 03:41:19,014 --> 03:41:19,943 placed so 6441 03:41:19,974 --> 03:41:21,714 normally when we install 6442 03:41:21,744 --> 03:41:22,164 a 6443 03:41:22,194 --> 03:41:23,034 external 6444 03:41:23,064 --> 03:41:24,055 third party module. 6445 03:41:24,354 --> 03:41:25,584 it's going to get put inside 6446 03:41:25,614 --> 03:41:26,694 this limb folder. 6447 03:41:26,874 --> 03:41:30,054 but it's gonna get put inside of a special folder in here called 6448 03:41:30,084 --> 03:41:31,374 site packages 6449 03:41:31,764 --> 03:41:35,064 so slight packages is a special folder and if I open this folder, 6450 03:41:35,395 --> 03:41:37,314 you'll see now we have this 6451 03:41:37,555 --> 03:41:39,715 docs folder and we also have this 6452 03:41:39,745 --> 03:41:42,234 python dark zero point eight point six 6453 03:41:42,685 --> 03:41:45,266 pi three points sakes thought eg info folder so 6454 03:41:45,476 --> 03:41:46,585 these two folders 6455 03:41:46,945 --> 03:41:47,966 are basically 6456 03:41:48,326 --> 03:41:50,726 included in that module installation so 6457 03:41:50,966 --> 03:41:54,596 you can see this docs folder has a bunch of different python files and 6458 03:41:54,896 --> 03:41:56,905 has a bunch of stuff in here that we can use. 6459 03:41:57,205 --> 03:42:00,233 so if I wanted to use this inside of one of my programs 6460 03:42:00,264 --> 03:42:03,534 I'm just going to refer to the name of the module so in our case, 6461 03:42:03,774 --> 03:42:05,395 it's just going to be docks. 6462 03:42:05,574 --> 03:42:07,344 so I used python docks 6463 03:42:07,554 --> 03:42:08,963 in order to install it but 6464 03:42:08,993 --> 03:42:11,753 we're going to use docs if we want to import it so 6465 03:42:11,993 --> 03:42:13,464 I could come up here and I could say 6466 03:42:13,494 --> 03:42:14,124 import 6467 03:42:14,184 --> 03:42:15,414 deal c x. 6468 03:42:15,984 --> 03:42:16,465 and 6469 03:42:16,495 --> 03:42:22,556 now I can actually use it so I can just say like docs dot whatever and you can see there's a bunch of different stuff down here. 6470 03:42:22,796 --> 03:42:23,846 there's like a document, 6471 03:42:23,996 --> 03:42:26,487 document part image part there's a bunch of stuff that we can 6472 03:42:26,518 --> 03:42:27,838 use with this and obviously 6473 03:42:28,048 --> 03:42:29,248 depending on the python 6474 03:42:29,278 --> 03:42:30,419 module you install 6475 03:42:30,449 --> 03:42:31,859 there can be different instructions. 6476 03:42:32,249 --> 03:42:32,969 but you can see it 6477 03:42:32,999 --> 03:42:34,500 got stored down here in this 6478 03:42:34,530 --> 03:42:35,880 site packages folder. 6479 03:42:36,120 --> 03:42:37,859 if I wanted to remove this 6480 03:42:37,890 --> 03:42:38,609 I could use 6481 03:42:38,640 --> 03:42:40,501 pick to do it so I could just say tip 6482 03:42:42,511 --> 03:42:44,371 and install and we could just 6483 03:42:45,901 --> 03:42:46,531 again saying 6484 03:42:46,562 --> 03:42:47,940 that a module names of 6485 03:42:47,971 --> 03:42:49,021 python dogs 6486 03:42:49,471 --> 03:42:50,520 and people now 6487 03:42:50,550 --> 03:42:51,810 and install this 6488 03:42:52,350 --> 03:42:53,250 on our computer. 6489 03:42:53,460 --> 03:42:54,449 so if I was to go back 6490 03:42:54,479 --> 03:42:55,919 over to this 6491 03:42:55,979 --> 03:42:56,608 folder, 6492 03:42:56,849 --> 03:42:58,288 you'll see that those two 6493 03:42:58,318 --> 03:42:59,969 that docs folder and then that 6494 03:42:59,999 --> 03:43:00,509 other 6495 03:43:00,809 --> 03:43:03,448 folder disappeared so they're no longer here, 6496 03:43:03,868 --> 03:43:06,808 and I'm actually not going to be able to use this anymore so 6497 03:43:07,107 --> 03:43:09,688 that's sort of the ins and outs of using 6498 03:43:09,718 --> 03:43:11,098 modules now again 6499 03:43:11,308 --> 03:43:12,839 there's tons of these modules and 6500 03:43:13,169 --> 03:43:15,119 I can be dozens and dozens of python 6501 03:43:15,149 --> 03:43:17,189 courses covering each one of these modules, 6502 03:43:17,520 --> 03:43:17,850 you know 6503 03:43:17,909 --> 03:43:19,500 the built in modules the 6504 03:43:19,980 --> 03:43:22,141 modules that are included by default and 6505 03:43:22,200 --> 03:43:23,161 external modules. 6506 03:43:23,312 --> 03:43:25,081 there's tons of these things out there 6507 03:43:25,411 --> 03:43:31,528 and really as a python programmer now what you can do is you can go out and play around with these different modules. 6508 03:43:31,679 --> 03:43:34,738 I showed you the ins and outs of installing them and you can use pip 6509 03:43:35,038 --> 03:43:37,077 to install all these different modules 6510 03:43:37,347 --> 03:43:41,847 and you know you can make sure that you have owned by checking the site packages folder or the lips folder 6511 03:43:42,297 --> 03:43:45,026 but really now it's on you to just come and go out and 6512 03:43:45,206 --> 03:43:49,975 use these modules and don't shy away from this because modules are a huge 6513 03:43:50,005 --> 03:43:50,935 part of python 6514 03:43:51,175 --> 03:43:54,594 you're definitely going to want to include them in your python stack. 6515 03:43:58,914 --> 03:44:03,354 in this tutorial on a talk to you guys about classes and objects in 6516 03:44:03,413 --> 03:44:04,163 python 6517 03:44:04,943 --> 03:44:06,474 classes and objects are 6518 03:44:06,533 --> 03:44:11,393 extremely useful in python programming and they can help you to make your programs 6519 03:44:11,423 --> 03:44:13,762 more organized and more powerful. 6520 03:44:14,302 --> 03:44:14,782 so 6521 03:44:14,842 --> 03:44:17,513 when we're in python we're dealing with all types of data 6522 03:44:17,603 --> 03:44:18,083 right 6523 03:44:18,383 --> 03:44:22,853 and a lot of times when we're writing programs we're going to have to work with different types of data 6524 03:44:23,272 --> 03:44:27,350 and there's essentially like a few basic types of data we can deal with usually things like 6525 03:44:27,380 --> 03:44:29,510 string cilic plain tax 6526 03:44:29,689 --> 03:44:33,171 numbers and boolean values those three are kind of like 6527 03:44:33,381 --> 03:44:36,651 the main types of data that you're going to be working with in 6528 03:44:37,132 --> 03:44:40,762 python and we have all sorts of structures we can use to store that data you know 6529 03:44:40,792 --> 03:44:42,651 things like lists or dictionaries. 6530 03:44:42,802 --> 03:44:43,642 but here's the problem 6531 03:44:43,672 --> 03:44:44,122 is that 6532 03:44:44,212 --> 03:44:44,722 not 6533 03:44:44,752 --> 03:44:45,592 all 6534 03:44:45,682 --> 03:44:48,892 information not all data not all things 6535 03:44:48,922 --> 03:44:49,762 can be 6536 03:44:49,792 --> 03:44:51,022 represented using 6537 03:44:51,053 --> 03:44:53,332 strings numbers or bullion's right, 6538 03:44:53,512 --> 03:44:53,961 there's a lot of 6539 03:44:53,991 --> 03:44:58,401 things in the real world that we can't represent in automating a string or an array, 6540 03:44:58,461 --> 03:44:59,781 or just a number right 6541 03:45:00,142 --> 03:45:02,392 in other words something like think of like something like a phone 6542 03:45:02,451 --> 03:45:03,561 or a computer 6543 03:45:03,860 --> 03:45:04,850 or a person 6544 03:45:04,880 --> 03:45:07,130 right you can't really represent those things 6545 03:45:07,580 --> 03:45:10,098 in like a string or a number you know it 6546 03:45:10,188 --> 03:45:11,026 in other words like 6547 03:45:11,086 --> 03:45:14,416 the data types that we have available to us in python 6548 03:45:14,446 --> 03:45:15,646 can't cover that. 6549 03:45:15,977 --> 03:45:21,015 and so what we can do with classes and objects is we can essentially create our own 6550 03:45:21,045 --> 03:45:22,155 data types. 6551 03:45:22,455 --> 03:45:25,483 so I can create my own data type for anything I want 6552 03:45:25,514 --> 03:45:26,444 python so 6553 03:45:26,595 --> 03:45:28,664 I could create like a phone data type 6554 03:45:28,694 --> 03:45:33,525 and it could represent a phone so I could store all the information I would ever want to know about my phone 6555 03:45:33,945 --> 03:45:35,925 inside of that data type in 6556 03:45:36,104 --> 03:45:39,074 and python we could create a class for it and 6557 03:45:39,284 --> 03:45:41,805 essentially what a classes is just saying hey 6558 03:45:41,835 --> 03:45:44,415 here's another data type that we want to use in python. 6559 03:45:44,896 --> 03:45:47,595 so with a class you can essentially define 6560 03:45:47,625 --> 03:45:48,405 your own 6561 03:45:48,436 --> 03:45:49,756 data type and its 6562 03:45:49,786 --> 03:45:52,966 super awesome and classes are extremely useful 6563 03:45:53,235 --> 03:45:57,227 causes are used in almost every single major programming language out there so 6564 03:45:57,347 --> 03:45:58,547 in this tutorial I just want to 6565 03:45:58,577 --> 03:46:00,377 give you guys a basic introduction of 6566 03:46:00,767 --> 03:46:03,646 classes and using them inside of python so 6567 03:46:03,706 --> 03:46:05,866 let's say that I'm writing a program, 6568 03:46:05,956 --> 03:46:07,396 and I want to 6569 03:46:07,456 --> 03:46:08,086 represent 6570 03:46:08,116 --> 03:46:09,017 a student 6571 03:46:09,047 --> 03:46:13,246 inside of this program so maybe I'm writing a program for like a college or a university. 6572 03:46:13,606 --> 03:46:14,867 let's say that in this program 6573 03:46:14,897 --> 03:46:16,247 I want to 6574 03:46:16,427 --> 03:46:17,958 model a student 6575 03:46:17,988 --> 03:46:21,438 like I want a model a real world objects and I wanted to be a student 6576 03:46:21,947 --> 03:46:23,777 right where we don't have a student data type 6577 03:46:23,987 --> 03:46:28,425 and I can't really represent a student in just a single string or a number. 6578 03:46:28,995 --> 03:46:32,056 so I can actually do is I can create a class 6579 03:46:32,086 --> 03:46:36,135 for a student and I'm basically creating like a student data type. 6580 03:46:36,615 --> 03:46:40,246 so I'm sure you guys how we can do that and create our student class 6581 03:46:40,276 --> 03:46:41,026 it's over here. 6582 03:46:41,326 --> 03:46:42,857 I'm just gonna make a new file. 6583 03:46:43,067 --> 03:46:47,269 wouldn't we get a new pipeline vase I'm just going to call it student dot pie 6584 03:46:48,499 --> 03:46:49,099 and 6585 03:46:49,219 --> 03:46:52,187 inside of this student dot pi file I want to create 6586 03:46:52,217 --> 03:46:54,106 a student class. 6587 03:46:54,406 --> 03:46:56,686 so the way that I can do that is just by typing 6588 03:46:56,716 --> 03:46:57,556 class. 6589 03:46:58,006 --> 03:46:59,146 and now I'm gonna type 6590 03:46:59,176 --> 03:47:00,557 the name of the class 6591 03:47:00,587 --> 03:47:01,756 that I want to create. 6592 03:47:01,996 --> 03:47:05,687 so in our case we are going to create a class called student so I'm just gonna say student. 6593 03:47:06,076 --> 03:47:06,945 and now we're going to make 6594 03:47:06,976 --> 03:47:07,876 a colon 6595 03:47:08,176 --> 03:47:10,695 now everything that goes inside of here 6596 03:47:10,785 --> 03:47:13,725 is going to be inside of our student class so 6597 03:47:13,875 --> 03:47:15,855 everything that's invented like this 6598 03:47:15,915 --> 03:47:17,596 will be considered a part of our 6599 03:47:17,626 --> 03:47:18,346 student 6600 03:47:18,376 --> 03:47:18,976 class 6601 03:47:19,396 --> 03:47:24,075 and basically what we can do inside of this student class is we can define a bunch of attributes 6602 03:47:24,105 --> 03:47:25,305 about a student. 6603 03:47:25,395 --> 03:47:27,944 so essentially what I'm doing is unlike modelling 6604 03:47:27,975 --> 03:47:30,796 a student I'm creating our student data type. 6605 03:47:31,065 --> 03:47:32,985 and I can use things like strings, 6606 03:47:33,195 --> 03:47:34,846 integers and bullion's 6607 03:47:35,025 --> 03:47:36,136 in order to 6608 03:47:36,195 --> 03:47:36,615 map 6609 03:47:36,646 --> 03:47:39,915 out what a student should be in what a student should have. 6610 03:47:40,335 --> 03:47:43,064 so I want to create something called an initialize 6611 03:47:43,095 --> 03:47:43,755 function. 6612 03:47:44,115 --> 03:47:45,854 and the way I do that as just by 6613 03:47:46,004 --> 03:47:47,414 typing out a d e f 6614 03:47:47,804 --> 03:47:48,643 and I was going to take 6615 03:47:48,673 --> 03:47:50,082 two underscores, 6616 03:47:50,502 --> 03:47:51,342 and then the word 6617 03:47:51,372 --> 03:47:52,752 I am I t 6618 03:47:52,992 --> 03:47:54,883 and then two more underscores, 6619 03:47:55,393 --> 03:47:55,812 and 6620 03:47:55,843 --> 03:47:57,072 you also want to type out 6621 03:47:57,103 --> 03:47:58,632 open close parentheses 6622 03:47:58,752 --> 03:48:01,271 and inside of those parentheses we want to type out 6623 03:48:01,301 --> 03:48:02,081 self, 6624 03:48:02,351 --> 03:48:04,061 and I'm on a colon after that. 6625 03:48:04,721 --> 03:48:07,630 what I can do inside of this initialize function 6626 03:48:07,899 --> 03:48:09,189 as I can basically map 6627 03:48:09,220 --> 03:48:09,609 out 6628 03:48:09,819 --> 03:48:11,949 what attributes a student should have 6629 03:48:11,979 --> 03:48:13,630 so we can essentially define like 6630 03:48:13,840 --> 03:48:14,320 hey, 6631 03:48:14,380 --> 03:48:16,149 here's the student data type 6632 03:48:16,209 --> 03:48:16,659 in 6633 03:48:16,779 --> 03:48:17,350 python 6634 03:48:17,380 --> 03:48:18,789 so what I want to do is add in 6635 03:48:18,819 --> 03:48:19,989 certain attributes 6636 03:48:20,020 --> 03:48:22,661 after this self so I'm just gonna say self 6637 03:48:22,691 --> 03:48:23,472 a comma. 6638 03:48:23,682 --> 03:48:25,541 and now we can start thinking about 6639 03:48:25,571 --> 03:48:26,052 you know 6640 03:48:26,111 --> 03:48:27,701 what values will 6641 03:48:27,761 --> 03:48:29,860 represent a student inside of our 6642 03:48:29,891 --> 03:48:31,211 python programs so 6643 03:48:31,541 --> 03:48:32,741 if I'm thinking lake 6644 03:48:32,831 --> 03:48:34,270 unthinking something like name 6645 03:48:34,329 --> 03:48:35,739 right so every student 6646 03:48:36,009 --> 03:48:37,659 in our programs should have a name. 6647 03:48:38,140 --> 03:48:40,119 they also might want to have a major 6648 03:48:40,149 --> 03:48:41,590 because they're in college, 6649 03:48:42,280 --> 03:48:45,041 they probably also will have a gps, 6650 03:48:45,251 --> 03:48:46,961 so their grade point average like 6651 03:48:46,991 --> 03:48:48,222 how they're doing in school 6652 03:48:48,731 --> 03:48:51,460 and lets to find one more thing that let me think, 6653 03:48:51,520 --> 03:48:52,270 why don't we make 6654 03:48:52,300 --> 03:48:53,561 a bullion 6655 03:48:53,980 --> 03:48:55,030 and it's going to be called 6656 03:48:55,090 --> 03:48:55,750 is 6657 03:48:55,840 --> 03:48:56,439 on 6658 03:48:57,130 --> 03:48:58,030 probation 6659 03:48:58,391 --> 03:49:01,449 and this will basically tell whether or not the student is on 6660 03:49:01,479 --> 03:49:02,319 probation. 6661 03:49:03,010 --> 03:49:03,580 so 6662 03:49:03,970 --> 03:49:06,100 essentially what I'm doing inside of this 6663 03:49:06,130 --> 03:49:07,839 initialize method inside of this 6664 03:49:07,869 --> 03:49:09,100 innate function is 6665 03:49:09,430 --> 03:49:11,319 I'm defining what a student 6666 03:49:11,350 --> 03:49:11,949 is 6667 03:49:11,979 --> 03:49:12,909 in our program. 6668 03:49:13,119 --> 03:49:14,439 and so in this program 6669 03:49:14,470 --> 03:49:15,189 a student 6670 03:49:15,249 --> 03:49:16,148 has a name, 6671 03:49:16,358 --> 03:49:17,408 it has a major 6672 03:49:17,588 --> 03:49:18,697 as a gps, 6673 03:49:18,817 --> 03:49:21,665 and it has a value that determines whether or not it's on probation. 6674 03:49:21,905 --> 03:49:24,425 this right here is the student data type. 6675 03:49:24,845 --> 03:49:27,876 so if I'm representing a student inside of my program now, 6676 03:49:28,146 --> 03:49:30,156 it has all of these attributes 6677 03:49:30,187 --> 03:49:31,446 associated to it. 6678 03:49:31,687 --> 03:49:33,517 and that's basically what I'm doing up here 6679 03:49:33,906 --> 03:49:34,387 now 6680 03:49:34,446 --> 03:49:36,276 inside of this initialize 6681 03:49:36,427 --> 03:49:38,707 function we actually have to do something and 6682 03:49:38,767 --> 03:49:40,627 basically what I want to do is 6683 03:49:41,257 --> 03:49:42,637 assign some values 6684 03:49:42,667 --> 03:49:45,637 so I'm going to be writing out some stuff and this might not make 6685 03:49:45,696 --> 03:49:46,717 total sense 6686 03:49:46,927 --> 03:49:47,767 right now. 6687 03:49:47,946 --> 03:49:51,365 but this is going to make sense in a second after we create our first 6688 03:49:51,425 --> 03:49:52,055 student 6689 03:49:52,145 --> 03:49:52,805 object. 6690 03:49:53,074 --> 03:49:53,494 so 6691 03:49:53,524 --> 03:49:56,314 just stick with me right now and just basically 6692 03:49:56,345 --> 03:50:00,155 know that we have to do what I'm doing over here so I'm just going to say self dot meme 6693 03:50:00,545 --> 03:50:01,505 is equal to name. 6694 03:50:02,075 --> 03:50:03,964 and then I'm going to say self dot major 6695 03:50:04,233 --> 03:50:05,253 because you get the major 6696 03:50:05,703 --> 03:50:07,173 self dot gps 6697 03:50:07,203 --> 03:50:07,504 is used 6698 03:50:07,534 --> 03:50:08,345 the gps. 6699 03:50:08,795 --> 03:50:10,234 and I'm going to say self dot 6700 03:50:10,265 --> 03:50:11,104 is 6701 03:50:11,704 --> 03:50:12,334 on 6702 03:50:13,894 --> 03:50:15,453 probation is equal to 6703 03:50:15,483 --> 03:50:16,654 is on probation. 6704 03:50:16,805 --> 03:50:17,645 so again 6705 03:50:17,675 --> 03:50:19,266 this might not make a whole lot of sense 6706 03:50:19,296 --> 03:50:20,196 right now 6707 03:50:20,227 --> 03:50:20,677 but 6708 03:50:20,736 --> 03:50:21,485 in a little bit 6709 03:50:21,516 --> 03:50:22,295 this is gonna make 6710 03:50:22,325 --> 03:50:23,195 total sense 6711 03:50:23,226 --> 03:50:23,796 so 6712 03:50:23,855 --> 03:50:26,405 now that I have this student class defined 6713 03:50:26,436 --> 03:50:28,145 I can actually use this class 6714 03:50:28,505 --> 03:50:31,055 inside of my other file so 6715 03:50:31,385 --> 03:50:33,093 I'm gonna come over here into this app 6716 03:50:33,123 --> 03:50:34,293 dot python file. 6717 03:50:34,503 --> 03:50:35,943 and this is just my main file. 6718 03:50:36,123 --> 03:50:37,712 so I actually want to create 6719 03:50:37,742 --> 03:50:39,271 a student right so 6720 03:50:39,571 --> 03:50:41,792 in that student class we defined 6721 03:50:41,912 --> 03:50:45,781 the student data type and we basically said like hey a student has a name, 6722 03:50:46,081 --> 03:50:47,521 a major a gps and 6723 03:50:47,730 --> 03:50:49,681 it says whether or not they're on probation 6724 03:50:49,891 --> 03:50:52,439 dots like the template for what a student 6725 03:50:52,470 --> 03:50:52,950 is, 6726 03:50:53,340 --> 03:50:53,939 but we can 6727 03:50:53,970 --> 03:50:55,439 actually create 6728 03:50:55,499 --> 03:50:56,759 a student so we can 6729 03:50:56,789 --> 03:50:59,789 create an actual student and give it some information. 6730 03:51:00,029 --> 03:51:00,989 and that's called an 6731 03:51:01,020 --> 03:51:01,739 object. 6732 03:51:02,039 --> 03:51:02,639 so 6733 03:51:02,789 --> 03:51:03,149 this 6734 03:51:03,180 --> 03:51:05,130 student class over here 6735 03:51:05,460 --> 03:51:07,710 is basically defining what a student 6736 03:51:07,740 --> 03:51:08,101 is 6737 03:51:08,131 --> 03:51:09,540 so a class is just like 6738 03:51:09,690 --> 03:51:11,971 an overview of what the student data type 6739 03:51:12,001 --> 03:51:12,511 is 6740 03:51:12,780 --> 03:51:13,800 an object 6741 03:51:14,040 --> 03:51:15,480 is an actual student 6742 03:51:15,570 --> 03:51:19,081 so it's an actual student with a name a major and a gps. 6743 03:51:19,471 --> 03:51:21,781 it's not just this template anymore it's 6744 03:51:21,812 --> 03:51:25,382 actually like a student that we're representing inside of our program so 6745 03:51:26,342 --> 03:51:30,331 in order to use that student class and create a student 6746 03:51:30,361 --> 03:51:33,062 object I actually need to import that so 6747 03:51:33,122 --> 03:51:35,012 all I have to do over here just say 6748 03:51:35,342 --> 03:51:36,092 from 6749 03:51:36,691 --> 03:51:37,531 student 6750 03:51:37,981 --> 03:51:39,512 and this is referring to this 6751 03:51:39,542 --> 03:51:40,771 student file. 6752 03:51:41,191 --> 03:51:41,942 I can say 6753 03:51:42,002 --> 03:51:42,752 import 6754 03:51:43,832 --> 03:51:44,522 student 6755 03:51:45,122 --> 03:51:48,273 and basically what this is saying is from the student 6756 03:51:48,304 --> 03:51:49,084 file. 6757 03:51:49,294 --> 03:51:51,725 I want to import the student class. 6758 03:51:51,845 --> 03:51:56,613 so even though these are both student they're referring to different things so this is referring to the file. 6759 03:51:56,974 --> 03:51:59,764 and this is referring to the actual student class. 6760 03:52:00,004 --> 03:52:02,732 so now that we did this we can create a student so 6761 03:52:02,912 --> 03:52:03,692 you can create an 6762 03:52:03,723 --> 03:52:05,072 object of a class 6763 03:52:05,103 --> 03:52:07,473 a lot like you would a normal variable so 6764 03:52:07,652 --> 03:52:08,822 I can just give it a name 6765 03:52:08,853 --> 03:52:09,873 I'm gonna call this 6766 03:52:10,053 --> 03:52:11,253 student one 6767 03:52:11,312 --> 03:52:12,963 and I'm going to set it equal to 6768 03:52:13,323 --> 03:52:14,163 student 6769 03:52:14,763 --> 03:52:17,013 and I'm gonna make an open and close parentheses 6770 03:52:17,223 --> 03:52:17,792 and now 6771 03:52:17,852 --> 03:52:19,771 inside of this parentheses. 6772 03:52:19,891 --> 03:52:21,270 I want to give this student 6773 03:52:21,359 --> 03:52:22,049 a name, 6774 03:52:22,739 --> 03:52:23,640 a major 6775 03:52:23,880 --> 03:52:24,870 a gps 6776 03:52:25,200 --> 03:52:25,771 and ann 6777 03:52:25,801 --> 03:52:27,211 is on probation 6778 03:52:27,541 --> 03:52:28,171 value. 6779 03:52:28,440 --> 03:52:31,407 so I'm going to say it will just create a fake student saw to say his name's 6780 03:52:31,438 --> 03:52:32,037 jim 6781 03:52:32,518 --> 03:52:33,897 and he's studying 6782 03:52:34,138 --> 03:52:35,098 business 6783 03:52:36,718 --> 03:52:37,468 and 6784 03:52:37,498 --> 03:52:40,167 we want to give them a gps and maybe has like a three point 6785 03:52:40,197 --> 03:52:40,797 one. 6786 03:52:41,547 --> 03:52:41,967 and 6787 03:52:41,997 --> 03:52:45,927 finally we want to say whether or not this student is on probation so why don't we say false. 6788 03:52:46,316 --> 03:52:48,087 so basically what I'm doing is I'm 6789 03:52:48,267 --> 03:52:50,126 saying that I want to create 6790 03:52:50,156 --> 03:52:51,086 a student. 6791 03:52:51,446 --> 03:52:53,726 so I want to actually create a student 6792 03:52:53,785 --> 03:52:55,076 object and rubber an 6793 03:52:55,106 --> 03:52:55,797 object 6794 03:52:55,827 --> 03:52:56,427 is just 6795 03:52:56,696 --> 03:52:56,966 an 6796 03:52:56,996 --> 03:52:57,716 instance 6797 03:52:57,746 --> 03:52:58,735 of a class. 6798 03:52:58,976 --> 03:53:02,845 so the class is like an overall template it defines what a student is 6799 03:53:03,114 --> 03:53:04,104 put an object 6800 03:53:04,164 --> 03:53:04,494 is an 6801 03:53:04,524 --> 03:53:05,784 actual student with 6802 03:53:05,844 --> 03:53:07,494 actual information so 6803 03:53:07,704 --> 03:53:09,804 we could call student one now 6804 03:53:09,834 --> 03:53:11,034 this is a student 6805 03:53:11,124 --> 03:53:11,904 objects. 6806 03:53:12,354 --> 03:53:13,884 so I just want to show you guys, 6807 03:53:13,943 --> 03:53:18,834 what this student object actually is and what we can do with it and then I'm going to talk some more about that 6808 03:53:18,864 --> 03:53:19,765 in it function 6809 03:53:19,795 --> 03:53:20,845 from before so 6810 03:53:21,475 --> 03:53:22,435 over here I'm just going to 6811 03:53:22,465 --> 03:53:23,664 make a print statement 6812 03:53:24,474 --> 03:53:26,393 inside of here I just want to print out 6813 03:53:26,782 --> 03:53:27,473 student 6814 03:53:27,862 --> 03:53:28,312 and 6815 03:53:28,433 --> 03:53:29,482 what's cool about 6816 03:53:29,542 --> 03:53:29,962 this 6817 03:53:29,992 --> 03:53:33,022 student one object is I can actually access 6818 03:53:33,082 --> 03:53:35,961 each of the attributes from inside of this object. 6819 03:53:36,261 --> 03:53:39,948 so if I wanted to get the name of the student I could say student one dot name 6820 03:53:40,368 --> 03:53:40,938 and now 6821 03:53:40,969 --> 03:53:42,078 this is actually going to print 6822 03:53:42,108 --> 03:53:43,519 out the student's name. 6823 03:53:43,969 --> 03:53:45,108 so over here, 6824 03:53:45,259 --> 03:53:46,578 you'll see it prints out 6825 03:53:46,608 --> 03:53:47,059 jim 6826 03:53:47,389 --> 03:53:49,277 if I wanted I could print out the students 6827 03:53:49,308 --> 03:53:50,147 gps 6828 03:53:50,537 --> 03:53:52,367 and it's going to print out the students 6829 03:53:52,457 --> 03:53:53,147 gps 6830 03:53:53,178 --> 03:53:54,048 three point one. 6831 03:53:54,498 --> 03:53:56,237 so now that I created this 6832 03:53:56,268 --> 03:53:56,928 student 6833 03:53:56,958 --> 03:53:57,648 objects. 6834 03:53:57,979 --> 03:54:01,129 I can actually access the information about the student 6835 03:54:01,159 --> 03:54:03,710 so essentially I'm just created a student 6836 03:54:03,740 --> 03:54:04,460 data type 6837 03:54:04,490 --> 03:54:10,218 so I could create as many of these students as I wanted if I wanted I could create another student we could call it student too. 6838 03:54:11,388 --> 03:54:12,078 and 6839 03:54:12,229 --> 03:54:15,560 essentially we do the same thing we just give it different information so 6840 03:54:15,590 --> 03:54:16,521 we could say lake 6841 03:54:16,971 --> 03:54:17,661 pam 6842 03:54:17,841 --> 03:54:19,161 and her major is 6843 03:54:19,251 --> 03:54:19,731 art 6844 03:54:20,151 --> 03:54:21,591 and she has like a 6845 03:54:21,831 --> 03:54:23,121 two point five. 6846 03:54:23,481 --> 03:54:25,792 and let's say that she is on probation. 6847 03:54:26,362 --> 03:54:29,931 so now I have another student student too so if I wanted 6848 03:54:30,081 --> 03:54:34,703 I could access information about that student we could say like student to dodgy p a 6849 03:54:35,063 --> 03:54:36,114 and now this has given me 6850 03:54:36,145 --> 03:54:37,375 the dpj of 6851 03:54:37,435 --> 03:54:38,425 student too. 6852 03:54:38,755 --> 03:54:42,177 so basically what I did was I created a student data type 6853 03:54:42,267 --> 03:54:44,336 and I created student objects 6854 03:54:44,396 --> 03:54:46,677 and now I'm able to represent a student 6855 03:54:46,707 --> 03:54:47,967 inside of my program. 6856 03:54:48,327 --> 03:54:48,777 so 6857 03:54:48,808 --> 03:54:52,828 let's talk real quick about all this stuff over here because I didn't really explain it 6858 03:54:53,248 --> 03:54:55,139 basically what's happening is 6859 03:54:55,889 --> 03:54:58,139 when I come over here and I say student 6860 03:54:58,408 --> 03:55:01,019 and I'm passing in all of these different values. 6861 03:55:01,828 --> 03:55:03,838 those are getting passed into this 6862 03:55:03,868 --> 03:55:04,857 init function. 6863 03:55:05,098 --> 03:55:06,988 so remember I passed in a name 6864 03:55:07,019 --> 03:55:09,448 I passed in a major at passing a gps. 6865 03:55:09,658 --> 03:55:11,458 when we create that student 6866 03:55:11,548 --> 03:55:12,987 we're actually calling 6867 03:55:13,018 --> 03:55:14,098 this function. 6868 03:55:14,458 --> 03:55:16,019 and when I pass in the name 6869 03:55:16,049 --> 03:55:17,519 the major and the gps 6870 03:55:17,729 --> 03:55:21,329 those values are actually getting stored over here in this name. 6871 03:55:21,539 --> 03:55:23,309 this major this gps 6872 03:55:23,339 --> 03:55:24,089 et cetera, 6873 03:55:24,539 --> 03:55:24,869 right 6874 03:55:24,989 --> 03:55:25,409 so I'm 6875 03:55:25,439 --> 03:55:26,459 giving this 6876 03:55:26,489 --> 03:55:27,839 student object. 6877 03:55:28,199 --> 03:55:29,699 all of that information. 6878 03:55:29,939 --> 03:55:31,170 and down here. 6879 03:55:31,410 --> 03:55:32,371 what I'm doing 6880 03:55:32,431 --> 03:55:32,851 is I'm 6881 03:55:32,881 --> 03:55:33,601 saying 6882 03:55:33,721 --> 03:55:35,040 self dot name 6883 03:55:35,070 --> 03:55:35,911 as he put the name 6884 03:55:35,941 --> 03:55:37,291 and basically what this means is 6885 03:55:37,531 --> 03:55:39,571 the actual objects name 6886 03:55:39,901 --> 03:55:42,602 is going to be equal to the name that they passed in 6887 03:55:42,661 --> 03:55:45,271 so self dot name as an attribute 6888 03:55:45,421 --> 03:55:46,321 of student, 6889 03:55:46,472 --> 03:55:51,271 raises the student is storing a name the student is storing a major the student is storing and gps, 6890 03:55:51,780 --> 03:55:53,221 but that's different from 6891 03:55:53,251 --> 03:55:54,121 this name 6892 03:55:54,151 --> 03:55:56,161 this major in this gps 6893 03:55:56,521 --> 03:55:59,581 remember and these are all just values that I passed in 6894 03:55:59,911 --> 03:56:01,081 there just parameters. 6895 03:56:01,441 --> 03:56:04,232 so I need to take the values that I passed in 6896 03:56:04,532 --> 03:56:09,450 and I need to assign them to the actual attributes of the object so I need to say 6897 03:56:09,720 --> 03:56:10,290 ok. 6898 03:56:10,410 --> 03:56:14,249 the name of the student is going to be equal to the name that we passed in 6899 03:56:14,759 --> 03:56:15,420 one more time. 6900 03:56:15,660 --> 03:56:17,311 the name of the student 6901 03:56:17,341 --> 03:56:18,181 objects 6902 03:56:18,271 --> 03:56:19,740 is going to be equal to the name 6903 03:56:19,771 --> 03:56:20,820 that we passed in 6904 03:56:21,061 --> 03:56:23,370 the name of the student's major, 6905 03:56:23,580 --> 03:56:24,810 is going to be equal to 6906 03:56:24,840 --> 03:56:26,311 the major that we passed in 6907 03:56:26,700 --> 03:56:28,471 the student's gps 6908 03:56:28,980 --> 03:56:31,710 is going to be equal to the gps that we passed in. 6909 03:56:31,860 --> 03:56:34,739 that's basically what's happening here so when I say self 6910 03:56:35,039 --> 03:56:37,619 is referring to the actual object so 6911 03:56:37,889 --> 03:56:39,658 over here what I'm creating this 6912 03:56:39,688 --> 03:56:40,769 student object. 6913 03:56:41,099 --> 03:56:43,288 I'm giving it all of this information. 6914 03:56:43,438 --> 03:56:46,799 it's taking that information and storing it as attributes 6915 03:56:46,829 --> 03:56:47,310 for 6916 03:56:47,340 --> 03:56:48,149 the object. 6917 03:56:48,600 --> 03:56:49,050 so 6918 03:56:49,140 --> 03:56:52,708 hopefully that makes sense I think that's about as clear as I can make it but 6919 03:56:52,888 --> 03:56:55,168 the point is that now we have a student 6920 03:56:55,198 --> 03:56:55,888 data type. 6921 03:56:56,157 --> 03:56:58,587 so now I can represent a student 6922 03:56:58,977 --> 03:57:00,087 inside of my 6923 03:57:00,117 --> 03:57:00,867 python 6924 03:57:00,897 --> 03:57:01,378 program 6925 03:57:01,408 --> 03:57:03,028 and that's like a super powerful. 6926 03:57:03,509 --> 03:57:06,539 and what's cool about classes and objects as you can do this with anything. 6927 03:57:06,959 --> 03:57:12,270 so in this example we created a student class and then we created student objects off of that. 6928 03:57:12,479 --> 03:57:13,409 but I can model 6929 03:57:13,439 --> 03:57:14,970 any real world entity 6930 03:57:15,000 --> 03:57:17,820 into this program I can model something like a phone 6931 03:57:18,210 --> 03:57:19,410 or I can model like 6932 03:57:19,440 --> 03:57:20,311 a water bottle 6933 03:57:20,341 --> 03:57:21,211 or I can model 6934 03:57:21,241 --> 03:57:21,631 you know 6935 03:57:22,171 --> 03:57:22,921 a keyboard 6936 03:57:22,951 --> 03:57:25,200 or I can model anything that I wanted. 6937 03:57:25,470 --> 03:57:26,820 inside of my program 6938 03:57:26,910 --> 03:57:29,011 I can just give it certain attributes right 6939 03:57:29,131 --> 03:57:32,821 so that's what's cool about classes we can model real world objects. 6940 03:57:32,881 --> 03:57:34,682 and we can create our own 6941 03:57:34,712 --> 03:57:35,853 data types 6942 03:57:40,053 --> 03:57:41,644 in this tutorial I'm gonna show you guys 6943 03:57:41,674 --> 03:57:45,124 how to build a multiple choice quiz in python. 6944 03:57:45,604 --> 03:57:46,774 so basically we're gonna 6945 03:57:46,805 --> 03:57:51,843 set up a little multiple choice quizzes and we'll have the user take the quiz and as they take the quiz 6946 03:57:52,112 --> 03:57:55,895 will keep track of their score and then at the end will tell them how they did so 6947 03:57:56,164 --> 03:58:02,373 this is going to be a pretty cool video I'm excited to show you guys how to do this and we'll get to use things like classes and 6948 03:58:02,403 --> 03:58:03,363 if statements 6949 03:58:03,453 --> 03:58:04,293 and loops 6950 03:58:04,562 --> 03:58:07,172 in order to build these programs are we're going to use a lot of cool 6951 03:58:07,202 --> 03:58:08,433 stuff in python. 6952 03:58:08,973 --> 03:58:10,322 the first thing I want to show you guys 6953 03:58:10,562 --> 03:58:12,901 actually did this before I started the video it's 6954 03:58:12,932 --> 03:58:15,571 this little a ray is called question prompts. 6955 03:58:15,871 --> 03:58:19,589 and I basically just wrote out all the questions that are going to be. 6956 03:58:19,709 --> 03:58:23,038 or I should say the questions I wrote out all the question prompts 6957 03:58:23,248 --> 03:58:26,967 that are going to be inside of my multiple choice quiz so the first one just says 6958 03:58:27,267 --> 03:58:29,758 what color are apples and the answers are 6959 03:58:29,817 --> 03:58:30,447 red, 6960 03:58:30,867 --> 03:58:32,188 purple or orange. 6961 03:58:32,518 --> 03:58:33,447 and the next one is 6962 03:58:33,478 --> 03:58:35,577 what color of banana is the options are 6963 03:58:35,607 --> 03:58:37,528 teal magenta and yellow, 6964 03:58:38,158 --> 03:58:41,218 and the third question is what color are strawberries and the 6965 03:58:41,458 --> 03:58:46,796 options are yellow red and blue so this is obviously a very very easy multiple choice quiz but 6966 03:58:47,096 --> 03:58:47,667 I just kind of 6967 03:58:47,727 --> 03:58:51,085 wrote out the questions beforehand so I didn't have to spend time doing that. 6968 03:58:51,445 --> 03:58:53,306 so let's talk about how we can build 6969 03:58:53,336 --> 03:58:53,756 a 6970 03:58:53,786 --> 03:58:55,076 multiple choice 6971 03:58:55,106 --> 03:58:55,736 test. 6972 03:58:56,066 --> 03:58:56,456 well. 6973 03:58:56,636 --> 03:59:00,325 the first thing I want to think about is how can I represent the questions in the test 6974 03:59:00,595 --> 03:59:01,045 right 6975 03:59:01,135 --> 03:59:03,385 over here we have the question prompts. 6976 03:59:03,595 --> 03:59:06,896 but there's actually two parts to a question when you think about it, 6977 03:59:07,136 --> 03:59:09,057 there's the prompts in other words like 6978 03:59:09,116 --> 03:59:09,597 the 6979 03:59:09,687 --> 03:59:11,157 actual question itself. 6980 03:59:11,607 --> 03:59:16,258 and then there's the answer to the question in both of those attributes needs to be 6981 03:59:16,317 --> 03:59:16,977 kept track of 6982 03:59:17,007 --> 03:59:17,247 right 6983 03:59:17,277 --> 03:59:21,414 I need to keep track of what we want to ask and I need a cap to keep track of what the answer is. 6984 03:59:21,774 --> 03:59:23,664 so what I'm actually going to do is create 6985 03:59:23,694 --> 03:59:24,055 a 6986 03:59:24,085 --> 03:59:25,436 question class 6987 03:59:25,466 --> 03:59:28,556 so I'm gonna create a little data type for questions 6988 03:59:28,976 --> 03:59:31,706 and inside of that question class will be able to store 6989 03:59:31,736 --> 03:59:33,057 the question prompts, 6990 03:59:33,297 --> 03:59:35,757 and will also be able to store the question's 6991 03:59:35,787 --> 03:59:36,387 answer, 6992 03:59:36,776 --> 03:59:40,706 so I'm just gonna come over here to my folder and I'm going to make a new 6993 03:59:40,886 --> 03:59:42,056 python file 6994 03:59:42,086 --> 03:59:43,676 and we're just going to call this 6995 03:59:43,706 --> 03:59:44,486 question 6996 03:59:44,517 --> 03:59:45,057 dot 6997 03:59:45,087 --> 03:59:47,066 p y so we'll call a question up high 6998 03:59:48,086 --> 03:59:53,064 and inside of this question dot pi file I'm going to make a class so I'm just gonna say class 6999 03:59:53,095 --> 03:59:53,904 question. 7000 03:59:54,234 --> 03:59:55,073 and I'm going to put a 7001 03:59:55,104 --> 03:59:55,974 colon here. 7002 03:59:56,363 --> 03:59:57,653 so inside of this 7003 03:59:57,684 --> 04:00:00,323 question class we want to define it and initialize 7004 04:00:00,623 --> 04:00:01,403 function so 7005 04:00:01,764 --> 04:00:02,694 I must say deaf 7006 04:00:03,024 --> 04:00:04,014 to underscores 7007 04:00:04,044 --> 04:00:04,584 in it 7008 04:00:04,644 --> 04:00:05,783 too underscores, 7009 04:00:06,173 --> 04:00:06,803 and 7010 04:00:06,923 --> 04:00:08,151 then we're going to type out an 7011 04:00:08,182 --> 04:00:09,472 opening close parentheses 7012 04:00:09,502 --> 04:00:10,222 self 7013 04:00:10,252 --> 04:00:11,241 and that a colon. 7014 04:00:11,781 --> 04:00:15,471 so after this self we wanted to find the different attributes 7015 04:00:15,501 --> 04:00:17,571 that will describe or that will 7016 04:00:17,602 --> 04:00:19,461 be included in a question so 7017 04:00:20,091 --> 04:00:21,532 we're going to include a 7018 04:00:21,562 --> 04:00:22,282 prompt 7019 04:00:22,312 --> 04:00:26,273 everyone to include an answer so every question we'll have a question prompt 7020 04:00:26,604 --> 04:00:28,013 and a question answer 7021 04:00:28,253 --> 04:00:31,881 now down here I'm going to take those values and assign them 7022 04:00:31,911 --> 04:00:32,481 to 7023 04:00:32,512 --> 04:00:33,321 the actual 7024 04:00:33,352 --> 04:00:35,782 class objects only to say self 7025 04:00:35,812 --> 04:00:36,322 dot 7026 04:00:36,473 --> 04:00:37,072 prompt 7027 04:00:37,492 --> 04:00:38,632 is either the prompt. 7028 04:00:39,172 --> 04:00:40,763 and I must say self dot 7029 04:00:40,942 --> 04:00:42,683 answer is equal to answer. 7030 04:00:42,982 --> 04:00:47,542 so now we have a question class set up and we can store all the information we need 7031 04:00:47,962 --> 04:00:49,372 about a question. 7032 04:00:49,882 --> 04:00:53,812 so what I want to do now is go back over to my app dot python file, 7033 04:00:54,411 --> 04:00:57,082 and we're actually going to create an array of questions. 7034 04:00:57,322 --> 04:01:00,142 so I have over here these three prompts, 7035 04:01:00,472 --> 04:01:03,232 and I'm actually just going to create another array so we'll just call it 7036 04:01:03,742 --> 04:01:04,672 questions. 7037 04:01:05,062 --> 04:01:06,950 and I'm going to set it equal to 7038 04:01:07,580 --> 04:01:09,171 to open or closed square brackets 7039 04:01:09,471 --> 04:01:11,210 and we're gonna start creating question 7040 04:01:11,240 --> 04:01:12,830 objects so I can just say 7041 04:01:13,130 --> 04:01:15,561 the first element in this questions ray will be a 7042 04:01:16,190 --> 04:01:16,940 question, 7043 04:01:17,421 --> 04:01:18,831 and we want to pass 7044 04:01:19,971 --> 04:01:21,351 questioned prompts 7045 04:01:22,221 --> 04:01:22,971 zero. 7046 04:01:23,121 --> 04:01:26,031 and the answer to the first question was 7047 04:01:26,361 --> 04:01:26,751 a 7048 04:01:26,781 --> 04:01:29,389 red green and that's the color of apple so I'm gonna pass 7049 04:01:29,599 --> 04:01:30,859 that first question. 7050 04:01:30,919 --> 04:01:32,689 and I'm also going to pass 7051 04:01:32,749 --> 04:01:34,039 the answer which is a, 7052 04:01:34,339 --> 04:01:36,468 and you see down here I'm getting an error so 7053 04:01:36,647 --> 04:01:37,667 seeing unresolved 7054 04:01:37,697 --> 04:01:38,357 references 7055 04:01:38,388 --> 04:01:39,107 question 7056 04:01:39,438 --> 04:01:41,657 so actually what we need to do before we can 7057 04:01:41,777 --> 04:01:46,098 create these questions is we need to import this question class on mckillop been here 7058 04:01:46,128 --> 04:01:47,059 come up here and say 7059 04:01:47,358 --> 04:01:47,898 from 7060 04:01:48,078 --> 04:01:48,918 question 7061 04:01:49,728 --> 04:01:50,508 import 7062 04:01:50,988 --> 04:01:51,648 question 7063 04:01:52,698 --> 04:01:53,358 so now 7064 04:01:53,389 --> 04:01:55,278 down here in this questions array we're 7065 04:01:55,309 --> 04:01:58,638 not getting that hair anymore so we created one question objects. 7066 04:01:59,088 --> 04:02:00,198 and I'm just going to 7067 04:02:00,229 --> 04:02:01,699 create a couple more for 7068 04:02:01,729 --> 04:02:02,659 these other ones 7069 04:02:02,689 --> 04:02:03,289 so 7070 04:02:04,009 --> 04:02:05,269 I'm just going to copy this one 7071 04:02:05,299 --> 04:02:05,929 and 7072 04:02:05,988 --> 04:02:08,029 we will pace this down here, 7073 04:02:10,640 --> 04:02:11,899 or it's an hour creating 7074 04:02:11,930 --> 04:02:14,391 two other questions in these ones are going to be 7075 04:02:14,480 --> 04:02:16,010 one and two. 7076 04:02:16,310 --> 04:02:18,799 and the answer to the second question is 7077 04:02:18,829 --> 04:02:19,639 c. 7078 04:02:20,119 --> 04:02:22,850 and the answer to the third question I think is that the 7079 04:02:23,149 --> 04:02:23,629 new york 7080 04:02:25,309 --> 04:02:25,608 yeah 7081 04:02:25,639 --> 04:02:26,119 so it's 7082 04:02:26,149 --> 04:02:26,779 cmb. 7083 04:02:27,319 --> 04:02:29,479 so essentially what we're doing is we're creating 7084 04:02:29,510 --> 04:02:30,830 three questions. 7085 04:02:30,890 --> 04:02:32,929 each one is getting a different question prompts, 7086 04:02:33,139 --> 04:02:38,147 and they're each getting different answers so now we have an array of questions that we want to ask 7087 04:02:38,447 --> 04:02:39,438 on our test. 7088 04:02:39,798 --> 04:02:44,266 so the next step is to actually write a function that will run the test right 7089 04:02:44,355 --> 04:02:47,566 it has to ask these are the questions and it has to check to see 7090 04:02:47,746 --> 04:02:49,306 if they got the answer right so 7091 04:02:49,636 --> 04:02:50,386 down here 7092 04:02:50,416 --> 04:02:51,285 lower in the file 7093 04:02:51,315 --> 04:02:52,635 let's create a function. 7094 04:02:53,115 --> 04:02:53,926 so I'm just going to say 7095 04:02:53,956 --> 04:02:54,437 death. 7096 04:02:54,706 --> 04:02:55,937 we'll call this run 7097 04:02:55,967 --> 04:02:56,657 test 7098 04:02:57,228 --> 04:02:57,708 and 7099 04:02:57,738 --> 04:02:59,178 inside of his prentices 7100 04:02:59,237 --> 04:03:02,057 were going to take one parameter into this function. 7101 04:03:02,297 --> 04:03:02,896 we're going to take 7102 04:03:02,927 --> 04:03:04,968 a list of questions so 7103 04:03:05,027 --> 04:03:06,527 I'm just going to say questions. 7104 04:03:07,188 --> 04:03:09,018 so this is basically going to be a list 7105 04:03:09,048 --> 04:03:11,928 of question objects that we want to ask the user. 7106 04:03:12,348 --> 04:03:13,518 so once I've been here 7107 04:03:13,548 --> 04:03:14,956 all I want to do is a loop 7108 04:03:14,986 --> 04:03:16,786 through all the questions so 7109 04:03:16,966 --> 04:03:18,496 I want to loop through each question 7110 04:03:18,526 --> 04:03:20,206 I want to ask it to the user. 7111 04:03:20,356 --> 04:03:23,566 I want to get the user's answer and I want to check to see if it's right, 7112 04:03:24,047 --> 04:03:30,465 and we need to be able to keep track of how the user does through the test so I'm gonna create a variable called score 7113 04:03:30,885 --> 04:03:32,594 and I'm going to set it equal to zero, 7114 04:03:32,894 --> 04:03:36,193 so every time the user answers a question right will increment this 7115 04:03:36,224 --> 04:03:37,124 score 7116 04:03:37,184 --> 04:03:37,903 variable 7117 04:03:38,474 --> 04:03:44,172 right so what I want to do is like I said loop through all the questions in that questions array so I'm going to create a for loop 7118 04:03:44,202 --> 04:03:45,312 I'm going to say for 7119 04:03:45,941 --> 04:03:46,842 question 7120 04:03:47,052 --> 04:03:47,651 in 7121 04:03:48,342 --> 04:03:49,212 questions. 7122 04:03:50,052 --> 04:03:52,513 so in other words for each question object 7123 04:03:52,843 --> 04:03:54,644 inside of this questions array. 7124 04:03:54,703 --> 04:03:55,663 I want to do something. 7125 04:03:56,533 --> 04:03:57,073 and 7126 04:03:57,104 --> 04:04:00,283 basically the first thing I want to do is ask the user the question 7127 04:04:00,823 --> 04:04:03,792 and I want to store their response inside of a variable. 7128 04:04:04,092 --> 04:04:05,052 so I'm going to say 7129 04:04:05,082 --> 04:04:06,853 I wanna make a variable down here called 7130 04:04:07,122 --> 04:04:07,812 answer. 7131 04:04:08,412 --> 04:04:10,423 and this is going to represent the 7132 04:04:10,453 --> 04:04:12,163 user's answer to the question. 7133 04:04:12,223 --> 04:04:12,793 and I'm gonna 7134 04:04:12,853 --> 04:04:13,183 set it 7135 04:04:13,213 --> 04:04:13,902 equal to 7136 04:04:14,263 --> 04:04:14,982 input 7137 04:04:15,822 --> 04:04:17,472 and I need to give this a prompt 7138 04:04:17,502 --> 04:04:18,162 so 7139 04:04:18,222 --> 04:04:21,792 I'm actually going to give this the prompt for the questions I can just say 7140 04:04:22,122 --> 04:04:23,262 questioned dot 7141 04:04:23,321 --> 04:04:24,071 prompt. 7142 04:04:24,131 --> 04:04:25,361 so now I have 7143 04:04:25,722 --> 04:04:29,109 the answer that the user entered in which is stored inside this variable. 7144 04:04:29,649 --> 04:04:32,019 so we want to check to see if they got the question right. 7145 04:04:32,229 --> 04:04:33,369 and I can do that using an 7146 04:04:33,399 --> 04:04:34,568 if statement so I can say 7147 04:04:34,599 --> 04:04:35,079 if 7148 04:04:35,739 --> 04:04:36,399 answer 7149 04:04:36,669 --> 04:04:38,680 and this refers to the student's answer 7150 04:04:39,460 --> 04:04:40,511 is equal to 7151 04:04:40,961 --> 04:04:42,012 question dot 7152 04:04:42,042 --> 04:04:42,612 answer 7153 04:04:42,882 --> 04:04:44,951 so I'm checking to see if the answer that the student 7154 04:04:44,981 --> 04:04:45,401 gave 7155 04:04:45,461 --> 04:04:48,222 as equal to the answer of the current question 7156 04:04:48,252 --> 04:04:48,792 that we're 7157 04:04:48,882 --> 04:04:49,452 asking. 7158 04:04:49,842 --> 04:04:51,222 and if this is true, 7159 04:04:51,312 --> 04:04:52,421 then I just want to 7160 04:04:52,451 --> 04:04:54,822 increment score so I'm going to say score 7161 04:04:55,362 --> 04:04:55,782 plus 7162 04:04:55,812 --> 04:04:58,572 equals one and this basically just means we're adding one 7163 04:04:58,603 --> 04:04:59,442 to the score. 7164 04:04:59,952 --> 04:05:02,893 so the last thing I want to do inside of this function is just 7165 04:05:02,923 --> 04:05:03,673 print out 7166 04:05:03,732 --> 04:05:06,073 the results I want to print out how the user did 7167 04:05:06,854 --> 04:05:08,264 so down here I'm just going to say, 7168 04:05:08,414 --> 04:05:08,834 print 7169 04:05:08,864 --> 04:05:11,174 and I'm basically just going up are not like hey you got like 7170 04:05:11,204 --> 04:05:14,623 two out of three questions are you got five out of six questions right 7171 04:05:14,803 --> 04:05:16,933 or you got zero out of ten questions right well 7172 04:05:16,992 --> 04:05:18,463 what does per not how they did so 7173 04:05:18,793 --> 04:05:20,354 to say to you got. 7174 04:05:21,163 --> 04:05:24,253 and now I want to print out how many questions they got right 7175 04:05:24,283 --> 04:05:25,933 so this is just going to be this score. 7176 04:05:26,263 --> 04:05:27,223 and in order to print 7177 04:05:27,253 --> 04:05:31,542 a number alongside of a string like this I'm going to have to say s t r, 7178 04:05:31,722 --> 04:05:33,581 and then type in the number so say 7179 04:05:33,641 --> 04:05:34,750 str score 7180 04:05:35,320 --> 04:05:36,850 so basically say you got 7181 04:05:36,939 --> 04:05:38,289 however many they got right 7182 04:05:38,649 --> 04:05:40,389 out of so we use this little 7183 04:05:40,419 --> 04:05:41,350 forward slash. 7184 04:05:41,770 --> 04:05:42,310 and 7185 04:05:43,210 --> 04:05:44,141 now we'll just say 7186 04:05:44,171 --> 04:05:46,512 how many questions there were so we can say. 7187 04:05:46,752 --> 04:05:50,951 and then I'm going to have to convert this to a string because it's going to be in numbers we can say string 7188 04:05:51,551 --> 04:05:55,271 and then want to figure out how many questions were in that questions array so I can say. 7189 04:05:55,331 --> 04:05:56,111 ellie ann 7190 04:05:56,472 --> 04:05:57,881 and inside of here we can just say 7191 04:05:57,911 --> 04:05:58,511 questions 7192 04:05:58,541 --> 04:05:59,531 so this is kind of like 7193 04:05:59,591 --> 04:05:59,951 this 7194 04:05:59,981 --> 04:06:02,831 long state and just to turn out how many questions that were 7195 04:06:02,951 --> 04:06:04,271 so that over here to say 7196 04:06:04,871 --> 04:06:05,591 correct. 7197 04:06:06,581 --> 04:06:08,620 so now we have this print statement. 7198 04:06:09,010 --> 04:06:12,398 and it's just going to be printing out how many questions they got right. 7199 04:06:13,208 --> 04:06:14,197 so let's see if 7200 04:06:14,467 --> 04:06:17,286 this works the last thing I need to do is just call this 7201 04:06:17,316 --> 04:06:19,297 run test function so I'll say 7202 04:06:19,687 --> 04:06:20,677 run tests. 7203 04:06:20,736 --> 04:06:22,327 and I'm just going to pass it that 7204 04:06:22,447 --> 04:06:24,848 questions are ready to be created before so 7205 04:06:25,208 --> 04:06:28,058 we created this questions array with all of these question 7206 04:06:28,088 --> 04:06:29,467 objects inside of it. 7207 04:06:30,187 --> 04:06:33,155 I'm basically just going to pass that into this run test 7208 04:06:33,186 --> 04:06:33,726 function. 7209 04:06:34,266 --> 04:06:35,976 so now let's run our program and 7210 04:06:36,006 --> 04:06:37,386 see how we didn't hopefully 7211 04:06:37,416 --> 04:06:38,676 we don't getting errors. 7212 04:06:39,006 --> 04:06:40,444 there's a lot of code there so 7213 04:06:40,714 --> 04:06:41,944 it's possible that we might. 7214 04:06:42,814 --> 04:06:46,353 okay so this is what color are apples has a tough one I once put 7215 04:06:46,383 --> 04:06:46,772 a. 7216 04:06:46,832 --> 04:06:48,302 so we'll get the first question right ? 7217 04:06:48,691 --> 04:06:49,921 what color are bananas. 7218 04:06:49,980 --> 04:06:51,690 let's get the second question wrong 7219 04:06:51,721 --> 04:06:52,529 so I'm going to say 7220 04:06:52,680 --> 04:06:54,539 be bananas aren't magenta 7221 04:06:55,199 --> 04:06:58,829 and we'll get the third question right so it says what color are strawberries 7222 04:06:58,859 --> 04:07:00,930 output be cassettes the right answer, 7223 04:07:01,470 --> 04:07:02,130 so now 7224 04:07:02,189 --> 04:07:04,109 you'll see that our program prints out 7225 04:07:04,140 --> 04:07:06,300 you've got two out of three correct. 7226 04:07:06,689 --> 04:07:10,740 so not only did to ask us all the questions and get our input for each question 7227 04:07:10,771 --> 04:07:12,361 but it also kept track of 7228 04:07:12,451 --> 04:07:14,491 our score and it printed it out so 7229 04:07:14,852 --> 04:07:16,682 why don't we run through the tasks one more time. 7230 04:07:17,132 --> 04:07:17,672 and 7231 04:07:17,702 --> 04:07:18,392 we'll just like 7232 04:07:18,872 --> 04:07:23,464 get two wrong this time so we'll get this one wrong I'll get this one wrong and I get this one right. 7233 04:07:23,974 --> 04:07:24,694 so now it says 7234 04:07:24,725 --> 04:07:26,826 you got one out of three correct so 7235 04:07:26,946 --> 04:07:28,627 say would actually great our test. 7236 04:07:28,687 --> 04:07:29,076 and 7237 04:07:29,166 --> 04:07:31,535 what's cool about the program we just wrote is 7238 04:07:32,016 --> 04:07:35,075 if I wanted I could add another question into here 7239 04:07:35,436 --> 04:07:35,796 and it would 7240 04:07:35,826 --> 04:07:40,205 automatically be able to ask it so it doesn't matter how many questions we put in here 7241 04:07:41,015 --> 04:07:42,035 it's just able to ask 7242 04:07:42,065 --> 04:07:42,485 so 7243 04:07:42,995 --> 04:07:48,365 really the point I was trying to make with this whole video was just how we can use something like a class 7244 04:07:48,605 --> 04:07:49,415 in order to 7245 04:07:49,445 --> 04:07:51,096 model a real world 7246 04:07:51,155 --> 04:07:51,755 entity. 7247 04:07:52,055 --> 04:07:53,075 so for example 7248 04:07:53,105 --> 04:07:55,505 we created this question class. 7249 04:07:55,715 --> 04:07:58,356 and we were able to store all the information 7250 04:07:58,416 --> 04:08:02,497 about a question that we could ever needs were ill bizarrely the prompts and the answer, 7251 04:08:02,947 --> 04:08:04,928 so we created our own question 7252 04:08:04,958 --> 04:08:05,678 data type 7253 04:08:05,708 --> 04:08:08,408 and then we were able to create a bunch of different questions, 7254 04:08:08,678 --> 04:08:10,717 pass it into this ron test method, 7255 04:08:10,837 --> 04:08:14,076 and it was able to grade the test and just run the test 7256 04:08:14,106 --> 04:08:16,026 really easily so that's kind of the point. 7257 04:08:16,626 --> 04:08:17,916 so hopefully this makes sense. 7258 04:08:18,186 --> 04:08:19,686 you know this was a lot of code 7259 04:08:19,716 --> 04:08:23,885 so if you don't fully understand what I did go back watch the video you know, 7260 04:08:23,944 --> 04:08:28,083 try to cobble times on your own and see if you can create your own multiple choice test 7261 04:08:31,863 --> 04:08:33,934 in this tutorial on talks you guys about 7262 04:08:33,964 --> 04:08:35,674 class functions 7263 04:08:35,704 --> 04:08:36,274 in 7264 04:08:36,334 --> 04:08:37,264 python so 7265 04:08:37,504 --> 04:08:40,864 a class function is essentially a function that we can use 7266 04:08:40,895 --> 04:08:42,663 inside of a class and it can 7267 04:08:42,693 --> 04:08:45,934 either modify the objects of that class where it can 7268 04:08:46,203 --> 04:08:48,753 give a specific information about those objects. 7269 04:08:48,812 --> 04:08:52,082 over here I have this student dot pi file 7270 04:08:52,562 --> 04:08:52,982 and 7271 04:08:53,042 --> 04:08:57,030 inside of here I created a student class I was headed class student 7272 04:08:57,391 --> 04:08:58,380 and I gave this student 7273 04:08:58,410 --> 04:09:00,839 a couple of different attributes I gave it a name, 7274 04:09:01,229 --> 04:09:03,208 a major and a gps 7275 04:09:03,238 --> 04:09:04,708 so I can give this student. 7276 04:09:04,768 --> 04:09:07,467 all of this information so when I create a student objects. 7277 04:09:07,856 --> 04:09:08,456 it'll have 7278 04:09:08,516 --> 04:09:09,745 all of that information 7279 04:09:09,775 --> 04:09:10,135 in it. 7280 04:09:10,585 --> 04:09:11,724 now over here on this 7281 04:09:11,754 --> 04:09:15,083 app dot pi file it actually created to students 7282 04:09:15,113 --> 04:09:15,684 so 7283 04:09:15,983 --> 04:09:17,483 student one is 7284 04:09:17,753 --> 04:09:21,263 oscar who was studying accounting and has a gps unit three point one 7285 04:09:21,652 --> 04:09:24,473 student to as phyllis who's studying business 7286 04:09:24,503 --> 04:09:25,822 and she has a three point 7287 04:09:25,882 --> 04:09:26,212 e. 7288 04:09:26,902 --> 04:09:27,442 so 7289 04:09:27,532 --> 04:09:29,573 what we can actually do is we can 7290 04:09:29,693 --> 04:09:35,094 use functions inside of these class files so I can actually define a function 7291 04:09:35,514 --> 04:09:38,604 instead of this student class and then all of my 7292 04:09:38,635 --> 04:09:40,495 student objects could access it. 7293 04:09:40,555 --> 04:09:41,515 so for example, 7294 04:09:41,604 --> 04:09:44,124 I can come down here and create a function and 7295 04:09:44,814 --> 04:09:46,613 let's say we wanted to create a function 7296 04:09:46,644 --> 04:09:47,153 that 7297 04:09:47,184 --> 04:09:49,582 told us whether or not this particular student 7298 04:09:49,642 --> 04:09:50,782 had honours 7299 04:09:50,812 --> 04:09:52,853 so whether or not they were on the honor roll right 7300 04:09:53,093 --> 04:09:53,872 basically like, 7301 04:09:54,022 --> 04:09:55,643 are they like a really good student 7302 04:09:56,333 --> 04:09:57,893 so I can define a function 7303 04:09:58,192 --> 04:09:58,763 call 7304 04:09:58,883 --> 04:09:59,423 on 7305 04:10:00,113 --> 04:10:00,953 honor roll 7306 04:10:01,673 --> 04:10:02,243 and 7307 04:10:02,273 --> 04:10:04,104 basically what it's going to do, 7308 04:10:04,254 --> 04:10:07,764 it's going to tell me whether or not this particular student is on 7309 04:10:07,823 --> 04:10:08,633 the honourable 7310 04:10:09,232 --> 04:10:09,622 and 7311 04:10:09,652 --> 04:10:13,490 let's basically just say the rules are being on honor roll is you have to have a 7312 04:10:13,521 --> 04:10:14,330 gps iif 7313 04:10:14,360 --> 04:10:16,040 three point five or above. 7314 04:10:16,340 --> 04:10:19,819 so here gps three point five or above that means you're on the honor roll 7315 04:10:20,300 --> 04:10:20,689 well 7316 04:10:20,720 --> 04:10:22,550 over here I could actually 7317 04:10:22,609 --> 04:10:24,198 write the code for that so I could say 7318 04:10:24,229 --> 04:10:24,709 if 7319 04:10:25,609 --> 04:10:27,350 self dot gps. 7320 04:10:27,830 --> 04:10:29,450 and when I say self over here 7321 04:10:29,601 --> 04:10:31,041 this is referring to like 7322 04:10:31,101 --> 04:10:33,050 the actual students gps 7323 04:10:33,500 --> 04:10:33,860 and you'll 7324 04:10:33,920 --> 04:10:36,229 notice over here I have to pass that in 7325 04:10:36,770 --> 04:10:37,729 as a parameter. 7326 04:10:37,789 --> 04:10:40,490 and that always has to be the first parameter so I could say if 7327 04:10:40,730 --> 04:10:42,262 self dot j e p a 7328 04:10:42,622 --> 04:10:43,432 is greater than or 7329 04:10:43,462 --> 04:10:44,271 equal to 7330 04:10:44,781 --> 04:10:46,011 the read point five. 7331 04:10:46,701 --> 04:10:48,322 then we can return 7332 04:10:48,592 --> 04:10:49,191 true 7333 04:10:49,791 --> 04:10:50,812 because this student 7334 04:10:50,842 --> 04:10:52,281 is on the honor roll 7335 04:10:53,182 --> 04:10:54,292 otherwise 7336 04:10:54,382 --> 04:10:55,161 an else 7337 04:10:55,371 --> 04:10:56,660 we can just return 7338 04:10:57,950 --> 04:10:59,271 false because 7339 04:10:59,330 --> 04:10:59,961 if their gps 7340 04:10:59,991 --> 04:11:01,642 isn't above a three point five that 7341 04:11:01,672 --> 04:11:02,542 they're not on 7342 04:11:02,602 --> 04:11:03,441 the honor roll. 7343 04:11:03,892 --> 04:11:04,372 so 7344 04:11:04,402 --> 04:11:08,752 that's essentially our little on honorable function and you can see it's a very small function, 7345 04:11:08,992 --> 04:11:10,013 but it provides 7346 04:11:10,043 --> 04:11:13,072 a service to the objects of this class right 7347 04:11:13,103 --> 04:11:13,763 it allows 7348 04:11:13,793 --> 04:11:15,263 the objects of this class to 7349 04:11:15,652 --> 04:11:19,133 figure out whether or not that current student is on the honor roll so 7350 04:11:19,853 --> 04:11:22,042 over in this app dot pi file. 7351 04:11:22,882 --> 04:11:24,142 I could just print 7352 04:11:24,292 --> 04:11:25,701 out that values so I could say 7353 04:11:25,731 --> 04:11:26,182 print 7354 04:11:26,812 --> 04:11:28,102 and I'm gonna see if 7355 04:11:28,672 --> 04:11:29,992 student one 7356 04:11:30,562 --> 04:11:32,063 is on the honor roll. 7357 04:11:32,813 --> 04:11:33,563 so 7358 04:11:33,983 --> 04:11:37,103 now when I run this you'll see it should print out false 7359 04:11:37,312 --> 04:11:38,633 and is putting out false 7360 04:11:38,663 --> 04:11:39,533 down here 7361 04:11:39,713 --> 04:11:41,993 because student one only has a gps 7362 04:11:42,023 --> 04:11:42,354 of 7363 04:11:42,413 --> 04:11:43,584 three point one. 7364 04:11:43,944 --> 04:11:46,254 if I was to do the same thing on student to 7365 04:11:46,884 --> 04:11:48,683 students who has a gdp of three point 7366 04:11:48,713 --> 04:11:49,013 eight 7367 04:11:49,043 --> 04:11:50,902 so we should return true. 7368 04:11:51,232 --> 04:11:53,332 and that's exactly what happens so 7369 04:11:53,662 --> 04:11:54,742 essentially a 7370 04:11:54,772 --> 04:12:01,763 class function is just a little function that can be used by the objects of the class and I would say this is a pretty good example of 7371 04:12:02,183 --> 04:12:04,043 what a class function should be doing 7372 04:12:04,312 --> 04:12:09,979 should be like giving us information about the class or it could also be like modifying information about the class. 7373 04:12:10,038 --> 04:12:14,387 and so that's the basics of using functions and classes I mean this is a pretty simple tutorial but 7374 04:12:14,627 --> 04:12:17,476 I really just wanted to introduce you guys to the concept 7375 04:12:17,506 --> 04:12:17,896 of 7376 04:12:18,165 --> 04:12:18,765 pudding 7377 04:12:18,795 --> 04:12:19,875 met functions 7378 04:12:19,935 --> 04:12:22,604 inside of classes this is going to be really useful and 7379 04:12:23,023 --> 04:12:27,523 if you're making a class you always wanna think about like what functions can I put inside of here 7380 04:12:27,793 --> 04:12:28,394 that will 7381 04:12:28,424 --> 04:12:29,594 you know essentially 7382 04:12:29,624 --> 04:12:32,834 healthy user to either figure out information about the object 7383 04:12:33,284 --> 04:12:33,914 or 7384 04:12:33,974 --> 04:12:36,734 modify different values in the objects 7385 04:12:40,544 --> 04:12:43,215 in this tutorial on antarctic guys about inheritance 7386 04:12:43,245 --> 04:12:43,515 in 7387 04:12:43,545 --> 04:12:44,175 python. 7388 04:12:44,685 --> 04:12:49,965 inheritance is basically where we can define a bunch of attributes and functions 7389 04:12:50,234 --> 04:12:51,854 and things inside of a class, 7390 04:12:52,095 --> 04:12:55,905 and then we can create another class and we can inherit all of those 7391 04:12:55,965 --> 04:12:56,715 attributes. 7392 04:12:57,015 --> 04:12:58,215 so I could basically 7393 04:12:58,245 --> 04:12:59,805 have one class that has 7394 04:12:59,835 --> 04:13:01,996 all the functionality of another class 7395 04:13:02,356 --> 04:13:05,296 without having to physically write out any of the same 7396 04:13:05,326 --> 04:13:07,066 methods or attributes. 7397 04:13:07,336 --> 04:13:09,346 so it that's confusing don't worry I'm 7398 04:13:09,405 --> 04:13:11,085 sure you guys exactly what this is 7399 04:13:11,385 --> 04:13:12,555 in this video so 7400 04:13:13,154 --> 04:13:15,493 let me show you about some stop I have set up over here. 7401 04:13:15,854 --> 04:13:17,654 I created this class 7402 04:13:17,685 --> 04:13:18,404 called 7403 04:13:18,555 --> 04:13:19,335 chef 7404 04:13:19,815 --> 04:13:21,556 and over here we just have this class chef. 7405 04:13:21,976 --> 04:13:25,034 and inside of this chef class we have three functions 7406 04:13:25,064 --> 04:13:26,924 so the shaft can do three things. 7407 04:13:27,313 --> 04:13:28,093 the chef can 7408 04:13:28,123 --> 04:13:28,423 make 7409 04:13:28,453 --> 04:13:29,023 chicken. 7410 04:13:29,653 --> 04:13:30,584 the chef can 7411 04:13:30,614 --> 04:13:31,574 make solid 7412 04:13:31,844 --> 04:13:32,983 and the chef can make 7413 04:13:33,014 --> 04:13:34,063 a special dish. 7414 04:13:34,363 --> 04:13:36,224 and whatever the chef makes a dish 7415 04:13:36,254 --> 04:13:37,604 he basically just says 7416 04:13:37,874 --> 04:13:40,424 the chef makes a chick in order the chef makes 7417 04:13:40,454 --> 04:13:41,264 a salad 7418 04:13:41,684 --> 04:13:44,714 or the chef makes barbecue ribs for this special dish. 7419 04:13:44,983 --> 04:13:46,273 so basically just 7420 04:13:46,333 --> 04:13:48,643 saying whatever the chef is doing so 7421 04:13:48,883 --> 04:13:51,462 if I was to come over here to my app dot python file, 7422 04:13:51,731 --> 04:13:53,622 you'll notice that I'm importing the 7423 04:13:53,742 --> 04:13:54,252 chef 7424 04:13:54,282 --> 04:13:55,512 so I'm basically 7425 04:13:55,872 --> 04:13:57,823 allowed to use this chef class now, 7426 04:13:58,333 --> 04:13:59,412 and I can say 7427 04:13:59,442 --> 04:14:02,352 my chef is equal to shafts I'm creating a new chef. 7428 04:14:02,682 --> 04:14:05,412 so now if I came down here and I send my 7429 04:14:05,472 --> 04:14:06,162 chef 7430 04:14:06,192 --> 04:14:06,853 dot 7431 04:14:07,122 --> 04:14:07,422 make 7432 04:14:07,452 --> 04:14:07,962 chicken, 7433 04:14:09,672 --> 04:14:11,171 when I run my program. 7434 04:14:11,230 --> 04:14:12,430 now it's going to say, 7435 04:14:13,420 --> 04:14:14,709 the chef makes a chicken. 7436 04:14:14,979 --> 04:14:15,788 if I said 7437 04:14:15,818 --> 04:14:16,599 make 7438 04:14:18,129 --> 04:14:19,479 special dish 7439 04:14:20,078 --> 04:14:21,157 and are on the program. 7440 04:14:21,337 --> 04:14:25,116 now it's going to say the chef makes barbecue ribs so it because that's the chef's 7441 04:14:25,146 --> 04:14:26,076 special dish. 7442 04:14:26,316 --> 04:14:29,285 so I have this really awesome chef class and it works really well. 7443 04:14:29,915 --> 04:14:32,826 but let's say that I wanted to create another class 7444 04:14:32,856 --> 04:14:35,257 to model another type of chef 7445 04:14:35,646 --> 04:14:36,275 rise to this 7446 04:14:36,335 --> 04:14:39,455 chef class is just modelling like some generic schafroff 7447 04:14:39,485 --> 04:14:41,196 we're representing some generic chef 7448 04:14:41,526 --> 04:14:42,307 in our program, 7449 04:14:42,787 --> 04:14:44,617 but let's say that I wanted to create 7450 04:14:44,647 --> 04:14:45,277 a 7451 04:14:45,457 --> 04:14:47,828 class that modeled the different type of chef 7452 04:14:47,858 --> 04:14:48,579 for example, 7453 04:14:48,879 --> 04:14:51,908 let's say we wanted to create a class that modeled a chinese chef. 7454 04:14:51,968 --> 04:14:53,978 so instead of just a normal chef this is a 7455 04:14:54,008 --> 04:14:54,998 chinese chef, 7456 04:14:55,479 --> 04:14:57,908 well I actually created a file over here called 7457 04:14:57,938 --> 04:14:59,648 chinese chef dot python. 7458 04:14:59,948 --> 04:15:02,138 so we can actually use this 7459 04:15:02,228 --> 04:15:05,288 chinese shaft out python file to create our chinese 7460 04:15:05,318 --> 04:15:05,828 chef 7461 04:15:05,858 --> 04:15:06,458 class 7462 04:15:06,758 --> 04:15:08,168 tom's going as a class. 7463 04:15:08,228 --> 04:15:10,058 and over here I'm just going to say 7464 04:15:10,117 --> 04:15:11,228 chinese chef 7465 04:15:11,678 --> 04:15:12,248 and 7466 04:15:12,908 --> 04:15:13,898 basically 7467 04:15:14,019 --> 04:15:16,929 I just can define everything that the chinese chef can do, 7468 04:15:17,349 --> 04:15:18,519 but let's say that 7469 04:15:18,549 --> 04:15:20,019 our chinese chef 7470 04:15:20,288 --> 04:15:21,068 can do 7471 04:15:21,099 --> 04:15:23,768 everything that are generic chef can do. 7472 04:15:23,947 --> 04:15:25,956 so the chinese chef is like a special 7473 04:15:25,986 --> 04:15:28,296 schafroff it's very specific type of chef. 7474 04:15:28,746 --> 04:15:30,636 but let's say that this chinese chef 7475 04:15:30,666 --> 04:15:34,687 can do everything that the normal chef can do so the chinese chef can make chicken 7476 04:15:34,866 --> 04:15:35,856 can make salad, 7477 04:15:36,066 --> 04:15:37,267 and can also make 7478 04:15:37,297 --> 04:15:38,406 a special dish. 7479 04:15:38,496 --> 04:15:39,967 well if I wanted to give this 7480 04:15:39,997 --> 04:15:40,927 chinese chef, 7481 04:15:40,986 --> 04:15:42,546 all of that functionality. 7482 04:15:42,786 --> 04:15:46,444 I could just come over here and I could copy all of these 7483 04:15:46,475 --> 04:15:47,165 functions. 7484 04:15:47,555 --> 04:15:49,685 and I can paste them in here 7485 04:15:50,045 --> 04:15:52,564 and so now the chinese chef can do everything 7486 04:15:52,595 --> 04:15:54,065 that the other chefs can do, 7487 04:15:54,155 --> 04:15:57,454 but let's say that in addition to all of these things the chinese chef 7488 04:15:57,784 --> 04:15:59,164 can also make 7489 04:15:59,224 --> 04:16:01,264 a special dish called fried rice 7490 04:16:01,294 --> 04:16:02,164 so I could say 7491 04:16:02,314 --> 04:16:02,795 deaf 7492 04:16:03,125 --> 04:16:04,325 and we could say make 7493 04:16:04,835 --> 04:16:06,154 fried rice. 7494 04:16:06,244 --> 04:16:06,874 so 7495 04:16:07,144 --> 04:16:09,243 the chinese chef has this extra 7496 04:16:09,273 --> 04:16:11,403 function which allows it to make fried rice. 7497 04:16:11,703 --> 04:16:13,323 and over here we just say, 7498 04:16:13,413 --> 04:16:14,764 the chef makes 7499 04:16:14,854 --> 04:16:15,843 fried rice. 7500 04:16:16,173 --> 04:16:17,313 and let's also say that 7501 04:16:17,344 --> 04:16:21,783 the chinese chef has a different special dish so instead of making barbecue ribs. 7502 04:16:22,083 --> 04:16:23,463 the chinese chef makes 7503 04:16:23,522 --> 04:16:24,152 lunge 7504 04:16:24,183 --> 04:16:24,663 chicken. 7505 04:16:25,863 --> 04:16:28,562 all right so now we have our chinese chef class set up 7506 04:16:28,593 --> 04:16:30,872 and you'll notice that it can do everything 7507 04:16:30,902 --> 04:16:31,353 that 7508 04:16:31,383 --> 04:16:32,854 the normal chef could do. 7509 04:16:33,334 --> 04:16:36,784 so let's go back over to our app dot python file and I want to create 7510 04:16:36,814 --> 04:16:37,265 a 7511 04:16:37,295 --> 04:16:38,045 chinese chef 7512 04:16:38,075 --> 04:16:38,646 object. 7513 04:16:38,976 --> 04:16:39,726 so 7514 04:16:39,815 --> 04:16:41,766 instead of importing from chef 7515 04:16:41,796 --> 04:16:44,104 we're going to just import it from chinese chef. 7516 04:16:44,585 --> 04:16:45,425 so I'll say 7517 04:16:46,024 --> 04:16:46,924 chinese chef 7518 04:16:46,954 --> 04:16:48,094 and we're going to employ for 7519 04:16:48,514 --> 04:16:49,354 chinese chef. 7520 04:16:49,773 --> 04:16:51,032 so let's go ahead and make 7521 04:16:51,062 --> 04:16:52,202 a chinese chef 7522 04:16:52,262 --> 04:16:52,861 object 7523 04:16:53,731 --> 04:16:56,010 sit down here I'm going to make one arrow to say 7524 04:16:56,069 --> 04:16:56,850 my. 7525 04:16:57,029 --> 04:16:57,959 and then 7526 04:16:59,099 --> 04:17:00,180 my chinese chef. 7527 04:17:00,510 --> 04:17:02,699 we can print out this special dish so 7528 04:17:03,029 --> 04:17:04,529 remember the chinese chef can do 7529 04:17:04,560 --> 04:17:06,390 everything that the normal chef could do 7530 04:17:06,689 --> 04:17:08,850 so if I say my chinese chef da 7531 04:17:08,880 --> 04:17:10,049 make special dish. 7532 04:17:10,289 --> 04:17:12,179 when I run this program you'll see 7533 04:17:12,749 --> 04:17:13,439 the 7534 04:17:13,770 --> 04:17:17,880 regular chef is making barbecue ribs and the chinese chef is making orange 7535 04:17:17,910 --> 04:17:18,450 chicken 7536 04:17:18,510 --> 04:17:19,619 so everything works out. 7537 04:17:19,739 --> 04:17:23,189 and this chinese chef also has an extra method called make 7538 04:17:24,239 --> 04:17:25,410 fried rice. 7539 04:17:25,891 --> 04:17:26,490 and 7540 04:17:26,550 --> 04:17:27,390 you can also 7541 04:17:27,420 --> 04:17:27,810 make 7542 04:17:27,840 --> 04:17:28,740 fried rice. 7543 04:17:28,800 --> 04:17:31,079 but here's the problem right when I go over here to this 7544 04:17:31,109 --> 04:17:32,850 chinese chef dot pie. 7545 04:17:33,600 --> 04:17:37,200 I went I wanted to use all of the functionality that was inside this 7546 04:17:37,230 --> 04:17:38,250 chuffed class 7547 04:17:38,580 --> 04:17:42,061 I actually had to copy and physically paste. 7548 04:17:42,541 --> 04:17:44,281 all of these functions down 7549 04:17:44,312 --> 04:17:45,601 into this file right 7550 04:17:45,780 --> 04:17:46,949 and that's kind of a drag. 7551 04:17:47,219 --> 04:17:49,919 and they especially like imagine if this chef had like 7552 04:17:49,979 --> 04:17:52,350 twenty or thirty of these different functions in it. 7553 04:17:52,649 --> 04:17:54,719 we have to copy and I have the pace. 7554 04:17:54,778 --> 04:17:57,057 all of those inside of this chinese chef 7555 04:17:57,087 --> 04:17:59,786 and this is where we can use something called inheritance 7556 04:17:59,816 --> 04:18:01,556 so instead of having to copy and paste 7557 04:18:01,586 --> 04:18:03,087 all of these functions. 7558 04:18:03,327 --> 04:18:05,607 I could just inherit these functions 7559 04:18:05,638 --> 04:18:06,237 from that 7560 04:18:06,268 --> 04:18:07,197 chef class 7561 04:18:07,587 --> 04:18:08,816 and in order to do that, 7562 04:18:08,906 --> 04:18:10,766 I can actually just get rid of all of these, 7563 04:18:11,065 --> 04:18:12,626 and I can come over here 7564 04:18:12,866 --> 04:18:13,496 and 7565 04:18:13,916 --> 04:18:16,496 right next to where I'm saying class chinese chef 7566 04:18:16,796 --> 04:18:22,254 inside of the parentheses I can say the name of the class that I want to inherit from so I can just say a chef. 7567 04:18:22,974 --> 04:18:27,054 and I'm also going to have to import this song to come over here and we'll say 7568 04:18:27,983 --> 04:18:28,674 from 7569 04:18:28,974 --> 04:18:29,693 chef 7570 04:18:30,563 --> 04:18:31,374 in poor 7571 04:18:31,494 --> 04:18:32,124 shelf. 7572 04:18:32,754 --> 04:18:34,675 so basically what this is saying is 7573 04:18:34,705 --> 04:18:36,686 inside of this chinese chef. 7574 04:18:37,136 --> 04:18:40,615 I want to be able to use all of the functions that are contained 7575 04:18:40,675 --> 04:18:42,415 inside of the chef class 7576 04:18:42,685 --> 04:18:43,825 so say that one more time 7577 04:18:44,275 --> 04:18:46,376 inside of this chinese chef class 7578 04:18:46,406 --> 04:18:49,557 I want to be able to use all of the functions that are inside of this 7579 04:18:49,587 --> 04:18:50,427 chef class 7580 04:18:50,937 --> 04:18:51,536 so 7581 04:18:51,596 --> 04:18:53,576 by using inheritance here 7582 04:18:53,727 --> 04:18:57,118 I'm actually able to come over here to this anecdote pi file. 7583 04:18:57,178 --> 04:18:57,838 and now 7584 04:18:58,138 --> 04:19:00,508 I'm still able to execute for example like 7585 04:19:00,567 --> 04:19:01,107 the make 7586 04:19:01,138 --> 04:19:01,768 chicken 7587 04:19:01,827 --> 04:19:02,457 function. 7588 04:19:03,057 --> 04:19:07,737 even though I didn't specify the make chicken function in here I didn't write it out. 7589 04:19:08,397 --> 04:19:10,827 I can still run this program 7590 04:19:10,887 --> 04:19:12,057 and the chinese stuff. 7591 04:19:12,116 --> 04:19:14,636 the chinese chef will still be able to make 7592 04:19:14,666 --> 04:19:15,206 chicken. 7593 04:19:15,626 --> 04:19:17,215 so when I run this program 7594 04:19:17,455 --> 04:19:18,895 you'll see it out here it says 7595 04:19:18,925 --> 04:19:20,215 the chef makes chicken 7596 04:19:20,635 --> 04:19:24,085 and that's because I inherited the make chicken method 7597 04:19:24,115 --> 04:19:24,655 from 7598 04:19:24,686 --> 04:19:25,586 the chef class 7599 04:19:26,156 --> 04:19:27,896 but here's one thing 7600 04:19:27,927 --> 04:19:28,377 that 7601 04:19:28,407 --> 04:19:29,247 got my stuff 7602 04:19:29,307 --> 04:19:31,107 if I come over here and I say make 7603 04:19:31,138 --> 04:19:32,428 special dish. 7604 04:19:32,788 --> 04:19:34,169 remember the chinese chef 7605 04:19:34,319 --> 04:19:36,659 special dish was supposed to be orange chicken. 7606 04:19:37,079 --> 04:19:37,739 but now 7607 04:19:37,770 --> 04:19:40,620 the chinese chef is going to be making barbecue ribs 7608 04:19:40,650 --> 04:19:41,460 because 7609 04:19:41,790 --> 04:19:42,990 I inherited 7610 04:19:43,200 --> 04:19:44,850 this makes special dish 7611 04:19:44,909 --> 04:19:45,600 function 7612 04:19:45,840 --> 04:19:46,500 from this 7613 04:19:46,530 --> 04:19:47,400 chef class 7614 04:19:47,641 --> 04:19:50,400 is what I can actually do is I could come in here and I could 7615 04:19:50,490 --> 04:19:51,660 override 7616 04:19:52,050 --> 04:19:52,710 that 7617 04:19:52,770 --> 04:19:53,880 make special dishcloth 7618 04:19:53,910 --> 04:19:54,510 so I could say 7619 04:19:54,540 --> 04:19:55,050 death 7620 04:19:55,290 --> 04:19:55,950 make 7621 04:19:56,400 --> 04:19:57,510 special dish. 7622 04:19:58,410 --> 04:19:59,340 and down here 7623 04:19:59,460 --> 04:19:59,851 I can just 7624 04:19:59,881 --> 04:20:01,472 override it so I could say, 7625 04:20:02,071 --> 04:20:02,762 the chef 7626 04:20:02,821 --> 04:20:03,781 makes 7627 04:20:04,472 --> 04:20:05,012 orange 7628 04:20:05,042 --> 04:20:05,522 chicken 7629 04:20:06,362 --> 04:20:07,442 and now 7630 04:20:07,473 --> 04:20:09,542 when I go over here and I run 7631 04:20:09,572 --> 04:20:10,172 this 7632 04:20:10,202 --> 04:20:11,282 make special dish 7633 04:20:11,312 --> 04:20:11,883 function. 7634 04:20:12,423 --> 04:20:13,863 now the chefs are going to be 7635 04:20:13,894 --> 04:20:16,982 back to making orange chicken so the chinese chef will make his 7636 04:20:17,013 --> 04:20:18,003 special dish. 7637 04:20:18,272 --> 04:20:18,962 so that's 7638 04:20:19,172 --> 04:20:21,992 basically what inheritance does it allows me to inherit 7639 04:20:22,322 --> 04:20:26,013 functionality from an existing class into the new class. 7640 04:20:26,522 --> 04:20:27,062 and 7641 04:20:27,452 --> 04:20:32,404 I can actually just inherit all of it without having to write it out so I didn't have to write out 7642 04:20:32,494 --> 04:20:32,854 make 7643 04:20:32,885 --> 04:20:35,675 chicken and make solid inside the chinese class, 7644 04:20:36,035 --> 04:20:36,516 but 7645 04:20:36,785 --> 04:20:37,775 the chinese chef 7646 04:20:37,806 --> 04:20:38,916 can still make 7647 04:20:38,946 --> 04:20:42,576 chicken and salad because it inherited that functionality from the chef class 7648 04:20:46,296 --> 04:20:48,696 in this tutorial I wanna talk to you guys about the 7649 04:20:48,727 --> 04:20:50,376 python interpreter. 7650 04:20:50,676 --> 04:20:56,977 the python interpreter is basically a little environment that we can use to execute python 7651 04:20:57,007 --> 04:20:57,727 commands. 7652 04:20:58,057 --> 04:21:03,098 so it's kind of like this little sandbox environment where we can test out and try out different 7653 04:21:03,157 --> 04:21:05,828 python commands are different python functions 7654 04:21:06,278 --> 04:21:08,768 in a very safe and neutral environment. 7655 04:21:08,888 --> 04:21:13,418 so it's kind of like a quick and dirty way to write python and try different things out. 7656 04:21:13,718 --> 04:21:16,477 the way we use the python interpreter is by opening up 7657 04:21:16,507 --> 04:21:18,547 opening up our command prompt. 7658 04:21:18,937 --> 04:21:22,536 now if you're on windows there's a program called command prompt 7659 04:21:22,566 --> 04:21:24,576 if you're on mac there's a program called 7660 04:21:24,636 --> 04:21:25,266 terminal. 7661 04:21:25,596 --> 04:21:27,246 basically you need to open 7662 04:21:27,276 --> 04:21:30,365 that program in order to use the python interpreter, 7663 04:21:30,726 --> 04:21:31,956 so I'm here on a mac 7664 04:21:31,986 --> 04:21:33,518 but if you're on a window as you can 7665 04:21:33,577 --> 04:21:35,497 essentially do exactly what I'm doing just 7666 04:21:35,527 --> 04:21:37,237 inside of the command prompt. 7667 04:21:37,598 --> 04:21:40,058 so on mac here I'm just going to search for 7668 04:21:40,237 --> 04:21:41,138 my terminal. 7669 04:21:41,527 --> 04:21:46,326 if you're on windows you can just search for like cmd or command prompt in it should pop up, 7670 04:21:46,807 --> 04:21:48,457 so the terminal is 7671 04:21:49,147 --> 04:21:51,037 basically an environment 7672 04:21:51,097 --> 04:21:52,626 on our computer where we can 7673 04:21:52,656 --> 04:21:55,086 interact with the computer and do different things 7674 04:21:55,355 --> 04:21:59,978 without a graphical user interface so normally when we interact with the computer 7675 04:22:00,338 --> 04:22:05,857 we're using things like buttons or you know windows and you know what we can move stuff around we can 7676 04:22:05,888 --> 04:22:07,269 you know basically just like 7677 04:22:07,448 --> 04:22:08,889 interact with the computer. 7678 04:22:09,219 --> 04:22:10,269 with graphics 7679 04:22:10,479 --> 04:22:12,548 with the terminal or the command prompt 7680 04:22:12,607 --> 04:22:16,087 is a place where you can interact with the computer using text commands. 7681 04:22:16,387 --> 04:22:18,007 so you know am I going to get too much into 7682 04:22:18,037 --> 04:22:21,396 what the terminal the command prompt dog but that's essentially what it is. 7683 04:22:21,816 --> 04:22:23,227 so inside of here, 7684 04:22:23,977 --> 04:22:26,228 we can use the python interpreter 7685 04:22:26,588 --> 04:22:30,009 and the python interpreter is basically just a little program 7686 04:22:30,039 --> 04:22:31,508 that like I said and we can write 7687 04:22:31,538 --> 04:22:32,858 you know sort of python 7688 04:22:32,889 --> 04:22:33,158 in 7689 04:22:33,188 --> 04:22:34,059 so generally, 7690 04:22:34,299 --> 04:22:37,029 all you have to do is go over to your terminal or your command prompt 7691 04:22:37,299 --> 04:22:38,380 and type in 7692 04:22:38,710 --> 04:22:39,520 python 7693 04:22:39,550 --> 04:22:40,330 three 7694 04:22:40,570 --> 04:22:43,630 and since we're using python three on monotype python three. 7695 04:22:44,350 --> 04:22:48,519 but you can also just like normal python and I'm pretty sure that gives you python two. 7696 04:22:49,089 --> 04:22:50,739 now here's a quick disclaimer. 7697 04:22:50,799 --> 04:22:51,309 I'm 7698 04:22:51,549 --> 04:22:52,659 on windows, 7699 04:22:53,020 --> 04:22:55,028 you may run into a problem 7700 04:22:55,059 --> 04:22:55,539 where 7701 04:22:55,569 --> 04:22:58,059 you can't use this python three command, 7702 04:22:58,299 --> 04:22:59,919 and it's possible that 7703 04:22:59,949 --> 04:23:01,271 if you're running into that problem 7704 04:23:01,301 --> 04:23:02,201 python 7705 04:23:02,921 --> 04:23:06,280 python three hasn't been added to your windows 7706 04:23:06,370 --> 04:23:07,510 path variable. 7707 04:23:08,080 --> 04:23:11,919 and basically what that means is your computer doesn't recognize the command 7708 04:23:11,949 --> 04:23:12,970 python three 7709 04:23:13,239 --> 04:23:14,050 and that's the case 7710 04:23:14,080 --> 04:23:16,239 all you have to do is just go and google 7711 04:23:16,270 --> 04:23:19,269 how to add python three to your windows path variable. 7712 04:23:19,419 --> 04:23:22,390 it's really easy I'm not going to get into it in this video just because it's kind of 7713 04:23:22,420 --> 04:23:23,350 outside the scope 7714 04:23:23,380 --> 04:23:23,710 but 7715 04:23:24,040 --> 04:23:25,271 if you're running into that problem. 7716 04:23:25,330 --> 04:23:27,880 that's probably it's not on your windows 7717 04:23:27,910 --> 04:23:31,271 path variables such as google around for that and you should be able to find an answer, 7718 04:23:31,721 --> 04:23:34,211 but onsite python three and then click enter 7719 04:23:34,241 --> 04:23:37,150 and it's going to open up this cool thing down here so 7720 04:23:37,721 --> 04:23:40,900 you can see it basically just says like here's the version of python. 7721 04:23:41,290 --> 04:23:41,740 now 7722 04:23:41,830 --> 04:23:41,980 I'm 7723 04:23:42,011 --> 04:23:44,169 going to enter so we can have some like 7724 04:23:44,229 --> 04:23:45,399 new lines here 7725 04:23:45,789 --> 04:23:46,270 and 7726 04:23:47,079 --> 04:23:50,077 put down here this is the python interpreter so we can write 7727 04:23:50,497 --> 04:23:53,107 python code in here and it's going to work so I could 7728 04:23:53,287 --> 04:23:54,547 for example I could write like 7729 04:23:54,697 --> 04:23:55,207 print 7730 04:23:55,627 --> 04:23:57,186 and inside of here I could print like 7731 04:23:57,365 --> 04:23:58,445 hello world. 7732 04:23:59,165 --> 04:23:59,705 and 7733 04:23:59,915 --> 04:24:00,725 when I click enter 7734 04:24:00,755 --> 04:24:01,836 you'll see that it prints out 7735 04:24:01,866 --> 04:24:02,616 hello world. 7736 04:24:02,826 --> 04:24:06,186 I could create a variable so for example I can say like number one 7737 04:24:06,455 --> 04:24:07,596 is equal to ten. 7738 04:24:07,865 --> 04:24:10,475 I can say numb two is equal to ninety. 7739 04:24:10,774 --> 04:24:11,645 and then I could print 7740 04:24:11,675 --> 04:24:13,115 out number one 7741 04:24:13,146 --> 04:24:13,806 plus 7742 04:24:13,865 --> 04:24:14,735 none too 7743 04:24:15,245 --> 04:24:16,864 and it's going to be able to do that for me ? 7744 04:24:17,044 --> 04:24:21,093 I could also use awesome like a function so I can define a function in here, 7745 04:24:21,513 --> 04:24:26,431 we can make a function that is called say hi and it'll take a name parameter. 7746 04:24:27,751 --> 04:24:28,351 and 7747 04:24:28,410 --> 04:24:31,381 you'll see here when it saw I wanted to create a functional 7748 04:24:31,411 --> 04:24:33,301 put these three little dots 7749 04:24:33,331 --> 04:24:37,290 and I can index in and we can write the code for a function so I can say like 7750 04:24:37,320 --> 04:24:37,860 print 7751 04:24:39,181 --> 04:24:40,051 hello 7752 04:24:42,150 --> 04:24:43,410 last name. 7753 04:24:45,090 --> 04:24:47,250 and now I have a function called 7754 04:24:47,280 --> 04:24:50,521 say hi so I can break out of this by this entering again 7755 04:24:50,820 --> 04:24:52,770 and I would call the function so I could 7756 04:24:52,920 --> 04:24:53,550 say 7757 04:24:53,580 --> 04:24:54,300 say 7758 04:24:54,660 --> 04:24:55,200 hi 7759 04:24:55,230 --> 04:24:56,280 and we'll say out of me. 7760 04:24:57,420 --> 04:24:58,079 I'm like 7761 04:24:58,109 --> 04:24:59,189 so now it's going to say 7762 04:24:59,220 --> 04:24:59,909 hello mike 7763 04:25:00,149 --> 04:25:02,159 so I can use a function I could use something like an 7764 04:25:02,189 --> 04:25:02,880 if statement 7765 04:25:02,910 --> 04:25:03,420 you know 7766 04:25:03,720 --> 04:25:04,500 I could say, 7767 04:25:05,460 --> 04:25:07,920 I can easily afford the wicked use while loose. 7768 04:25:08,340 --> 04:25:12,929 I mean we can basically use all of the basic like python commands and you know 7769 04:25:12,959 --> 04:25:15,689 inside of this python interpreter and like I said before. 7770 04:25:16,050 --> 04:25:18,300 it's essentially just an environment where you can test 7771 04:25:18,330 --> 04:25:18,780 out 7772 04:25:18,960 --> 04:25:19,800 python code. 7773 04:25:20,100 --> 04:25:22,561 now this is not a place where you want to write 7774 04:25:22,650 --> 04:25:24,601 like any serious python 7775 04:25:24,690 --> 04:25:25,471 scripts 7776 04:25:25,501 --> 04:25:28,229 so if you're like designing and writing a python program 7777 04:25:28,260 --> 04:25:29,550 I would not recommend 7778 04:25:29,580 --> 04:25:31,230 doing it inside of this interpreter ? 7779 04:25:31,410 --> 04:25:31,830 it is, 7780 04:25:32,040 --> 04:25:37,079 it's not a very intuitive environment it's pretty much just set up for some quick and dirty tests 7781 04:25:37,259 --> 04:25:40,287 we need to test somethin' out great this is a perfect place for it. 7782 04:25:40,587 --> 04:25:42,086 you'll have to set up a file 7783 04:25:42,416 --> 04:25:43,526 you'll have to use like some 7784 04:25:43,557 --> 04:25:47,607 id you don't have to execute a filing is going here it's quick it's dirty, 7785 04:25:47,667 --> 04:25:48,356 you get it done. 7786 04:25:48,776 --> 04:25:50,816 but if you're writing an actual program. 7787 04:25:50,876 --> 04:25:53,485 you definitely definitely definitely want to use 7788 04:25:53,516 --> 04:25:53,815 a 7789 04:25:53,846 --> 04:25:54,746 text editor. 7790 04:25:55,256 --> 04:26:03,655 the text editor is just going to be way more organized everything is going to be a lot cleaner and you're not going to get confused with like where stuff is and what you have so 7791 04:26:04,136 --> 04:26:06,176 that's the basics of the python interpreter, 7792 04:26:06,266 --> 04:26:07,796 you know in the course I 7793 04:26:07,855 --> 04:26:09,655 havent really been using it at all, 7794 04:26:09,896 --> 04:26:13,375 just because I think it's a lot easier to teach when we're inside of a file, 7795 04:26:13,525 --> 04:26:15,055 then inside of here but 7796 04:26:15,085 --> 04:26:15,445 you know 7797 04:26:15,476 --> 04:26:16,734 don't count this guy out 7798 04:26:16,765 --> 04:26:21,085 the python interpreter is awesome a lot of people who use it and it's great if you just need a task 7799 04:26:21,115 --> 04:26:23,846 you know little bits of code out without having to set up some 7800 04:26:23,876 --> 04:26:25,346 huge environment so 7801 04:26:25,796 --> 04:26:26,605 python interpreter 7802 04:26:26,636 --> 04:26:29,547 definitely awesome out player out there you know have some fun 7803 04:26:29,727 --> 04:26:30,837 and take advantage of it. 7804 04:26:31,407 --> 04:26:34,436 hey things are washing if you enjoy the video please leave alike answered 7805 04:26:34,466 --> 04:26:37,377 garbage off academy to be the first snow and release new content 7806 04:26:37,947 --> 04:26:40,768 also were always going to improve so if you have any 7807 04:26:40,798 --> 04:26:43,828 constructive criticism or questions or anything leave a common below 7808 04:26:44,128 --> 04:26:46,887 finally if you're enjoying job academy and you want to help us grow 7809 04:26:47,037 --> 04:26:51,114 head over to draft academy dotcom ford sauce contribute and invest in our future. 534555

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.