```
WEEK06: indefinite (while) loops, more functions...
---------------------------------------------------------------
W: more while loops, functions

ANNOUNCEMENTS:
- quiz this Friday...functions!
- lab 6 (typing tutor) due THURSDAY after break

REVIEW:

- main loop from guessing game:

num = randrange(1,11)
user_guess = input("--> ")
while num != user_guess:
print "nope...try again."
user_guess = input("--> ")

print "G A M E  O V E R\n"

- and here's another way to write that, using while TRUE construct:

num = randrange(1,11)
while True:
user_guess = input("--> ")
if user_guess == num:
print "You got it!"
break
else:
print "nope...try again."

print "G A M E  O V E R\n"

more WHILE LOOPS practice:

- can you write this program to simulate flipping a coin
until we get 100 HEADS?

\$ python coinflip.py

I'm going to flip a coin over and over. I'll stop

flip:   1   result: Tails   numbers of heads so far: 0
flip:   2   result: Tails   numbers of heads so far: 0
flip:   3   result: Heads   numbers of heads so far: 1
flip:   4   result: Tails   numbers of heads so far: 1
flip:   5   result: Heads   numbers of heads so far: 2
flip:   6   result: Tails   numbers of heads so far: 2
flip:   7   result: Heads   numbers of heads so far: 3
flip:   8   result: Heads   numbers of heads so far: 4
flip:   9   result: Heads   numbers of heads so far: 5
flip:  10   result: Heads   numbers of heads so far: 6
...
and so on...
...
flip: 208   result: Heads   numbers of heads so far: 97
flip: 209   result: Heads   numbers of heads so far: 98
flip: 210   result: Heads   numbers of heads so far: 99
flip: 211   result: Tails   numbers of heads so far: 99
flip: 212   result: Heads   numbers of heads so far: 100

ANOTHER ONE:

- imagine we have a program that uses lots of menus (like the
adventure game). Sometimes the choices are from 1-3, other times
they might be 1-4 or more:

What would you like to do??

1. Start your CS homework
2. Go to the library
3. Poke the dragon

---> 0

Error..please enter an int from 1 to 3!!

- it would be nice to have a general function that gets an integer
from the user and checks to make sure it is valid. If it *is* valid,
return the integer. If not, give the user another chance (hint: use
a WHILE loop!)

- write a function, getIntInRange, that gets *and* checks
an input from the user. If the user enters an integer that
is in the correct range (like 1-3 below), return the integer.
If the user enters an invalid integer, tell them and ask
again.

\$ python getIntInRange.py

What would you like to do??

1. Start your CS homework
2. Go to the library
3. Poke the dragon

---> 0

Error..please enter an int from 1 to 3!!

---> 44

Error..please enter an int from 1 to 3!!

---> 3

Your hair is now on fire.

Here's an example of how you might call this function
from a main program:

choice = getIntInRange(1,3)
if choice == 1:
print "\nSuper!! You get an A+!!\n"
elif choice == 2:
print "\nOK...have fun.\n"
elif choice == 3:
print "\nYour hair is now on fire.\n"

So getIntInRange() does the getting and the checking,
and only returns when it has received valid input from the user.

BONUS: make your getIntInRange() function work (not crash) no matter
what the user enters...

You are in a dimly lit computer room. A lab that is worth
50% of your grade is due in 4 hours. What do you want
to do?

1 Start work on your lab
2 Go play ultimate frisbee with your friends
3 Take a nap on the CS couches

---> hello                       # strings don't crash it
please enter an integer from 1 to 3
---> -4
please enter an integer from 1 to 3
---> 1
-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-

An evil ninja offers you all of the solutions
to the lab that's due in 3 hours. What do you want to do?

1 Take the solutions and thank her
2 Ignore her and keep working on your CS homework
3 Take a nap on the CS couches
4 Go watch videos on the internet

--->     2                       # even leading spaces don't cause problems

Congratulations!! You finish your homework on time
and get an A in the class.

```