CS50P - Lecture 0 - Functions, Variables
FULL TRANSCRIPT
[Music]
so
[Music]
all right this is cs50s introduction to
programming with python my name is david
malin and this is our week on functions
and variables but odds are many of you
most of you have never actually
programmed before so let's start by
doing just that let me go ahead here and
open up my computer and on it a program
called visual studio code or vs code
which is just a very popular program
nowadays for actually writing code now
you don't have to write code using this
particular tool in fact all we need at
the end of the day is a so-called text
editor a program for writing text and
heck if you really want you could even
use something like google docs or
microsoft word you'd have to save it in
the right format but really at the end
of the day all you need is a program for
writing text because that's what code is
text now within this particular program
i'm going to have the ability to create
one or more files via this top portion
of the screen and i'm going to do so by
diving right in and doing this at the
bottom of my screen at the bottom of my
screen is a so-called terminal window
and this is a command line interface or
cli interface to the underlying computer
be it your mac or your pc or even some
server in the cloud and what i'm going
to do here is literally write code and
then the name of the file that i want to
code for instance hello dot pi as we'll
soon see any program that you write in
python generally has a file name that
ends in dot pi to indicate to the
computer that it's indeed a program
written in python now you'll see here at
the top of my screen i have a blinking
cursor a line one which is where the
very first line of my code is going to
go and then just a tab that reminds me
of the name of this file hello.pi and
without even knowing much python i'm
going to write my very first program
here as follows print open parenthesis
quote hello comma world close quote and
close parenthesis and you'll see that at
my keyboard some of my thoughts were
finished for me i only had to type one
parenthesis and the other one
automatically appeared and that's just a
feature that we'll see of tools like
this tool here now even if you've never
programmed before odds are you can guess
infer what this simple program is going
to do and it's only one line print open
parenthesis quote hello world close
quote close parenthesis indeed when i
run this program ultimately it's just
going to say hello to the world and in
fact this is a very famous perhaps the
most canonical program you can write as
your very first program in python or any
other language and so that's what i've
done here
but on my mac my pc even my phone i'm
generally in the habit like you of
running programs by double-clicking an
icon or just tapping on the screen but i
see no such icons here and in fact
that's because my interface to at least
my current mac or pc or some server in
the cloud is again only a cli command
line interface which even though it
might feel like it's a step back from
the menus and buttons and icons that you
and i take for granted every day you'll
find we think that it's ultimately a
much more powerful interface and
incredibly popular to use among
programmers in the real world so to run
this program i'm going to have to use a
command and i'm going to move my cursor
back down to the bottom of the screen
here where previously i already ran one
command the command code which has the
effect of opening vs code in my computer
and then i passed in the name of the
file that i wanted to code up now i have
a chance to type a second command and
you'll see i see a second dollar sign
now the dollar sign here doesn't
indicate any kind of currency or money
it just is the symbol that's generally
used to indicate your prompt where the
command line interface wants you to put
those commands now the command i can run
here is going to be this i'm going to
run python of hello dot pi now why is
that well it turns out that when i
actually write code in a language like
python it's of course stored in that
file hello.pi but i need to interpret
the code top to bottom left to right so
that the computer knows what to do
indeed at the end of the day even if you
don't really know much about computers
you've probably heard that computers
only understand zeros in one the
so-called binary system well if that's
the case then something that says print
and parenthesis and quote-unquote hello
world is not surely zeros and ones we
have to somehow translate it into the
zeros and ones that the computer
understands now fortunately so long as
you've installed such a program in
advance there's a program as well as a
language called python so python is not
only a language in which we're going to
write code it's also a program otherwise
known as an interpreter that you install
for free on your own mac or pc or some
server in the cloud and you can then run
that program that interpreter passing to
it as input the name of your file like
mine here hello.pi and then that program
that interpreter will handle the process
of reading it top to bottom left to
right and translating it effectively
into those zeros and ones that the
computer can understand
so let's do just that let me go back to
vs code here i already typed out python
of hello.pi but i didn't yet hit enter
and that's what's now going to kick off
this command and hopefully if i didn't
mess any of this up i should see my very
first program's output to the screen and
voila hello world so if you two have
typed exactly that same code and have
executed exactly that same command you
will have written your very first
program in this case in python well now
let's take a step back and consider what
is it that we actually just did and what
is it we're looking here on the screen
well first and foremost in most any
programming language you tend to have
access to what are called functions a
function is like an action or a verb
that lets you do something in the
program and generally speaking any
language comes with some predetermined
set of functions some very basic actions
or verbs that the computer will already
know how to do for you that the language
really will know how to do for you and
you the programmer the human can use
those functions at will to get the
computer to do those things now the
program in question here hello.pi
is using one function and you can
perhaps guess what it is that function
is of course going to be this function
and that print function of course
doesn't print some pre-ordained string
of text that is to say it prints
whatever it is you want it to print and
here too do we have another piece of
terminology in the world of programming
namely arguments an argument is an input
to a function
that somehow influences its behavior the
people who invented python of course
didn't necessarily know what it is you
and i are going to want to print to the
screen so they designed this print
function using these parentheses with
the ability to take as input some string
of text be it in english or any other
human language that is what you want
this function ultimately to print onto
the screen
and what is it that the program's
ultimately doing on the screen well it's
printing of course it's showing us hello
world on the screen and that's generally
in programming known as a side effect it
can be visual can be audio in this case
it's something that appears on the
screen
and functions therefore can indeed have
these side effects one of the things
they can do as this verb action is to
display on the screen as a side effect
something like those world words that we
wanted
hello world
so that's my first program and you know
i'm feeling pretty good everything
worked as planned i didn't make any
mistakes but honestly when you're
learning how to program and even once
you've learned how to program years
later you're going to make mistakes and
those mistakes of course or refer to a
term you might already know which is
that of a bug a bug is a mistake in a
program and they can take so many forms
and take comfort perhaps in knowing that
over the coming weeks you're going to
make so many mistakes you're going to
have so many bugs in your code just like
i did and just as i still do and those
bugs themselves are just mistakes that
are problems for you to solve and over
the weeks to come we're going to give
you a lot of tools both mental and
technical via which you can solve those
problems but just don't get discouraged
if when writing your program for the
first time it doesn't even work that
first time it will with time with
practice and with experience so let me
deliberately now make a mistake that
there was a non-zero chance i might have
done accidentally already but i got
lucky let me go ahead and just suppose i
forgot to include something like the
closing parenthesis at the end of this
line of code you know the code is almost
correct it's like 99 of the way there
but now that i've pointed it out it's
pretty obvious that it's missing that
closed parenthesis but even little
seemingly minor details like that that
you and i as humans wouldn't really care
about and if you're sending an email or
a text message whatever it's just a typo
it's not that big a deal
it is going to be a big deal to the
computer a computer is going to take you
literally and if you don't finish your
thought in the way the language expects
it's not going to necessarily run at all
so let's do this i'm going to go ahead
here and clear my screen down at the
bottom just so i can start fresh and i'm
going to go ahead and run this version
of my program
after having made that change by
deleting the parenthesis i'm going to go
ahead and type python again of hello.pi
and this time when i hit enter i'm
hoping i'm going to see hello world but
here we have an error on the screen a
so-called syntax error which refers to
my having made a mistake at my keyboard
and it this one fortunately is pretty
straightforward it indeed says that this
open parenthesis was never closed and so
that's probably pretty intuitive now
what i need to do i need of course to
close it unfortunately sometimes the
error messages we'll see in the coming
weeks are not going to be nearly that
user friendly but there too again with
experience with practice will you get
better at debugging such programs let me
now make sure that i indeed fixed it
correctly let me go ahead run now
hello.pi and hit enter and voila
we're back in business well let me pause
here and see if we have any questions
now about python itself writing or
running even the simplest
of these programs
could i write code inside a word or for
example microsoft excel and what's the
barrier to doing that
a really good question and allow me to
very explicitly say to the entire
internet that you should not write code
with microsoft word i mentioned that
only because it's a tool via which you
can write text and code is at the end of
the day just text but it's not the right
tool for the job we don't need bold
facing underlining paragraphs and the
like we generally want something much
simpler than microsoft word or google
docs and so vs code is an example of
just a more general purpose text editor
its purpose in life is to allow you the
human to edit text nowadays these text
editors come with many more features in
fact you'll notice that even in my code
here even though it's just one line
there's a bit of color to it the word
print for me is appearing in blue the
parentheses are black and we'll see as
we might write more lines of code more
and more of the lines will come to life
in various colors now that's just one
feature of a text editor will see too
that it has features like this built-in
terminal window it's going to have a
built-in tool for debugging or finding
problems with code and it's just a very
popular tool nowadays but there are many
many others out there you're welcome to
use them for this course and beyond we
just happen to use this one in large
part two because you can also use vs
code nowadays for free in the cloud how
about one other question here on
programming with python or hello world
or syntax more generally that will spend
to us if
it's not possible to run the computer
using the terminal window
i think i heard is it not if it's
possible to run the program without the
terminal window
are you full
okay you froze for me again but let me
infer what the question is so in this
environment as i've configured my
computer i can only run these python
programs via the terminal window now
that's good for me the programmer or the
person who's trying to learn how to
program but it's not very good if you
want to ship this software and have
other people use your actual code you
can absolutely write programs and then
allow other people to use not a command
line interface but a graphical user
interface or gui gui this is just one
mechanism and perhaps i think the the
best one with which to start writing
code because eventually it's going to
give us a lot more control
allow me to forge ahead here but please
feel free to continue asking questions
along the way if only via the chat let's
consider now how we might go about
improving this program let's go about
improving this program to make it a
little more interactive and not just
assume that everyone is going to want to
be greeted more generically as hello
world let's see if i can't get this
program to say something like hello
david or hello jeremiah or hello horatio
or whatever the actual user's name is
well to do this i'm going to go back up
to hello.pi and i'm going to add another
line of code at the very top that simply
says for instance
what's your name quote unquote with an
extra space at the end so i'm printing
to the user asking them a question for
some input but now i need another
function to actually get input from the
user and perfectly enough python comes
with a function named input so here i'm
going to go ahead and call a function
input open paren close paren and that's
going to prompt the user with just a
blinking cursor waiting for them to type
something in now it turns out if i read
the documentation for the input function
it actually takes an argument itself i
don't need to use print separately and
then prompt the user for input so i can
actually simplify this code before we
even use it i'm going to go ahead here
and take that same string from print put
it as an argument to the input function
and get rid of the print altogether and
in fact that print would have added a
new line anyway so now i've just got a
prompt where the user's cursor is going
to end up blinking at the end of the
line asking them what's your name
in my terminal window i'm going to run
python of hello.pi
enter ok we're making progress it seems
that this new function input is indeed
prompting me the human for input so i'm
going to type in my name david and hit
enter unfortunately it doesn't really do
anything with my name it just outputs it
immediately all right well i could fix
this right i could go up to line two and
i could change world to david and then
back in my terminal window here i can do
python of hello.pi enter what's your
name david enter and there we go all
right now i'm up and running now my
program is working as intended of course
this isn't really working as intended
here let me go ahead and try pretending
to be my colleague carter here well
carter's name is this i'm going to go
ahead and hit enter and i'll see of
course hello carter well obviously not
because i've hard coded so to speak i've
written literally my name inside of the
string so we need some way now of
actually getting back
what the user's input is and doing
something with it ultimately and for
this we're going to leverage another
feature of programming specifically a
feature of some functions which is that
they can have return values as well if
you think of input as being again this
action this verb you can actually
personify it as maybe a person like a
friend of yours that you've asked a
question of and you've asked your friend
to go get input from someone else go ask
that person their name and if your
friend comes back knowing that person's
name well wouldn't it be nice if they
handed that name back to you that's kind
of what we need metaphorically the
function to do is get the user's input
and then hand it back to me so that i
the programmer can do something with it
but if it's going to be handed back to
me i kind of want to put it somewhere so
that i can then print it back on the
screen i need to do the equivalent of
take out like a piece of paper or a
post-it note write down on this piece of
paper what it is the human has said so
that i can then feed it into as input
that print function and to do that we're
going to need one more feature of
programming namely variables and odds
are most everyone's familiar with
variables for math class way back when x
and y and z and the like well
programming has that same capability
this ability to create a variable in
this case in the computer's memory not
just on a piece of paper and that
variable can store a value a number some
text even an image or video or more a
variable is just a container for some
variable
a variable is just a container for some
value inside of a computer or inside of
your own program so how do i go about
expressing myself in this way well i
think what i'm going to do is introduce
a variable that's a little more
interestingly named than x or y i could
just say this x equals input but i'm
going to use a better name than a
typical mathematical variable here and
i'm going to literally call my variable
name why well in programming because i
have a whole keyboard in front of me i
can use more descriptive terms to
describe what it is i'm writing and now
though there's an opportunity to
consider a specific piece of syntax
we've seen parentheses we've seen quotes
all of which are necessary when passing
inputs to a function but this equal sign
here that's in between input on the
right and name on the left is actually
important and it's technically not an
equal sign per se it doesn't mean
equality as much as it means assignment
so in python and many programming
languages a single equal sign is the
assignment operator and what that means
specifically is that you want to assign
from right to left whatever the user's
input is so the equal sign copies from
the right to the left whatever the
return value of the function on the
right is so again the input function
clearly gets input from the user that's
why i was able to type my name or
carters but it also sort of behind the
scenes hands that value that return
value back to me the programmer and if i
use an equal sign and a variable no
matter what i call it i can store that
input in that variable so as to reuse it
later so now sitting in the computer's
memory somewhere is a container
containing david quote-unquote or carter
quote-unquote or whatever the human has
typed in
but here it's easy to make a mistake
suppose i
decide to try to print that name and so
i i kind of on a hunch type in this
hello comma name just kind of plugging
in the name of the variable well let me
go ahead here and run python of hello.pi
and hit enter that's going to prompt me
for my name and let me type in my name
david but i haven't hit enter yet and
perhaps via the chat what's going to
happen here when i now hit enter
i'm hoping it says hello david i'd be
okay if it says hello world but i don't
want it to say what it's actually gonna
say and yep what we're seeing in the
chat is well it's probably gonna say
literally hello comma name so that's not
quite right so we need another way of
printing out the value inside of that
variable rather than just this word name
well let me try this in a couple of
different ways let me try this as
follows let me go ahead and maybe undo
this because i've gotten pretty good
already at saying hello so let's let you
know let's draw that line in the sand
and just say all right let's at least
get hello comma out the door let's now
print name and just on a hunch i'm going
to try this i'm going to use print again
because you can use these functions as
many times as you need and i'm going to
pass to the name to the print function
the variable called name but notice i'm
being a little clever now i'm not
putting it in double quotes because
we've seen already that double quotes
means literally print out n-a-m-e i'm
getting rid of the quotes this time in
hopes that
now by passing the variable called name
to the function called print it will in
fact go about printing the contents of
that variable that is its so-called
value all right let's go ahead and do
this here python of hello.pi enter
what's your name david and now crossing
my finger still i see hello comma david
all right so it's not the best program
i'm kind of cutting some corners here so
to speak i'm saying hello david on two
separate lines so it's not as elegant
it's not as pretty it's not as
grammatically appropriate in english as
just saying it all in one breath on one
line but at least i've solved the
problem just not very well yet but let
me take a step back now and perhaps
introduce a couple of other concepts
with which we should be familiar which
is as our programs get longer and
they're no longer just one line or two
or even three eventually our programs
are going to become dozens of lines
maybe even hundreds of lines long let's
set the stage for success moving forward
it turns out that python and a lot of
programming languages also support
something called comments comments are
notes to yourself in your code and you
include comments by way of a special
symbol in python it's going to be the
hash symbol typically and that allows
you to write the equivalent of a note to
yourself but in a way that's not going
to break your code the computer actually
ignores your comments it's just there
for you it's just there for your teacher
it's just there for your colleague with
whom you're sharing ultimately that code
so if i go back to vs code here and i
just want to add some comments to this
program to explain to my teacher to
myself to my colleagues what this
program is doing well let's go ahead and
do that i'm going to go at the very top
of my program and on line one now i'm
going to move that original line of code
down a bit i'm going to add a hash and
i'm going to say something like this
ask user for their name now i don't have
to use that language i don't have to use
that that text i could use any human
language whatsoever it doesn't have to
be english but i'm going to now below
that just say something like this say
hello to user and you'll notice that vs
code by default is kind of graying out
my comments they're no longer blue
there's no red there's no color in them
and that's just because they're notes to
myself and the computer ultimately is
going to ignore them but what we have
now is two comments ask user for their
name and then a second comment say hello
to user and i've just kind of commented
each chunk of code like each line or
line's plural of code that are doing
something noteworthy why well tomorrow
morning when i wake up having you know
uh slept for quite some time forgotten
what it is i did the previous day it's
convenient with comments to just see in
english or your own human language what
it is this program is doing so that you
don't have to read the code itself and
better yet if there's maybe a mistake
down the road you can read what your
intention was and then you can look at
the code and figure out if your code's
now doing what you intended so this
isn't really necessary for a program
this small it's pretty obvious with just
one or two or three lines what the
program's doing it's just as fast to
read the code than the comments but
getting into this habit is generally a
good thing to comment your code every
one or few lines so as to remind
yourself and others what it is your
intent and your code is doing what's
nice about comments too is this comments
can also serve to be sort of a to-do
list for yourself there's this notion in
uh programming of pseudocode pseudocode
isn't a formal thing it's not one
specific language it's just using
english or your own human language to
express your thoughts succinctly
methodically algorithmically so to speak
but pseudocode therefore because it's
not python and it's not necessarily
english it just kind of allows you to
outline your program even in advance so
for instance if i wasn't sure today
how i wanted to go about writing this
program but i did know what i want to do
i could have started today by just
writing this in hello.pi no code i could
have written just a couple of comments
to myself step one ask user for their
name step two say hello to user then
once i've outlined my program in
pseudocode then i can go in there and
say all right how do i ask the user for
their name well i can do input quote
unquote what's your name question mark
and then on the left here i can maybe
put a variable and assign it to that
okay how do i say hello to the user well
i know i can use print to say things on
the screen let me say hello comma
and let me okay let me now print the
person's name so again pseudocode is a
nice way of structuring your to-do list
especially if you have no idea how to
write the code because it breaks a
bigger program down into small
bite-size tasks all right let me pause
here to see if there are now any
questions on comments pseudo code
return values
or variables
any questions we can clear up here
yeah my question is does the function
input work for any type of information
or only for words yeah really good
question so according to its
documentation and we'll look more at
formal documentation soon input is going
to expect what's called a string that is
a sequence of text be it in english or
any other human language but it's indeed
going to be expecting text with which to
prompt the user
a good question how about another
question from the group if we could
i wanted to ask how i make a several m
comments
oh how do you do many lines of comments
if i'm hearing you correctly sure uh you
would just
keep doing them like this you just
prefix each of the lines with a hash
symbol like i'm doing here there is
another technique for doing multi-line
comments in python that actually tend to
have special meaning you can do three
double quotes like this and then
anything in between here is a comment
that's another technique or you can use
single quotes as well but more on those
i think another time all right well if
you don't mind let me forge ahead here
and see how we might improve this
program further and also introduce a few
other features that we might want to
take into account over time so it turns
out that we can certainly improve on
this program because it's a little
disappointing that i'm cutting this
corner and saying hello comma and then
on a new line printing out name like we
can do better and most programs you use
on your phone or your laptop certainly
keep text together when people want so
how can we go about doing that well
there's a few different ways and in fact
the goal here is not so much to solve
this one problem but to demonstrate and
emphasize that in programming python and
other languages there's so many ways
sometimes to solve the same problem and
here's one way to solve this problem let
me go in here and let me go ahead now
and say hello comma
and let me just add to the end of that
the user's name so i'm using plus in
kind of an interesting way this is not
addition per se i'm not adding numbers
obviously but i do kind of want to add
the person's name to the string of text
hello comma well let me go now down to
my terminal window and run python if
hello.pi again enter what's your name
i'm going to type in david enter
okay it's better
it's better but there's a minor bug
albeit aesthetic here there's missing
space but let's just use some intuition
here well if i'm missing the space after
the comma why don't i go ahead and just
add it manually here let me now rerun
the program python of hello.pi enter
david enter and there we go now we have
something that looks a little prettier
in terms of english grammar hello comma
space david and now if we rewind you
might have noticed before or wondered
why i had this seemingly extra space
after my question mark namely here
there's a space after the question mark
before the double quote and that was
just for aesthetics too i wanted to move
the user's cursor one space to the right
so that when i type their name or they
type their name it's not immediately
next to that same question mark there
but there's other ways we can do this it
turns out that some functions print
among them actually take multiple
arguments and it turns out that if you
separate the inputs to a function the
so-called arguments to a function with a
comma you can pass in not just one but
two three four five onward so let me go
ahead and pass in not just hello comma
space but that
followed by name and this is a little
confusing potentially at first glance
because now i've got two commas but it's
important to note that the first comma
is inside of my quotation marks which is
simply an english grammatical thing the
second comma here is outside of the
quote but between what are now two
separate arguments to print the first
argument is hello comma space the second
argument is the name variable itself so
let's see how this looks
python of hello dot pi enter what's your
name david enter
okay i've kind of over corrected now
i've got two spaces for some reason well
it turns out and this is subtle when you
pass multiple arguments to print it
automatically inserts a space for you
this was not relevant earlier because i
was passing in one big argument to
print all at once by using that plus
operator this time i'm passing in 2
because of the comma so if i don't want
that extra space i don't need to pass in
one myself i can just do this and now
notice if i run this program again
python if hello.pi
type in my name david now it looks
grammatically like i might want now
which of these approaches is better this
approach uses a function print with two
arguments hello comma
and the name variable the previous
version recall technically used one
argument even though it looked a little
curious it's one argument in the sense
that the computer just like
mathematicians are going to do what's
inside of parentheses first so if inside
of parentheses you have this string of
text hello comma and a space which i
need to add back then you have a plus
which means not addition per se but
concatenation to join the thing on the
left and the thing on the right
this ultimately becomes the english
phrase hello comma space david
and then what's being passed ultimately
to the function is technically something
like this but it's doing it all
dynamically it's not me typing in david
as i i secretly as i discretely did
earlier it's figuring out dynamically
what that value is after concatenating
hello with the value of name and then
passing that ultimately to print as the
soul argument
let me pause here to see if there's any
questions on
numbers of arguments now
to functions
can we use a function
many times to solve a certain problem
which we can encounter many times in our
code
you can you can use a function many
different times to solve some problem
what we'll soon see though is if you
find yourself as the programmer solving
a problem the same way again and again
and again it turns out you'll be able to
make your own function so that you don't
have to keep reusing the basic ones that
come with the language
i was curious about the comma and
the plus sign so after plus sign can we
give just one variable and after form
again we give multiple variables like
what is the difference a good question
so in the context of strings and i keep
using that term string is a technical
term in a programming language and again
it means a sequence of text a character
a word a whole paragraph even so the
plus operator is not just used as we'll
see for addition of numbers in python
like we do on paper pencil but it also
is used for concatenation of strings on
the left and the right if you did want
to combine not just two strings left and
right but a third and a fourth you can
absolutely keep using plus plus plus
plus and chain them together just like
in math eventually that's going to start
to look a little ugly i dare say
especially if your line of code gets
long so there's better ways that we'll
actually soon see and a good question as
well well let me come back to the code
here in question and see if we can show
you just a couple of other ways to solve
the same problem along the way
emphasizing that what we're technically
talking about here yes are strings but
there's even a technical term for these
strings in python it's just stir so to
speak str for short for string as you
may know if you've programmed in other
languages people who invent programming
languages like to be very
succinct to the point so we tend to use
fairly short phrases to describe things
not necessarily full words so while you
might say string technically in python
what we're really talking about these
sequences of text are technically
stirrers this is an actual type of data
in a program but we'll soon see that
there's other types of data in programs
as well in fact let's see if we can't
improve this in one other way i like the
progress we've made by keeping
everything on the same line hello comma
david
all on the same line what more though
could we do in terms of solving this
problem well it turns out that we didn't
have to give up entirely with using
print twice let me rewind a little bit
and go back to that earlier version
where i wasn't really sure how to solve
this problem so i was using print once
to print out just the hello in the space
and the comma and then i use print again
to call to print name that strictly
speaking wasn't bad but there was this
visual side effect that i just didn't
like it just looked ugly to have these
two lines of text separate from one
another but there's another way to fix
this clearly it seems to be the case
that the print function is automatically
outputting a blank line it's moving the
cursor automatically for me to the next
line because that's why i'm seeing hello
on one line and david on the next and
then my prompt the dollar sign on the
line below that so print seems to be
presuming automatically that you want it
to move the cursor to the next line
after you pass it some argument but you
can override that behavior again
functions take arguments which influence
their behavior you just have to know
what those arguments are and it turns
out
that if we look at the documentation for
python's print function we can actually
look up at this url here docs.python.org
is where all of python's official
documentation lies if i poke around i
can find my way to more specifically
this url here where i can find all of
the available functions in python
that and the documentation therefore and
if i go a little more precisely i can
even find specific documentation for the
print function itself and rather than
pull that up in a browser i'm going to
go ahead and highlight just one line
from that same url
which is this and this is easily the
most cryptic thing we've seen yet but
this is the official documentation for
the print function and one of the best
things you can do when learning a
programming language is honestly learn
to read the documentation because truly
all of the answers to your questions
will in some way be there even though
admittedly it's not always obvious and i
will say too python's documentation
isn't necessarily the easiest thing
especially for a first time or novice
programmer it too just takes practice so
try not to get overwhelmed if you're not
sure what you're looking at but let me
walk you through this example this again
is a line of text from python's official
documentation for the print function
what this indicates as follows is this
the name of this function is of course
print then there's a parenthesis over
here and another closed parenthesis way
over there everything inside of those
parentheses are the arguments the
potential arguments to the function
however when we're looking at these
arguments in the documentation like this
there's technically a different term
that we would use these are technically
the parameters to the function so when
you're talking about what you can pass
to a function and what those inputs are
called those are parameters when you
actually use the function and pass in
values inside of those parentheses those
inputs those values are arguments so
we're talking about the exact same thing
parameters and arguments are effectively
the same thing but the terms you use
from looking at the problem from
different directions when we're looking
at what the function can take versus
what you're actually passing into the
function so what does this imply well
this syntax is pretty cryptic
but at the moment just know that an
asterisk a star and then the word
objects means that the print function
can take any number of objects you can
pass in zero strings of text one string
like i did two strings like i did or
technically infinitely many if you you
really want though that code's not going
to look very good
after that we see a comma then we see
another parameter here called sep short
for separator in english and notice the
equal sign and the single quote space
single quote so quote unquote space i
don't know what that is yet but i i
think we've seen a hint about it let's
focus though for a moment on this the
print function takes another parameter
called end and the default value of that
parameter is apparently based on this
equal sign and these quotes backslash n
and what is backslash n if you'd like to
chime in the chat anyone who's
programmed before has probably seen this
though if you've never programmed before
this might look quite cryptic
backslash n
means new line and it's a way textually
of indicating if and when you want the
computer effectively to move the cursor
to the next line create a new line of
text and so technically if we read into
the documentation we'll see more detail
on this
the fact that there's a parameter called
end and the documentation for the print
function just means that by default this
print function is going to end every
line with backslash n you don't
literally see backslash n you see a new
line you see the cursor moving to the
next line now by that logic let's move
backwards sep for separator the default
value of separator is apparently a
single blank space well where have we
seen that well recall in an earlier
example when i passed in not just one
but two arguments to the print function
recall that they magically had a space
between them in fact they had that space
plus my own space and that's why i
deleted my space because at that point
it was extra so this just means that
when you pass multiple arguments to
print by default they're going to be
separated by a single space by default
when you pass arguments to print it's
the whole thing is going to be ended
with a new line now just by knowing this
and let me literally wave my hand at the
rest of the documentation for another
day there's more things that print can
do but we're going to focus just on sep
and on end
let's see if we can't leverage this now
to solve that original problem the
original problem was this i don't like
how hello comma david is on two
different lines well that's happening
again because print is automatically
printing out a new line so let's tell it
not to do that let's tell it by passing
a second argument to the first use of
to say end equals quote unquote not
backslash n which is the default
automatically let's make it quote
unquote nothing else
let's override the default value so
there is no new line there's literally
nothing there and let's see what happens
let me now go down to my terminal window
and clear it and i'm going to run python
of hello.pi enter i'm going to type in
my name david and i think now
everything's going to stay on the same
line because and it did
this line here 5 is going to print out
hello comma space but then nothing at
the end of it because i changed it to be
quote unquote the second line is going
to print the name david or whatever the
human's name is and it will move the
cursor to the next line because i didn't
override the value of end there just to
see this more explicitly if you do
something cryptic like well i have no
idea what's going on let me just put in
temporarily three question marks here
we'll see the results of this too let me
go back down to my terminal window run
python of hello.pi what's your name
david and now
you see literally really ugly output but
you see literally what's going on hello
comma space
then three question marks end that print
statement and then you see dav id so not
a good outcome but it demonstrates just
how much control we have here too and
let me rewind further recall that in our
other version of this
when i passed in hello comma and name
they were separated by a single space so
python of hello.pi
david enter that just worked well what
if we override the value of sep for
separator instead of being one space we
could say something like uh question
mark question mark question mark just to
wrap our minds around what's going on
there
let me now do python of hello.pi david
enter and you see two these two inputs
hello comma and the name are now
separated in an ugly way by three
question marks because i've overridden
the default behavior of sep and even
though the documentation uses single
quotes i've been in the habit of using
double quotes in python you can use
either strictly speaking it doesn't
matter but you should be consistent and
i generally always use double quotes
python's documentation though always
uses single quotes
questions now on these types of
parameters and allow me to propose that
we give these an official name up until
now when we've been passing values to
print those are called positional
parameters positional in the sense that
the first thing you pass to print gets
printed first the second thing you pass
to print after a comma gets printed
second and so forth but there's also
these things we've now seen called named
parameters named scp separator or end
end for the line ending those are named
parameters because one they're optional
and you can pass them in at the end of
your print statement but you can also
call use them by name
this may be a weird question but i was
wondering uh what if someone wants to
like add actually
quote quotation marks within the
quotation marks yeah i like how you
think this is what we would call a
corner case right just when we've made
right this is this is all sounding great
at least as programming goes but wait a
minute what if you want to print a quote
that's a really good question well let's
see if we can't figure this out suppose
that i want to print out
not just the user's name let me simplify
this further let me go ahead and get rid
of a lot of this and let me just say
something like hello
um
maybe i'm being a little sarcastic here
hello
friend
you know in that kind of tone well this
is not going to work actually because
you were trying to use quotes to be like
friend in finger quotes but you're also
trying to end the sentence and if i try
running this let's do this python if
hello dot pi you'll see that this is
just invalid syntax perhaps you forgot a
comma and this is actually a bit
annoying sometimes the error messages
you see are misleading like the computer
the language doesn't really know what's
going on so it gives its best guess but
it's not necessarily correct but i can
solve this problem in a couple of ways i
can do this i can change my outermost
quotes to single quotes because recall a
moment again i said you could use double
quotes or single quotes so long as
you're consistent so that's fine if you
use single quotes on the outside you can
then use double quotes on the inside and
you'll see them literally so for
instance if i run python if hello.pi
there we go hello friend
but there's another way if you insist on
using double quotes as you might want to
just to be consistent you can also use
that backslash character again we saw
the backslash n a moment ago and that
meant we don't want a literal n to be in
the output we wanted a new line so the
backslash actually represents what's
called an escape character an escape
character is one that you can't just
type necessarily once on your keyboard
you need to express it with multiple
characters so i can actually put
backslashes in front of these inner
double quotes so that the computer
realizes oh wait a minute those aren't
literal those aren't quotes that finish
or start the thought they're literal
quotes so now let me go back to my
terminal window run python of hello.pi
enter and now it's working as well so
escaping is a general technique that
allows us to do that too
and if i may let me rewind now on these
examples and go back to where we left
off with my code i'm just undoing all of
that because i want to get back to the
point ultimately of specifying now a
final way of solving this problem well
it turns out that we have yet another
way we can solve this problem which is
perhaps the most frequently done now or
at least the most elegant when it comes
to setting us up for longer and longer
uses of strings
you can use a relatively new feature of
python that allows you to do this you
can literally put not the name of the
variable like that in your string
because we already saw this is wrong
right if you do this you will literally
see hello comma name but what if i do
this what if i put curly braces or curly
brackets around the variable's name
notice vs code is actually very subtly
changing the color of it so vs code
knows something interesting is going on
here let me run this program but i'm not
done yet python of hello.pi enter david
enter okay obviously not what i want but
i need to tell python that this is a
special string this is what we're going
to call a format string or an f string a
relatively new feature of python in the
past few years that tells python to
actually format stuff in the string in a
special way and the symbol via which you
do this is a little weird but this is
what the world shows if you put a f
at the beginning of the string
right before the first quote mark that's
a clue to python that oh this is a
special string let me format this in a
special way for you let me now rerun the
program pythonhello.pi enter david enter
and now we see the goal this whole time
hello comma david we don't start with
this way because i think if we did this
the first way you'd be like why are we
doing this what are all these magical
symbols but this is just yet another way
to solve the same problem but let me
propose that we consider now
yet other things we can do with strings
and it turns out that even as we've been
doing
some relatively simple operations here
we've generally been trusting that the
user's going to cooperate and that is to
say that they're going to actually type
in what we want them to type now just
because they type a string though
doesn't mean it's going to look the way
we want you and i honestly as humans are
actually in the habit on websites and
apps of like accidentally hitting the
space bar a lot either at the beginning
of our input or at the end maybe because
the space bar tends to be so big it's
pretty common to get accidental spaces
before or after some user's input you
and i are definitely in the habit of not
necessarily capitalizing words like we
should if we're sending text messages
we're probably being a little quick and
just sending everything in lower case
for instance if that's your style if
your phone's not fixing it for you maybe
in a formal letter you would capitalize
things properly but you and i as humans
can't really be trusted to type things
in a nice way necessarily when using
some piece of software be it an app or
website or something else but it turns
out that strings themselves come with a
lot of built-in functionality and you
can see all of that in python's own
documentation here the string
data type that we've been talking about
comes with a lot of functionality built
in that means that we can manipulate the
user's input to do more than just join
it with something else like hello we can
actually clean it up or reformat it in a
way that hopefully looks a little better
for us so let me go back to my code here
and let me just demonstrate what might
happen if the user doesn't cooperate if
i go ahead here and run python of
hello.pi enter let me just sloppily hit
the spacebar a few too many times why i
just wasn't paying attention and i'm
going to type in my name david and i
don't know i hit the spacebar a couple
more times like it's kind of a mess it's
all lowercase that's not going to
necessarily look grammatically right
it's got spaces here and here the
program is going to print exactly that
and that looks really bad at least if
we're prioritizing aesthetics and
grammar like why are there so many
spaces after the comma this is not a
very nice way to greet your users but we
can clean this up
it turns out that built into strings
which again is this data type so to
speak this type of data in python is the
ability to actually do things to that
string so let me do this i can actually
go ahead and do something like this
uh
name equals name dot strip and what does
this do
remove
white space from string
and what do i mean by this well on the
right hand side notice i've written the
variable name called name
i've then used a period or a dot and
then i seem to be doing what's a
function right anytime we've seen this
function thus far we see it's the the
function's name print or input then we
see a parenthesis then another
parenthesis and that's exactly what i
see here but i'm using this function a
little differently technically this
function is in this context called a
method and what do i mean by that well
if name is a string aka stir well it
turns out according to the documentation
there's a lot of functions that come
with strings in python and you can
access that functionality by using the
name of a string like literally name
here then a period then the name of the
function and then an open parenthesis
and a closed parenthesis maybe some
arguments inside of those parentheses
but in this case it doesn't need any
arguments i just want to strip the space
from the left and the space from the
right of the user's input but that's not
enough i want to remember that i've
stripped off that white space on the
left and the right so i'm going to use
the equal sign again here and notice
that just as before this doesn't mean
equality this means assignment from
right to left so when this line of code
here name.strip
returns to me
aka a return value it will return the
same thing that the user typed in but
with no more white space to the left or
to the white
to the right so then the equal sign
assignment is going to copy that value
from the right to the left thereby
updating the value inside of my name
variable so you can not only assign
values to variables you can absolutely
change the value of variables by just
using the assignment operator the equal
sign again and again and again and it
will just keep copying from right to
left whatever the new value should be so
now if i rerun this program python of
hello.pi
enter
i have david let's do it again space
spacebase space space dav id and all
lowercase space space enter
it's better it hasn't fixed my
capitalization so i'm still being a
little sloppy with the first d but it
has stripped off all of that extra space
super minor detail right like this isn't
all that exciting but it just speaks to
the power of what you can do with just a
single line of code now what else can i
do here well i could capitalize the
user's input let me go ahead and try
this it turns out that i could also
do this name dot
capitalize so let me go ahead and
capitalize uh user's name and again i'm
making comments and there's no one right
way to write the comments i'm just using
some short english phrases here to
remind myself of what i'm doing
what's now going on here well let me go
ahead and run python if hello.pi enter
space spacebase spacebase david space
space enter
okay now it's looking prettier right no
matter how the user typed in their name
even a little sloppily i'm now fixing
that but let's let's try something i'm
getting a little curious here how about
this uh spacebase face-to-face space
david spacemailin i'll use my last name
now enter
okay so ironically capitalize is not
really capitalizing everything we want
it's clearly capitalizing what just the
very first letter so it turns out that
again there's other functions in python
that come with strings and if we poke
around the documentation scrolling
through a url like that i bet we'll find
another solution one of which is
actually this
let's actually change this to title
there's yet another function that come
with strings called title that do title
based capitalization just like a book or
a person's name capitalizing the first
letter of each word and this is just
going to do a little more work for us so
let's go ahead and run this and as an
aside i'm kind of tired now at this
point of typing python python python all
the time it turns out that when using a
command line interface like this you can
actually go back through all of your old
commands what i just did a moment ago is
i hit the up arrow that immediately goes
back through my history of all of the
commands i've ever typed so this is just
a faster way now for rep repeat myself
than typing everything manually let me
go ahead and hit enter
space based basically space dav id
mailing space space all lower case enter
now it's it's looking better now i've
capitalized things and cleaned things up
but what about my code i've got like
eight lines of code now four of which
are comments four of which are actual
code do i really need this much well not
necessarily watch what i can also do in
python let me not bother capitalizing
the user's name separately let me say
this and capitalize
capitalize user's name i can chain these
functions together i can add title to
the end of this and now what's happening
well again with a line of code like this
you first focus on what's to the right
of the equal sign then we'll get to the
left of the equal sign what's on the
right of the equal sign this line here
well what does this mean get the value
of the name variable like david space
m-a-l-a-n
then strip off the white space on the
left and the right that is going to
return a value it's going to return
david space m-a-l-a-n without any white
space to the left or right what do you
want to do with that return value you
want python to title case it that is go
through every word in that resulting
string and fix the first letter of the
first word the first letter of the
second word and so forth and then now we
can finish our thought copy the whole
thing
from right to left into that same name
variable and you know what i can take
this even one step further why don't we
go ahead and do this if we want
let me get rid of all that and let me
just do
strip and title all on that first line
and now we've gone from like eight lines
of code to four
it's a lot tighter it's a lot neater and
even though reasonable people might
disagree it's arguably better
because it's just easier to read fewer
lines of code fewer opportunities for
mistakes it just allows me to move on
with my next
problem to solve
all right let me pause here and see if
there's any questions on these methods a
method is a function that's built in to
a type of value like these functions are
or on f strings which we saw a moment
ago
yes hi thanks david um so is there a way
to remove the spaces between
the spaces that i might have added a
short answer no if you read the
documentation at that same url earlier
you'll see that strip removes from the
left and the right but not in between in
fact there's two other functions that
come with strings one's called l-strip
the other is called r strip that allow
you to do one or the other if we want to
start getting rid of space in the middle
we're gonna have to do a different trick
all together
how many
functions can we combine like this dot
strip dot title you have combined so how
many we can combine yeah a really good
question
technically as many as you want but at
some point your code is going to start
to look really really bad right because
the line of code is going to get really
really long it's eventually going to
maybe wrap around again and again so at
some point you just kind of say like uh
that's too many and you start breaking
it up into multiple lines like i did
maybe reassigning the value to the
variable as needed and this is actually
a good question if i can pivot
off your question i mean what do people
think if we could go ahead and put
everyone's hands down for a moment
let me ask this
is the way i've done this now with strip
and title and input all in the same line
better than my previous approach in zoom
you can use the yes icon or the no icon
if you think this version is better say
yes
if you think this previous version was
better
for instance this one here where we had
everything broken out say no
and then we'll see why in just a moment
i proposed earlier that reasonable
people
can disagree and that's absolutely the
case
doing it one way or the other isn't
necessarily best at least if you can
justify it let me go back to the most
recent version here
all right so we're seeing a lot of yeses
and a lot of no's why don't we go ahead
and call on one of the yeses if we could
someone who's voting yes why do you
think the current version of this code
is indeed better than the previous
longer version of the code
i think it's more readable so i can say
hey this is the name from this is the
name variable
it gets some input and then remove the
space and give it a title and there you
go you have a hello name yeah i think
that's pretty reasonable it's very
readable at least if you're in the habit
as you are in english of reading left to
right it just kind of flows very
naturally as a result the lines is not
really that long it's certainly fitting
nicely onto the screen so i think that's
a good argument how about a counterpoint
though someone who voted no if we could
call on someone who thinks this is worse
because it's not
reliable at all
i seems like uh
a
it's a very long
line so i think it's better to separate
yeah i i think that's persuasive too
right it's getting a little longer and
even though my sentence here what's your
name is relatively short you could
imagine that this could get even uglier
quickly if i were asking a longer
question of the user that's going to
make this line of code even longer and
therefore less readable it might be less
obvious to me or my colleagues that i am
calling strip or that i am calling title
it might be kind of a unexpected
surprise so i think that's reasonable
too in short there is no right answer
here and in fact part of the process of
getting better at programming is getting
your own sense of style or working for a
company where they might prescribe which
way is better than the other because
they just want everyone doing the same
thing even though reasonable people
might uh disagree ultimately though so
long as you have what's a pretty good
argument in favor of one way or the
other like ultimately that's what's
important if you're just doing things
because you don't really know which one
is better that's not great but if if and
when you start to acquire opinions and
if your boss if your teacher if your
colleague your friend can challenge you
and say wait why did you do it like this
they might not agree with you but at
least have an answer and that should be
sufficiently persuasive in general now
strings come with a whole bunch of other
methods as well among which is one
called split which can as the name
suggests split a string into multiple
smaller sub strings so to speak for
instance if the human here is in the
habit of typing in their first name then
a space and then their last name and you
want to go ahead and greet them only by
first name well we could actually
leverage that single space between the
first name and last name and split that
string into two smaller sub strings how
can we do this well let me go ahead and
in between these lines proactively
comment that we're about to split user's
name
into first name and last name and then
let's go ahead and take that name
variable which currently contains
something like presumably david
spacemailin and let me go ahead and call
split and pass in as the argument to
split a single white space thereby
indicating that i indeed want to split
on that character now it turns out
split's going to return a sequence of
values ideally a first name and then a
last name and we can actually in python
assign both of those values from that
sequence at once to some variables for
instance first comma last equals and
that's going to have the effect from
right to left of putting the first such
value in the first variable the second
such value in the second variable so now
on my last line of code i can go in and
say hello not to the full name something
like david malen i can just say hello
comma first all right let's go ahead and
clear my terminal window run python of
hello dot pi and hit enter i won't
bother with any leading white space this
time but let me go ahead and type in
david space malin and crossing my
fingers as usual
hello david is what we now see
all right so we've seen so much so many
examples thus far involving strings but
certainly programs and programming
languages can manipulate other types of
data as well let's go ahead and
transition then to another very common
type of data in python in programming
more generally namely integers otherwise
known in python is int int so just as
stir str is short for string so is int
in python short for integer well what's
an integer well just like in math it's a
number like negative 2 negative 1 0 1 2
and all the way toward negative infinity
all the way toward positive infinity but
there's no decimal point in an integer
it's just a number like negative two
negative one zero one and two onward
that's an int of course in the world of
mathematics there's lots of symbols that
we use and we've seen plus before
although we used it for a different
purpose but python supports these
symbols and more and python allows you
to add numbers together plus subtract
numbers uh multiply numbers divide
numbers and the only one here that might
look a little strange to people or
unfamiliar is this percent sign but it
doesn't mean percent in this context if
you use a single percent sign in a
python program that's actually the
so-called modulo operator the operator
that allows you to take the remainder
after dividing one number by another so
we'll see examples of that before long
but the first four of these are perhaps
quite quite familiar well it turns out
that in python you cannot necessarily
you don't necessarily have to keep
writing code in a file like hello.pi and
then running it in a terminal window one
of the features that many people like
about python is that it supports this
so-called interactive mode like you can
start writing python code and
immediately
execute each of those lines
interactively if especially if you don't
care about saving all of your lines of
code you just want to execute code and
get back some answers so for instance
let me go back to vs code here and let
me close hello.pi and let me click on
the little triangle over here in my
terminal window just to make it much
bigger just temporarily for a moment so
i'm not creating any dot pi file now i'm
just going to run python by itself at my
prompt and you'll see when i do this i
get some cryptic looking output and the
date and time at which the program was
last updated and so forth but i
ultimately get three
triple
uh brackets like this this is the
interactive mode for python so i'm
running the python interpreter and
anytime i type a comma a line of code in
the interpreter it's going to execute it
immediately i don't have to keep running
python again and again it's as though in
the human world if you were standing
next to a human who speaks some other
language and you're just having a
conversation with them back and forth
it's all happening the translation
immediately so what might i do in
interactive mode well i could do
something like one plus one enter that's
actually code right you might not think
of it as code but if you know a bit of
arithmetic and you know
numbers and you know plus that's valid
python code and you can use python
really as a fancy calculator but i could
do other things too if i want to print
to myself hello comma world i can also
print out that line of code there too
hello world so it's interactive in the
sense that the moment you execute a line
of code boom you see the result we're
generally not going to do that because
at least when teaching the language we
tend to want to do things incrementally
and we want you to be able to see where
it is we came from and we want to be
able to try things again and again
especially if we make mistakes but know
that this is indeed a feature of python
this so-called interactive mode but
let's focus for a moment now not just on
that interactivity but really on the
fact that python apparently supports
integers and mathematics and some of
those basic operations and let's see if
we can't make maybe our our own little
calculator so let me go ahead and open
up vs code again and i'm going to shrink
down my terminal window and i'm going to
create a new file called calculator.pi
so to do that recall i can type code
down here and the name of the file i
want to create dot pi enter that gives
me a new tab up top so i have already
closed hello.pi i'm now in calculator.pi
and let's just make a simple calculator
that does some addition for me but i'm
going to do it in a file so that we can
iterate on this and make changes for
better for worse over time let me go
ahead and first declare a couple
variables i'm going to do the
mathematical thing of calling my first
variable x
my second variable y
and then i'm going to give myself a
third variable z equals x plus y and
then i'm going to go ahead and print out
z now this program admittedly not very
exciting or interesting in fact it's a
little less interesting than printing
stuff on the screen like before with
strings but we'll build on this and see
what other features exist in python that
we can leverage so hopefully if python
knows its math as well as i do when i
run python of calculator.pi
i should see hopefully that 1 plus 2
equals
indeed 3. all right so not that
surprising and not that interesting and
honestly this isn't the most useful
program because it's always going to
calculate 1 plus 2 equals 3. let's at
least make this program say a little
more interactive right we already know
from previous examples how we can get
input from the user let's bring back
that input function and let's do this
let me go ahead now and at the top of my
code let's change x to not be the number
one always let's change it to be
whatever the return value is of asking
the user for x and i can use any english
or human language i want here i'm going
to say what's x just like i asked before
what's your name and i'm going to do the
same thing for y i'm going to use input
again but this time change the question
to be what's y
all right at this point i think i'm
going to leave the rest of the code the
same z equals x plus y and then print z
but what's nice now is that i think i
have a nice interactive calculator right
now it's not going to do oneplus 2 all
the time it's going to do whatever the
user types plus whatever the user types
so let's try this let me go ahead and
run the program alright let's do it 1 is
going to be x 2 is going to be y and of
course
everyone in agreement 1 plus 2 equals 3
huh
what's going on
there either your math class misled you
or i have misled you
why don't we call on someone here to see
if you can't help us reason through what
the bug is what's the mistake uh anjali
if i'm saying it right
i think the issue is is that it's
concatenating strings because you use
the plus operator instead of adding
perfect so perfect intuition we've seen
that plus is used a little differently
in the context of strings because it
concatenates that as it joins the two
strings and that seems to indeed be
what's happening here even though the
user typed a number but the interesting
thing here is that when you get user
input because they're using a keyboard
on their mac or pc or their phone it is
always going to be text it might look
like a number but by default it's coming
from the keyboard as a string that is as
text and so how do we go about
resolving this if ultimately we don't
want to treat those inputs as strings we
want to treat them as actual numbers
well we need another function and it
turns out in python that you can convert
sometimes from one type of data to
another type of data for instance from
string to int
by doing something like this let me go
back into my code and let me change x
before adding it to y to be whatever the
integer version of x is plus whatever
the integer version of y is so it turns
out that int is not only a type of data
in python it's also a function and it's
a function that if you pass in an input
like a string so long as that string
looks like a number like one or like two
it will convert it to an actual number
that you can perform mathematics on
instead
so if i now go back to my terminal
window and run python and let me show
you another trick calculator is kind of
a long word it's a little tedious to
type notice what i can do in my terminal
window in a command line interface in
general if i start typing cal for
calculator i can actually hit tab to
finish my thought so auto complete is
possible in a terminal window like this
type the first letter or few letters and
then boom with tab it'll finish your
thought for you or you can go back in
your history like i did with the up and
down arrows let me go ahead and execute
this what's x1 what's x2 and there we go
now we have a general purpose calculator
that's going to support not just
addition of one and two but now any two
integers that the user types and let me
now improve this right we've seen how we
can make improvements to code and i
i don't know if it's gonna necessarily
be better but let's try this
do i really need the z variable
it's worth noting that i'm creating a
variable called c z
and then i'm immediately using it on the
next line of code now that's not that
compelling because if you're creating a
variable and then immediately using it
but never again using it did you really
need to take the time to introduce
another symbol and another variable just
to use it once and only once well maybe
not maybe we don't really need z in this
way maybe i should go and do something
like this
maybe i should get rid of z here
maybe i should change this to be int up
here
change this to be int up here
doing something that's pretty
interesting now even though it's a bit
of new syntax notice that
you can nest functions so to speak you
can put one function
call that is the use of a function
inside of the use of another function so
that the return value of the inner
function
becomes the argument to or the input to
the outer function just like in math if
you have parentheses parentheses
parentheses your teacher probably taught
you to focus on what's inside the
innermost parentheses first and then
work your way out same thing with
programming that's what python is going
to do it's going to look at what's
inside of the parentheses first it's
going to get the answer and then it's
going to pass the return value to the
outermost function so what happens on
line 1 now is that the input function
gets called first then the result of
that quote-unquote 1 becomes the input
to the int function and same on line 2.
the output of what's y
becomes the input to this int function
and now there is no z
i could just do print x plus y and
because i've taken the time to convert
each of those strings to an integer i
think we're okay so let me try this
python of calculator.pi enter 1
and 2
and we're still getting 3. not 12 or not
12 1 2 we're indeed getting 3 and we've
additionally gotten rid of the variable
because we didn't necessarily need it it
seems especially if only using it once
well here too let me put everyone's
hands down for just a moment and let me
ask as before
this version now
which uses int
around the invocations of input and does
not use z
is this better than the previous version
if you want to vote yes go ahead or if
you prefer the old way vote no the old
way i'll undo all of this as we vote
instead looked like this
all right and let me go back to now the
newest version let's take a hand of the
yeses someone who thinks this latest
version is better
i think this way is better because it
allows us to immediately see what the x
and y variables are with
integers and so we know what to expect
from them and also the print argument is
more
intuitive we avoid too much clutter
in the codes
i think those are all good reasons it's
nice and succinct the lines of code are
not very long uh i don't need to know
what z is because it doesn't exist it
just c print x plus y i like that but
someone who prefers the older way where
we did have z and we more explicitly
passed individual variables to the in
function yeah hi uh i think but the
earlier version is better because when
i mean if user input something else
other than
let's say i mean let's say they type one
and two like
so will be it will be easier to debug
this version or the this version here or
the old version
okay that's fair and in fact i'm i'm
being very careful today as best i can
not to mess up i have thus far only
inputted integers when i'm expecting
integers and rows actually pointing to
something we'll come back to in the
coming weeks how do we actually handle
errors what if the user doesn't type in
the number one or the number two or a
number at all what if they type in a
word like cat c-a-t that's not a number
and i bet i can't convert it to an
integer but for today i'm not going to
focus on that i'm just going to hope
that the user cooperates but that's not
going to be the case and so perhaps one
way would set us up for more success
when it comes to handling those errors
now for today's purposes which is better
i mean i like both and i think both of
you made very valid arguments and there
too so long as you have a justification
that feels pretty reasonable i mean
that's what ultimately matters but
acquiring again a sense of the
trade-offs here well is this way better
if so why or why not just understanding
what those trade-offs are but generally
speaking prioritizing readability is a
very good thing making your code
readable for someone else is a very good
thing and very good for you too so that
when you wake up the next morning or you
come back the next week or the next year
you too can read your own code without
having to waste time trying to remember
what you did and simplicity tends to be
a good thing too keeping your code
simple so is as you get more comfortable
with programming you might be tempted to
try to like combine an entire program
into one long line for instance let me
do right just that don't technically
speaking we don't really need x in a
variable we don't really need y in a
variable we could also do this i could
just get rid of x and y altogether i
could then now eliminate that and make
it just one line of code okay so on some
sense you might be inclined to think wow
that's really nice you made it one
simple line of code i would argue this
actually isn't that simple now i think
i'm starting to nest too many things i
have to think about print and int and
input i then have to notice that okay
i've opened two parentheses i've closed
two of them there's a plus you're making
me think too much and anytime you make
me think you're wasting time and any
time you complicate the look of the code
like this you're just going to increase
the probability of mistakes and tactical
mistakes or logical errors in your code
so if all the things we've done this is
the only one that i would argue
yes it's one line and it's nice and
compact it's just not readable enough i
would shy away from doing this
especially since two of those function
calls are getting input from the user
but there too reasonable people might
disagree but that's the kind of like
visceral reaction you should have
sometimes when code starts getting a
little too complicated a little too
clever perhaps for its own good
all right well it's not just integers we
have access to let me propose that we
transition from integers to one more
data type here namely a float
so again a string is a sequence of text
an int is an integer like negative one
zero and one a float is a number with a
decimal point properly called a floating
point value and you can think of the
floating point as being the decimal that
might be over here or over here with
some number of digits to the left or the
right mathematically it's a real number
a number that has a decimal point in it
so that's a third type of data that
python supports right now our calculator
is somewhat naively assuming that the
user is only going to type in integers
but if i want to support floating point
values too i think i can just make a
couple of tweaks so i'm going to go back
to vs code here and instead of just
converting the user's input x and y to
integers on line 1 and 2 let's just make
a simple change let's actually convert
it to a float on the first line and a
float on the second line here now i
think if i go down to my terminal window
and run python of calculator.pi let's
type in a number like 1.2 with a decimal
point and 3.4 with the decimal point and
there we go we have 4.6 as the final
answer so that wouldn't have worked
before if i was only expecting integers
from the user but now that i'm support
expecting floating point values and
accommodating it i can actually now do
floating point arithmetic as well but
suppose that i don't really want the
final answer to be
a floating point value like 4.6 i would
be happy if we just round to the nearest
integer so i want to support the user
typing in floating point values with
decimal points but at the end of the day
i just want to round the result to the
nearest possible integer for instance
well it turns out that here too
python comes with some functionality
built in and in fact if we return to
this url from earlier wherein all of the
python built-in functions are listed
there's one called round which does
exactly as we would expect it takes as
input a number and then rounds it for us
for instance to the nearest digit to the
nearest integer
but if we look a little closer to that
documentation as we can here i'll
provide an excerpt this is what the
function looks like in the documentation
and recall that earlier we looked at the
documentation for print and this is
similar in spirit that this shows us not
just the name of the function but its
available parameters that is inputs that
we can provide when using this function
but this is a little cryptic too just
like prince was and it adds some syntax
so let's see the name of this function
here is of course round and it's first
argument is a number notice this times
there's no star there's no star objects
like there was for print the round
function takes just one number as its
first argument period that's its
positional
parameter but notice this syntax and
this is a convention in programming or
technology more generally
generally speaking when you see square
brackets and documentation like this
this means that you're about to see
something optional and so what this
means is that if you want to specify
more precisely the number of digits that
you want the round function to round to
you can specify it here by adding a
comma and then that number so if we read
the documentation if you don't specify a
number of digits you just specify the
number to round it rounds to the nearest
integer but suppose you want to round to
the tenths place or the hundredths place
that is one or two digits after the
decimal point you could additionally
pass in comma one or comma two to be
more precise so that's what the
documentation there is saying let's see
if we can't then translate this to
some actual code for us so if i go back
now to vs code and i consider that i
want to go ahead and round x and y i can
do this in a couple of ways i could do
round x plus y but
you know i'd actually kind of prefer to
break this now out into two lines i
don't have to and reasonable people here
might disagree but i'd like to revert to
a scenario where i'm printing z so that
i can just a little more clearly to
myself to others say z equals the
rounded result of x plus y it's not
necessarily the better way to do it but
i'm a little more comfortable with
breaking out my thoughts one at a time
especially if i want to start commenting
each of these chunks of code all right
let me go down to my terminal window now
and run python of calculator.pi what's x
let's do 1.2 again
then let's do 3.4 and now it was
previously 4.6 but now it's been rounded
up to the nearest integer which of
course is going to be 5.
all right what if i wanted to
change this a little further what if i
wanted to support maybe really big
numbers big numbers irrespective of
rounding let's just do something like
this
let me go ahead and run python i've
calculated at pi again and let me just
add 999
plus 1 and notice i don't have to type
decimal points even though i'm
converting to float my program will just
allow me to type decimal points but i
don't need to oblige the answer of
course here it should be and is in fact
1000 whether or not we round so that's
just arithmetic with integers here but
in uh the us we tend to format long
numbers by putting commas uh after or
before every triple of digits other
countries flip it and they use periods
and commas instead that's a system
setting you can change that on your own
mac or pc or device for python or any
language but for me i'm using the us
approach here which is periods for
decimal points and commas for separators
what if i wanted this to be outputted as
one comma zero zero zero just to make it
a little more clear that it's one
thousand and not something like one
hundred that's even more useful when
it's like one million one comma zero
zero zero comma zero zero zero wouldn't
it be nice if we could automatically
output those numbers as well well it
turns out that we can there is a way
using python
to actually specify that we want to
include commas like this and here we
have an opportunity to bring back our
old friend the f string
first let me do something that's not
that productive first let me do this let
me print out the value of z but wait a
minute i can't just say quote unquote z
because that's literally going to print
z on the screen so let me wrap it with
those curly braces like i did before but
that too was not enough i literally
needed to add an f at the beginning of
my string to tell python that this is an
f string a format string
that now is going to print out not very
interestingly just the value of z itself
so that i'm going to great lengths just
to print z when really i could have just
passed z as the sole argument but just
to ensure that i haven't broken it let's
do this again 999 plus one enter okay
it's still a thousand so i didn't make
anything worse but notice and this
syntax is unfortunately a bit cryptic
notice that i can actually do this i can
put a colon after the z
and i can put a comma thereafter this
looks very cryptic admittedly and even i
have to constantly look things like this
up in the documentation to remember the
syntax but here let me run it again
python of calculator.pi
999
1 and now notice that the number has
been automatically formatted for me if i
were in a different country or locale i
could absolutely override this to use
periods instead of commas or vice versa
but in this case here it's just
happening for me automatically so there
too we see a hint of what it means to
really format a string there's even more
power more powerful capabilities built
into that
all right let me pause here to see if
there's any questions now on floats
on rounding
or on this use of f strings yes so i
have a question so when using floats um
is it like a cap to how many decimal
points it can have
a really good question so floats yes and
this is a problem we'll revisit before
long floats cannot represent numbers
infinitely precisely in a nutshell
because computers only have so much
memory they only have a finite amount of
memory you and i only have a finite
amount of hardware inside of the
computer so at some point they're going
to have to round right now i'm rounding
automatically effectively computers will
eventually have to do that for us but
we'll see that as a fundamental problem
before long
allow me to turn back just for a few
final examples on float before we
introduce a few final examples that
allow us not just to use functions but
to make our own let me propose that we
also try our hand at a bit of division
here let me propose that we modify this
calculator now to still take a couple of
floats but let's now just do something a
little simpler than
a little different from this just doing
x divided by y and let me go ahead and
get rid of my format string and just
keep it simple for now printing out z
instead and what are we going to see
here well just some simple division so
python of calculator dot pi let's do
something like 2 divided by 3 and of
course i get 0.66666 and to ethan's
question a moment ago it does seem to be
finite it's not rounding in a weird way
here but i only seem to see so many
digits that's a
an inevitability of using a float in
this way by contrast just so you know
integers nowadays in python can be as
big as you want them to be unlike other
languages there is no upper bound on how
big an int can be now in python but
there is a bound on just how precise a
floating point value can be all right
now that i've got some simple division
working here let's go ahead and round
this it would be nice to round this
really long number
0.666666 and so forth to maybe just two
decimal places we've seen how to do this
with round though at least in its
documentation
let's just round this not to the nearest
int by passing in just x divided by y
which is one argument once the math is
done inside of the parentheses i don't
want to pass in just one argument i want
to pass in two so that i can specify n
digits number of digits which recall was
the second parameter for round let me go
ahead and run python of calculator to pi
i'll do the same thing 2 and then 3
0.67 so here too we see a way of
rounding now not just to a nearest
integer but to a nearest number of
digits but there's another way to do
this here and in fact this evokes our
f
f string example again let me go ahead
and change this suppose that you didn't
remember the round function or for some
reason you didn't want to use it you
instead want to just use a format string
well let's go there let me do quote
unquote z but let me surround it with
those curly braces let me add the f at
the beginning and again this is not
interesting yet this is just going to
print out z but i'm adding a lot more
complexity to turn it into an f string
but notice i can do something else after
my variable name after the colon
if this were going to be a big integer i
might want to use a comma like before to
separate each triple of numbers with
commas but i don't i'm going to use a
different sequence
of characters i'm going to say 0.2 f and
this too is one of these very cryptic
things i have to constantly look up
because i forget if i don't use it that
often so don't be intimidated if this
looks especially weird but this is
according to the documentation the way
you specify using an f-string how many
digits you want to print so let me run
this version of the calculator type in 2
and then 3 we get the exact same thing
but again this is just consistent with
my claim that in programming we can so
very often solve the same problem in
multiple ways this is just now the f
string approach
to that very same problem
all right which one is better it depends
in this case they're pretty equivalent
you could imagine though it being useful
to use a function sometimes so that you
can pass in an argument like n digits as
that second argument or you can imagine
just deciding in advance that you want
point two and then
writing it like this
let's transition now from focusing on
strings and on integers and on floats to
focusing now on functions themselves we
began today by focusing on how you can
use functions that come with python but
wouldn't it be nice if you could invent
your own functions especially if to our
point earlier you find yourself solving
the same kind of problem again and again
it's nice that python comes with the
print function because it's really
useful to be able to print things on the
screen but wouldn't it be nice if you
could print specific things on the
screen by just calling your own function
well let me propose that we do this let
me go back to vs code here and let me
propose that we go back to hello.pi i'm
going to reopen hello.pi where we left
it before and i'm going to go ahead now
and propose that we consider how we can
start improving this further by making
our own function i have written so many
programs today that just say hello and
each time i'm using print but wouldn't
it have been nice if from the beginning
of today we could just call a function
called hello that just says hello for us
now the authors of python years ago
didn't think that we need a special
function just to say hello but i would
like that to exist i'm saying hello so
many times i just want to be able to
call a function hello so i'm going to
start from scratch here i'm going to
delete all of my code from earlier and
i'm going to pretend for the moment that
a function called hello exists
and i'm going to do just as i did before
i'm going to get the user's name with
the input function asking what's your
name question mark
and now i'm going to call a function
hello
and then i'm going to print out the
user's name
now i will admit hello doesn't exist so
bad things are about to happen but let's
see what let me go down to my terminal
window let me run python of hello.pi
i think the first line is going to be
okay because that worked before and
indeed it's prompting me for my name so
let me type in david the second line of
code is apparently calling a function
that looks like it's called hello
because why is it a function it has a
parenthesis and a closed parenthesis
immediately after it and that's what
every function we've used has looked
like but python's not going to recognize
this one when i hit enter now i get a
name error name hello is not defined did
you mean help
i didn't although it's opportune that's
what i need at this point is some help
but i
am encountering this error because why
the function just doesn't exist so how
do i make this function exist well i
need to create it myself using this
keyword
def
def for define so here too just as stir
is short for string and into short for
integer def is short for define
if and when you want to define create
invent your own functions you can do so
using now this keyword in python so let
me go back to my code here and let me
propose that we define this perhaps in
this way
at the very top of my file i'm going to
first take a moment to define a function
called hello using def
hello open parenthesis close parenthesis
colon
what this means now is that python is
going to treat every line of code that i
indent underneath this one as the
meaning of this new function hello
so def is important as is the space i
get to choose the name of the function
and i'm choosing to call it hello the
parentheses with nothing inside means
that this function at the moment is not
going to take any inputs no arguments
there too the colon means stay tuned for
some indentation everything that's
indented beneath this line of code is
going to be part of this function it's
going to be a super short function one
line of code it's just going to print
out quote unquote hello
but now on lines one and two i have
invented my own function
hello notice these dots that have now
magically appeared here this is just a
setting of my text editor vs code in
this case that's just making super
explicit to me that i've hit the space
bar four times or equivalently the tab
key once which is converted
automatically to four spaces generally
speaking i'm going to need to make sure
that all of my indented code lines up
now so that python knows that it's all
part of the same thing but it's easy in
this case because it's just a single
line but now thanks to lines one and two
the function hello will absolutely exist
when i'm ready to use it on line six so
let me go down to my terminal window and
run python of hello.pi enter
here comes my name again and now when i
hit enter i now see hello david all
right we've kind of regressed though
right this is not nearly as pretty as it
once was i think we can probably do
better than this by improving things
further why don't we consider though how
we might
say parameterize the same function that
is to say can we customize hello to
maybe take the user's name as input so
that we can say not only hello but the
person's name all on one line all in one
breath well i think we can do this let
me propose that we do this as follows
let me go ahead and up in my code let me
inside of these parentheses let me come
up with my own parameter name i have
complete choice here and i'm going to
say that the name of my parameter will
be the word to
why because i want my function to sound
like the verb
it represents hello but who do you want
to say hello to well i'm going to call
my parameter for this function 2 just
because in english it kind of sounds
nice to me hello to who do you want to
say hello to that's why i'm calling this
parameter 2 instead of something simpler
like x or y or z
all right well what do i want to do with
the word two well i can do a couple of
different things we've seen like so many
different ways to implement hello let me
just add a comma there for grammar sake
and then let me put the word to
after that as the second argument to the
function hello there's other ways we can
do this and we've seen so many but this
one looks a little clear to me i'll say
what's going to happen next well i don't
think i need this extra print line here
i think what i'm going to do is this i'm
going to go ahead here and print out
not the person's name manually i'm going
to sense instead say hello
parentheses name
so what am i now doing on lines 1 and 2
i'm defining my very own function called
hello but this time that function has
been designed to take a parameter a
single parameter as input and i'm using
the value of that parameter which i
called 2 to plug into print so that i
see not only hello but also that
person's name what am i doing on line 5.
same as always i'm just getting the
user's name line six i'm not only
calling hello i'm passing as input the
name variable as an argument
so that that's what gets passed into
hello and what's happening here is
essentially this even though the
variable is called name here when the
function itself is called the computer
assumes that that same value is now
called to
so name is essentially copied to another
variable called to
so that in the context of hello i can
say hello to
that variable instead
and we'll see in a moment what happens
if we don't keep those uh straight let
me go ahead and run python if hello.pi
enter what's your name and now i'm
crossing my fingers enter there we go
we're back in business but now i have my
own custom function called hello that's
allowing me to say hello to a specific
person and here's where now things can
get really fancy what if you wanted your
hello function to say hello to someone
specific but you know what if you don't
know who you want to say hello to you
want to say hello to the whole world you
can give parameters default values we've
seen that recall that with print there
was a default value for sep for the
separator there was a default value for
end the line ending we can do that too
and here's the syntax if you want the
value of this parameter
by default if not provided by the
programmer to be equal to quote-unquote
world you literally do that
in the same line you're defining the
function and i'll admit it's starting to
look more cryptic but i'm still just
defining a function called hello it
takes a parameter called 2 but i'm
assigning it with the equal sign a
default value of quote-unquote world
just in case the programmer doesn't call
hello with an argument and we can see
this here let me change my code to use
hello in two ways on line five i'm gonna
very simply call hello no arguments then
on line six i'm going to get the name
line seven i'm going to call hello with
an argument so you'll see hello now
being used in two ways let me go ahead
and run pythonflo.pi
i'll type in my name oh interesting
notice i already see hello world but
that's expected because line five
happens before line six but once i type
my name now the program is going to be a
little more polite and say hello to me
personally
so there too we see with relatively
simple but new syntax how you can
implement functionality very similar in
spirit to what the print function gave
us automatically now you have control
over doing that yourself
but let me now make this point too one
of the whole points of defining your own
functions is one just to avoid having to
repeat yourself again and again you
don't have to actually keep reinventing
the wheel and keep using the print
function again and again and again if
you just want to say hello wouldn't it
be nice now if i could kind of move this
code that i wrote for defining the hello
function and just to be dramatic i'm
going to hit enter a whole lot of times
50 lines down and put my definition of
hello way further down in this file why
well just from the spirit of out of
sight out of mind because if i now
rewind to the start of my program now
you can sort of take for granted that oh
hello is a function y because it's there
on line one and it has an open
parenthesis and a closed parenthesis
which up until now has meant call this
function and then on line two we're
getting a variable from the user by
typing in their name and then we're
calling hello passing in that value well
at this point i can just take for
granted that hello exists even if it's
way down further in the file or as we'll
see in future weeks even if it's in a
different file altogether but there's a
problem here and let me go ahead and run
this version of hello dot pi
notice that as soon as i run the
interpreter python of hello.pi i see a
name error name hello is not defined
again did you mean help well again
fitting i do need some help here but i
didn't mean to call the function help
the problem here though is that python
is just taking me literally i have
defined my function hello all the way
down here but i'm trying to use it way
up here and that's not allowed python's
interpreter is going to take you
literally and if you use a function it
must already exist by the time you are
calling it so how do i fix this well
apparently i can't do that i have to
define any functions i want at the very
top of my file but that too could get me
into a bit of trouble eventually because
if i constantly have to define a
function above where i want to use it
you're kind of writing code in reverse
you're constantly writing functions up
here up here up here as opposed to like
writing your code logically top to
bottom so let me fix this in a more
standard way which is to do this
generally speaking you do want to put
the main part of your code at the top of
your file and in fact i'm going to go so
far as to define my function called main
it's not a requirement but it's indeed a
convention and this just connotes to the
reader that this is the main part of my
program i'm going to get rid of my empty
hello call now and only pass in one
version with hello name and then down
here a couple lines further down i'll
actually define my hello function
unfortunately now that i've reordered
the functions in this way by putting the
main part of my code at the top and
hello at the bottom so that my logic
kind of flows top to bottom if i go
ahead and run python of hello.pi enter
nothing whatsoever happens if i do it
again nothing whatsoever happens well
why in the world is this well just
because i've defined a function called
main and i've defined a function called
hello doesn't mean that i've actually
called that is used either of them yes
i'm using hello inside of main but no
one is telling python to actually use or
call main so in order to tidy this up
the last thing i need to do in this file
it seems is actually call my main
function and in fact by calling my main
function in this way it gets me out of
trouble because now i'm defining main
first but i'm not calling hello yet i'm
defining hello next but i'm not calling
hello next i only at the very end of
this file call main
which has the effect of running this
code up here which has the effect of
running this code down here and it
allows me therefore to organize my file
and order my functions in any way i want
including main at the very top
and solving ultimately that problem of
python not knowing what's going on now
it's important to note that i defined my
function hello as taking an argument too
and then i passed into that function the
value of the variable that i wanted to
say hello to that is the variable called
name because suppose i had done
something a little bit differently
suppose that i hadn't defined hello as
taking an argument so i just remove
mention of two and its default value
help world and i go back up to my main
function and i just call hello itself
without passing in any argument and now
let me go ahead and make one more change
one more mistake technically let me go
ahead and just try to naively print out
the value of name in the hello function
so now to be clear in my main function
on line two i'm defining my variable
called name and assigning it the return
value of the input function from the
user i'm then just calling hello in my
hello function which now no longer takes
any arguments i am calling print passing
in hello comma and then immediately
passing in name the variable into which
i got the user's input but the catch is
that name exists now only in main and so
watch what happens when i try to run
this version of the program with python
hello.pi i hit enter i'm prompted for my
name david enter and ah a name error
name name quote unquote is not defined
so it turns out that this is actually an
issue of what's called scope scope
refers to a variable only existing in
the context in which you defined it so
insofar as i define this variable name
in my main function i can only use that
variable in my name function i can't use
it as i've tried to here in my hello
function it doesn't exist in that
so-called scope and so this is why now
if i rewind and undo all of those
changes you'll see that i'm deliberately
passing main from my main function into
my hello function and now in the hello
function it technically has a different
name it's called 2 in that context but
that's fine it's completely up to each
individual function to name its own
variables or name its own arguments but
this is a way now that i'm handing to
the hello function the value of that
variable so it can be printed by hello
as well
and there's one final flourish we can
add here
now that we've implemented hello you'll
notice that hello only has a so-called
side effect it only prints out something
to the screen well what if i also want
my function
to not have a side effect per se but
actually hand me back a value recall
that the input function returns a value
the string that the user typed in recall
that the int function returns a value
the float function returns a value that
was passed into it well you can use one
final keyword here literally return to
return a value explicitly yourself in
fact let me go back to vs code here and
i think we'll return our attention to
calculator.pi and see if we can't
implement one other version of
calculate.calculator.pi
that actually has our own function that
even returns a value so i'm going to go
ahead and open up
calculator.pi
and i think this time i'm going to throw
everything away as before and i'm just
going to start practicing what we're
preaching here
define a function called main which is
now going to be the main part of my
function let's go ahead and now declare
a variable called x and assign it to the
converted version of the user's input
after asking them what's x so again a
line of code quite like we've done
before and suppose now that what i want
to do is square this value i want to
take the number that the users typed in
and raise it to the power of two so two
squared would be four three squared
would be nine four squared would be
sixteen and so forth well how do i go
about implementing a function literally
called square which actually doesn't
come with python built in well let me
assume for the moment that it does exist
and let me say something like this
let me go ahead and say that
printing how about
x squared is
comma square of x
so what have i done i've defined a
function called main and i've
implemented two lines the first of these
lines prompts the user for a value x and
converts it to an int and stores it in a
variable called x on line three i then
say x squared is and then i pass a
second argument to the print function
whatever the return value is of a square
function but square doesn't exist and
i'll show you this here if i now call
main at the bottom
and i run python of calculator.pi
i'll see that x is 2
and then i see a whole bunch of errors a
name error name square is not defined so
this isn't a typo here it's just the
function doesn't exist but i think i can
make it exist here let me go ahead and
define another function called square
this one's going to take in a number and
i'm going to call it generically n as
many a programmer would just to
represent any old number and then what
do i want to do in order to square n
well a number squared is really just
itself times itself so i'm going to do
this n times n but it's not enough just
to do the math yourself n times n you're
going to have to return the actual value
n times n and that's our new keyword
here when i now do this watch what
happens python of calculator dot pi
enter x say shall be 2
x squared is 4. let me go ahead now and
say
x is now 3 x squared is now 9. so i've
implemented my very own function that
returns the square of a value and
because i'm using the return keyword
that ensures that i can pass the return
value of this just like the return value
of input or int or float
to another function like print instead
and here too there's going to be so many
ways to solve the same problem i can
actually raise n to the power of two
we've not seen the syntax before but if
you use stu two asterisks like this two
stars that raises the thing on the left
to the power on the right or it turns
out there is in python a function called
pow for raising something to the power
that takes two arguments the first of
which is the number the second of which
is the exponent so there too there's
just so many ways to actually solve
that same problem as well
so ultimately what we have we done here
we first introduced functions these
actions are verbs many of which come
built into python that you can just use
in your own code we then introduced
variables by which you could store those
return values and then maybe do
something more with it at the end of the
day too you now have the ability to
create to invent your own functions to
solve simple problems like hello or in
the weeks to come much more
sophisticated more challenging more fun
problems as well
UNLOCK MORE
Sign up free to access premium features
INTERACTIVE VIEWER
Watch the video with synced subtitles, adjustable overlay, and full playback control.
AI SUMMARY
Get an instant AI-generated summary of the video content, key points, and takeaways.
TRANSLATE
Translate the transcript to 100+ languages with one click. Download in any format.
MIND MAP
Visualize the transcript as an interactive mind map. Understand structure at a glance.
CHAT WITH TRANSCRIPT
Ask questions about the video content. Get answers powered by AI directly from the transcript.
GET MORE FROM YOUR TRANSCRIPTS
Sign up for free and unlock interactive viewer, AI summaries, translations, mind maps, and more. No credit card required.