ISYS90088
Introduction to Application
Development
Contd. from Week 4 lectures – for using the
range function
Week 5 lectures –nested for, while; formatting
Department of Computing and Information Systems
University of Melbourne
Semester 2 , 2018
Dr Antonette Mendoza
1 sem
2
2018
2
Objectives
• For and nested for statement
• While statement
• Examples
• Formatting and examples
sem
2
2018
Loops in Python
• Python programming language provides following types of
loops to handle looping requirements.
• Types of loops:
Ø for loop: Executes a sequence of statements multiple times
and abbreviates the code that manages the loop variable.
Ø while loop: Repeats a statement or group of statements while
a given condition is TRUE. It tests the condition before
executing the loop body.
Ø nested loops: can use one or more loop inside any another
while, for or while loop.
sem
2
2018
3
sem 2 2018 4
Executing a Statement a Given Number
of Times using the range function
• The form of this type of loop is:
loop header
statements in body must be indented and aligned
in the same column
loop
body
sem 2 2018 5
Traversing the Contents of a Data
Sequence
• range returns a list
sem 2 2018 6
Executing a Statement a Given Number
of Times (continued)
• Example: Loop to compute an exponentiation
for a non-negative exponent
• The variable product is called an accumulator
• If the exponent were 0, the loop body would not
execute and value of product would remain as 1
sem 2 2018 7
Count-Controlled Loops
• Loops that count through a range of numbers
• To specify a explicit lower bound:
sem 2 2018 8
Count-Controlled Loops (continued)
• Example: bound-delimited summation
sem 2 2018 9
Loop Errors: Off-by-One Error
• Example:
Loop actually counts from 1 through 3
• This is not a syntax error, but rather a logic
error
sem 2 2018 10
Specifying the Steps in the Range
• range expects a third argument that allows you
specify a step value
• Example in a loop:
sem 2 2018 11
Loops That Count Down
• Example:
sem 2 2018 12
Quiz
1. Write the output of the following loops:
a. for count in range(5)
print(count +1, end= ” “)
b. for count in range(1, 4):
print(count)
c. for count in range(1, 6, 2):
print(count)
d. for count in range(6, 1, -1):
print(count)
Nested for
loops
Syntax for nested for:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
Nested for
loops
#simple example to illustrate the nested for
n = int(input(‘enter a number:’))
for i in range(1,n):
for j in range(1,n):
print (i, j)
print(“good bye”)
Nested loops – when do we use it?
Example: For every word (in a list), look at
every character in that word. This construct
might look like this:
listofWord = [‘cat’, ‘dog’, ‘fish’]
for word in listofWord:
for letter in word:
< do something....>
sem
2
2018
15
Examples: A simple nested for loop
“””
Example of code that draws out the following: say n = 5, then your drawing
will look like:
#
##
###
####
#####
“””
symbol = ’#’
number = int(input (‘enter a number:’))
for x in range(1, number+1):
s = “#”
for y in range(x-1):
s += symbol
print (s)
sem
2
2018
16
Examples:
A
simple
nested
for
loop
Example code that checks whether numbers between 1 and 10 are prime.
##
to
calculate
if
a
number
is
prime
or
not
for num in range(1,10): #to iterate between 1 to 10
for i in range(2,num): #to iterate on the factors of the number
if num%i == 0: #to determine the factor
print (num, ‘is not prime’)
break
else:
print (num, ‘is a prime number’)
• Try
doing
this
using
a
while
as
home
work!!!!!
sem
2
2018
17
sem 2 2018 18
Conditional Iteration: The while Loop
• The while loop can be used to describe
conditional iteration
– Example: A program’s input loop that accepts
values until user enters a ‘sentinel’ that
terminates the input
sem 2 2018 19
Structure and Behavior of a while Loop
• Conditional iteration requires that condition be
tested within loop to determine if it should
continue
– Called continuation condition
– Improper use may lead to infinite loop
• while loop is also called entry-control loop
– Condition is tested at top of loop
– Statements within loop can execute zero or more
times
sem 2 2018 20
Structure and Behavior of a while Loop
data is the loop control variable
sem 2 2018 21
Structure and Behavior of a while Loop
(continued)
sem 2 2018 22
Count Control with a while Loop
For
loop
Same
task
–
but
with
a
While
loop
Nested
while
sem
2
2018
23
Syntax for nested while:
while
while
statement(s)
statement(s)
sem 2 2018 24
The while True Loop and the break
Statement
• while loop can be complicated to write
correctly
– Possible to simplify its structure and improve its
readability
sem 2 2018 25
The while True Loop and the break
Statement (continued)
• Alternative: Use a Boolean variable to control loop
break statement
• It terminates the current loop and resumes execution at the
next statement
• The most common use for break is when some external
condition is triggered requiring a hasty exit from a loop. The
break statement can be used in both while and for loops.
• If you are using nested loops, the break statement stops the
execution of the innermost loop and start executing the next
line of code after the block.
Syntax:
break
sem
2
2018
26
break
statement
Example
sem
2
2018
27
Example: try writing a for loop for
this while
28
Example:
This
code
checks
whether
a
word
contains
digits
or
not.
word = input(‘enter a word:’)
found_digit = False
i = 0
while (not found_digit) and i < len(word):
if word[i].isdigit():
found_digit = True
print("The word contains digits!")
i = i + 1
if not found_digit:
print("The word does not contain digits!")
sem
2
2018
29
When to use : for and while loop
Simplest way to differentiate between the for and the while:
• we usually use for when there is a known number of iterations,
and use while constructs when the number of iterations in not
known in advance.
• while loops are slightly "fiddlier" than for loops, in that we need
to set up a test in the while condition, and make sure to update
the variable in the test appropriately in the body of our code.
• In programming, "fiddlier"/more lines of code tends to correlate
with "greater margin for error", and as such for loops should be
your default choice.
• expect/aim to use for much more than while.
sem
2
2018
Formatting for output
sem
2
2018
30
31
Formatting Text for Output
• Use formatting when we need output that has
tabular format
• Field width: Total number of data characters &
additional spaces for a datum in a formatted
string
– This version contains format string, format operator
%, and single data value to be formatted
– To format integers, letter d is used instead of s
• To format sequence of data values:
32
Formatting Text for Output (continued)
• When the field width is positive, the datum is
right justified
• When the field width is negative, the datum is
left justified
• If the field width is less that or equal to the
datum’s print length in characters, no
justification is added.
sem
2
2018
Examples
sem
2
2018
33
34
Formatting Text for Output (continued)
• To format data value of type float:
where .
• Examples:
sem
2
2018
35
Formatting Text for Output (continued)
• Examples:
Note:
the
width
includes
the
place
for
the
decimal
point
sem
2
2018
Formatting: Quiz
>>>amount = 24.325
>>>print(‘your salary is $%0.2f’ % amount)
>>>print(‘The area is %0.1f’ % amount)
>>>print(‘%10.4f’ % amount)
>>>print(‘%.5s’ % (‘tropical’))
>>>print(‘%5s’ % (‘tropical’))
>>>print(‘%5s’ % (‘trop’))
36
sem
2
2018
Example : formatting quiz
• Write a code segment that displays the values
of the integers x, y, z on a single line, such that
each value is right-justified in six columns.
• Then try the same as above but left justified
• Then try out the same as above but with the
values of x, y and z printed on separate lines
37
sem
2
2018
Example
:
formaLng
• Write a code segment that displays the values of the integers x, y,
z on a single line, such that each value is right-justified in six
columns.
>>>print(“%6d%6d%6d” % (x, y, z))
• Then try the same as above but left justified
>>>print(“%-6d%-6d%-6d” % (x, y, z))
• Then try out the same as above but with the values of x, y and z
printed on separate lines
>>>print(“%6d\n%6d\n%6d” % (x, y, z))
>>>print(“%-6d\n%-6d\n%-6d” % (x, y, z))
(check
out
many
more
examples
on
LMS)
sem
2
2018
38
Formatting multiple values
Syntax:
print (
Note:
same
number
of
formaLng
specifiers
as
values
are
needed
for
formaLng
>>>val1 = 6.7891234
>>>val2 = 1.2345678
>>>val3 = 123456789.123456789
>>>print(’values are %.1f and %.3f and %6.2f’ %(val1, val2, val3))
sem
2
2018
39
Formatting values: exercise – try
this one!
>>>my_value = 7.2386
>>>print(‘%0.2f’ % my_value)
>>>amt = 5000.0
>>>m_pay = amt/12.0
>>>print(‘%0.2f’ % m_pay)
>>>my_new_value = 1.123456789
>>>print(‘%.2f’ % my_new_value)
>>>print(‘%.4f’ % my_new_value)
>>>print(‘%6.2f’ % my_new_value)
Formatting strings
>>> s = ‘mysterious’
# 7 characters in the string
>>>print(‘%.*s’ % (7, s))
# two characters in the string
>>>print(‘%.*s’ % (2, s))
###exponent
>>>print(‘%10.3e’ % (2000.345))
>>>print(‘%10.2E’ % (3456.234))
>>> x = 2000000
>>> print(‘%10e’ % x)
sem
2
2018
41
Formatting numbers and strings
Note:
• specifying a minimum field width – is the minimum
number of spaces that should be used to display a
value
• the field width specifies the number of spaces
reserved on the screen for the value.
• if the value is shorter than the field width, it is
displayed and will be right justified (filled with
spaces)
• if the value is too large to fit in the specified field
width, the field is automatically enlarged to
accommodate it.
sem
2
2018
42
Formatting: examples (new styling (vs)
old style of formatting
• Old
style
syntax:
• New
formaLng
style
syntax
in
general:
Old:
New:
43
sem
2
2018
Formatting: new (vs) old approach
Signed numbers – By default only negative numbers are prefixed
with a sign.
#Old
>>>print(‘%+d’ % (60))
>>>print(‘%d’ % ((-40)))
#New
>>>print(‘{:+d}’.format(60))
>>>print(‘{:d}’.format((-40)))
Formatting: examples (new styling)
#Examples
for
formaLng
using
the
format()
#
using
<,
>,
^
and
a
filler
>>>print(‘{:_<10}'.format('test'))
#left
>>>print(‘{:_^10}’.format(‘test’))
#centered
>>>print(‘{:_>10}’.format(‘test’))
#right
>>>print(‘{:*>10}’.format(‘test’))
# * as a filler
Check
other
examples
–
file
uploaded
on
LMS
45
sem
2
2018
Formatting: examples (new styling)
count = 10
total = 100
print(‘The number contains {} digits’. format(count))
print(‘The digits sum to {}’. format(total))
Output:
he number contains 10 digits
The digits sum to 100
Side notes – lots of them to check out! (see uploaded on the
LMS. There are a few rule changes when you use the format() –
new style of formatting
- You may use the old or the new style to format
46
sem
2
2018
Formatting: some more examples to try out!
# example that uses date and time method
>>>from datetime import datetime
>>>print(‘{:%Y-%m-%d %H:%M}’.format(datetime(2016, 2, 10, 4, 30)))
#example that uses a list
data = [4, 8, 15, 16, 23, 42]
print(‘{d[4]} {d[5]}’.format(d=data))
47
sem
2
2018