The syntax f or this f unction def inition includes the name, square , and a parenthesized list of f ormal
parameters. For this f unction, n is the only f ormal parameter, w hich suggests that square needs only
one piece of data to do its w ork. The details, hidden inside the box, simply compute the result of n**2
and return it. We can invoke or call the square f unction by asking the Python environment to evaluate it,
passing an actual parameter value, in this case, 3 . Note that the call to square returns an integer that
can in turn be passed to another invocation.
We could implement our ow n square root f unction by using a w ell-know n technique called New tons
Method. New tons Method f or approximating square roots perf orms an iterative computation that
1 n
converges on the correct value. The equation newguess = 2 (oldguess + oldguess ) takes a value
n and repeatedly guesses the square root by making each newguess the oldguess in the subsequent
n
iteration. The initial guess used here is 2 . Listing 1 show s a f unction def inition that accepts a value n
and returns the square root of n af ter making 20 guesses. Again, the details of New tons Method are
hidden inside the f unction def inition and the user does not have to know anything about the
implementation to use the f unction f or its intended purpose. Listing 1 also show s the use of the #
character as a comment marker. Any characters that f ollow the # on a line are ignored.
Lis ting 1
def squareroot(n):
root = n/2 #initial guess will be 1/2 of n
for k in range(20):
root = (1/2)*(root + (n / root))
return root
1 of 2
1.12. Defining Functions Problem Solving with Algorithms and
6/11/17,
Dat... 2:47 PM
>>>squareroot(9)
3.0
>>>squareroot(4563)
67.549981495186216
>>>
Se lf Che ck
Heres a self check that really covers everything so f ar. You may have heard of the inf inite
monkey theorem? The theorem states that a monkey hitting keys at random on a typew riter
keyboard f or an inf inite amount of time w ill almost surely type a given text, such as the
complete w orks of William Shakespeare. Well, suppose w e replace a monkey w ith a Python
f unction. How long do you think it w ould take f or a Python f unction to generate just one
sentence of Shakespeare? The sentence w ell shoot f or is: methinks it is like a w easel
Youre not going to w ant to run this one in the brow ser, so f ire up your f avorite Python IDE. The
w ay w ell simulate this is to w rite a f unction that generates a string that is 27 characters long
by choosing random letters f rom the 26 letters in the alphabet plus the space. Well w rite
another f unction that w ill score each generated string by comparing the randomly generated
string to the goal.
A third f unction w ill repeatedly call generate and score, then if 100% of the letters are correct
w e are done. If the letters are not correct then w e w ill generate a w hole new string.To make it
easier to f ollow your programs progress this third f unction should print out the best string
generated so f ar and its score every 1000 tries.
2 of 2