Class 21 — Monday October 12
You are so controlling
While I can go on – I do not repeat myself – Always a new way
Look both ways
Agenda
- Introduce
while
statement
- Introduce
dict
To do
- Examine artifacts
- Examine
dict
module documentation
- Examine
collections
epistle
Redownload
- Module url.py
Examples
- Program guess_what.py
- Program even_odd.py
- Program romantic.py
- Program unromantic.py
- Program good_doggie.py
Maxims (among others)
- Read the problem in its entirety before problem solving
- Determine for yourself why the sample problem solutions are as they are
- Problem solve before you code
- Check whether your solution produces the same answers as the sample runs
- Check whether your solution matches problem specifications
For your consideration
- How would you handle the problem of getting a yes or no reponse from a user, where case of the letters do not matter. Once gotten, the valid response is echoed (printed).
- Brainstorming
- Do we know ahead of time, how many often we need to loop?
- Are there action(s) that need to be done multiple times?
- Are there action(s) that need to be done once?
- Some possible runs
Enter (yes / no): YES
yes
Enter (yes / no): No
no
Enter (yes / no): yeah
Enter (yes / no): yeap
Enter (yes / no): tá
Enter (yes / no): כן
Enter (yes / no): ndiyo
Enter (yes / no): haan
Enter (yes / no): YeS
yes
Enter (yes / no): nah
Enter (yes / no): không
Enter (yes / no): nope
Enter (yes / no): aʻole
Enter (yes / no): ei
Enter (yes / no): NO
no
Whiling away
- Like many programming languages, Python provides more than one way to iterate actions (repeatedly execute). We are concerned here with its
while
looping offering.
- The
while
loop differs from thefor
loop in that the number of times it iterates is not based on the size of a list or range; instead, iteration is based on a logical test expression.
- The basic
while
state has the form:
while ( test expression ) :
action
- When Python reaches a
while
loop, it will repeatedly execute the loop's actions as long as the test expression evaluates to true. When the test expression evaluates false, the program drops down to the statement following the loop. For example, consider yes_or_no.py
looking_for_a_yes_or_no = True
while ( looking_for_a_yes_or_no == True ) :
reply = input( 'Enter (yes / no): ' )
reply = reply.lower()
if ( reply in [ 'yes', 'no' ] ) :
looking_for_a_yes_or_no = False
print( reply )
- FYI: Python is one of the languages whose
while
statement also allows an optionalelse
. Theelse
action is executed once the test expression evaluates to false.
while ( test expression ) :
action
else :
action
Problem guess_what.py
- Play a guessing name with the user. The program is to determine what number the user has guessedl, where the possible numbers are from 0 to 100,000.
- Brainstorming
- How would you solve the problem if you were the guesser?
- Can we do this with a
for
loop? If, so what are some possible ways?
- Can we do this with a
while
loop? If, so what are some possible ways?
Problem romantic.py
- Get a roman numeral and determine its integer equivalent
Some program runs
Enter Roman numeral: V
5
Enter Roman numeral: d
500
Enter Roman numeral: 0
Unknown
Problem unromantic.py
- Get a word and print its English equivalent
Some program runs
RecursionError: maximum recursion depth exceeded during compilation
Discussion
- Repeat the word carrot ten times out loud
- The human brain is great with associations; e.g., we typically associate apple with red and January 1st with New Year's Day.
- A
dict
is Python's software equivallent of a collection of associations.
- In particular, a
dict
is unnordered collection of associations.
- The elements of
dict
are called mappings. A mapping associates one object (called the key) with another object (called the value).
- The literal for an empty
dict
is{}
.
- A literal mapping is written using the
:
to separate the key with its value. For example, the variableflora_to_color
defined below is adict
that associates flora with colors.
flora_to_color = { 'spruce': 'green', 'apple': 'red', 'shamrock': 'green',
'banana': 'yellow', 'potato': 'brown', 'eggplant': 'purple' }
- The
len()
function works on adict
. For example,len(
flora_to_color
)
is 6, because the definition offlora_to_color
specified six mappings.
- The brackets
[]
operator in conjunction with assignment can be used to put a mapping into adict
. For example, the statement below adds the mapping'lemon'
to'yellow'
.
flora_to_color[ 'lemon' ] = 'yellow'
- The keys of a
dict
are always distinct. So, the following statement
flora_to_color[ 'potato' ] = 'golden'
would cause
flora_to_color
to lose its association of mappingpotato
tobrown
— its only associaton with'potato'
is togolden
.
- As our
flora_to_color
example shows, the values of adict
are not necessarily unique.
- Python
dict
's have functionskeys()
andvalues()
for getting a hold of keys and values.
the_keys = flora_to_color.keys()
the_values = flora_to_color.values()
While there are never any duplicates in the keys, depending upon the dictionary there may be duplicates in the values.
- Other information about
dict
objects are listed below. In the below, assume thatd
is adict
.
d.get(k)
returns the value that keyk
maps to ind
. If there is no such value, returnsNone
.
d[k]
returns the value that keyk
maps to ind
. If there is no such value, an exception occurs.
(k in d)
indicates whetherk
is a key value ind
.
(k not in d)
indicates whetherk
is not a key value ind
.
d.clear()
removes all mappings ind
.
del d[k]
removesk
’s mapping ind
.
- Information on a
dict
is always available in the module documentation section of the website.
- Additional information on collections is in general is available in the collections epistile.
Problem even_odd.py
- Introduce the Python
dict
data structure
Some program runs
Enter a number: 3
3 odd
Enter even or odd: even
a number is even if its remainder divided by 2 is 0
Enter a number: 6
6 even
Enter even or odd: odd
a number is odd if its remainder divided by 2 is 1
Problem good_doggie.py
- For a series of dog information requests, the program reports what it knows about the dog.
- Its dog information data source is located at URL
- Brainstorming
- How should we store the dog information?
- How do we get and store the input?
- How many times do we set up the dog information
- What times of loops do we need?
- Sequential
- Nested
- Mixture of nested and sequential
© 2020 Jim Cohoon | Resources from previous semesters are available. |