[go: up one dir, main page]

0% found this document useful (0 votes)
21 views39 pages

Unit - 2

get to know the coding challenge

Uploaded by

Phani Jeenu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views39 pages

Unit - 2

get to know the coding challenge

Uploaded by

Phani Jeenu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 39

1

3.4 Control Structures

• 3 control structures
– Sequential structure
• Built into Python
– Selection structure
• The if statement
• The if/else statement
• The if/elif/else statement
– Repetition structure
• The while repetition structure
• The for repetition structure

 2002 Prentice Hall. All rights reserved.


2

Sequence Control Structure

add grade to total total = total + grade;

add 1 to counter counter = counter + 1;

Fig. 3.1 Sequence structure flowchart with pseudo code.

 2002 Prentice Hall. All rights reserved.


3

if Selection Structure

true
Grade >= 60 print “Passed”

false

Fig. 3.3 if single-selection structure flowchart.

 2002 Prentice Hall. All rights reserved.


4

if/else Structure

false true
Grade >= 60

print “Failed” print “Passed”

Fig. 3.4 if/else double-selection structure flowchart.

 2002 Prentice Hall. All rights reserved.


5

if/elif/else Selection Structure

true
if statement condition a case a action(s)
false

true
first elif condition b case b action(s)
statement
false

.
.
.

last elif true


condition z case z action(s)
statement
false
else default action(s)
statement

Fig. 3.5 if/elif/else multiple-selection structure.

 2002 Prentice Hall. All rights reserved.


6

Example with Python code

# get price from user and convert it into a float:


price = float( raw_input(“Enter the price of one tomato: “))

if price < 1:
s = “That’s cheap, buy a lot!”

elif price < 3:


s = “Okay, buy a few”

else:
s = “Too much, buy some carrots instead”

print s

 2002 Prentice Hall. All rights reserved.


7

Expression values?
Python 2.2b2 (#26, Nov 16 2001, 11:44:11) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> if 0:
... print "0 is true"
... else:
... print "0 is false"
...
0 is false
>>> if 1:
... print "non-zero is true"
...
non-zero is true
>>> if -1:
... print "non-zero is true"
...
non-zero is true
>>> print 2 < 3
1

Expressions have integer values. No true, false like in Java.

0 is false, non-0 is true.

 2002 Prentice Hall. All rights reserved.


8

3.16 Logical Operators

• Operators
– and
• Binary. Evaluates to true if both expressions are true
– or
• Binary. Evaluates to true if at least one expression is true
– not
• Unary. Returns true if the expression is false

Compare with &&, || and ! in Java

 2002 Prentice Hall. All rights reserved.


9

Logical operators and, or, not

if gender == “female” and age >= 65:


seniorfemales = seniorfemales + 1

if iq > 250 or iq < 20:


strangevalues = strangevalues + 1

if not found_what_we_need:
print “didn’t find item”

# NB: can also use !=


if i != j:
print “Different values”

 2002 Prentice Hall. All rights reserved.


10

3.11 Augmented Assignment Symbols

• Augmented addition assignment symbols


– x = x + 5 is the same as x += 5
– Can’t use ++ like in Java!
• Other math signs
– The same rule applies to any other mathematical symbol
*, **, /, %

 2002 Prentice Hall. All rights reserved.


11

3.11 Augmented Assignment Symbols

Assig nm ent Sa m p le Exp la na tio n Assig ns


sym b o l e xp re ssio n
Assume: c = 3,
d = 4, e = 5,
f = 6, i = 9,
j = 10
+= c += 7 c = c + 7 10 to c
-= d -= 3 d = d - 3 1 to d
*= e *= 5 e = e * 5 25 to e

**= f **= 3 f = f ** 3 216 to f


/= i /= 3 i = i / 3 3 to i
%= j %= 9 j = j % 9 1 to j

Fig. 3.16 Aug mented a rithmetic a ssig nment symb ols.

 2002 Prentice Hall. All rights reserved.


12

Keywords

Python
keywords
and continue else for import not raise
assert def except from in or return
break del exec global is pass try
class elif finally if lambda print while

Fig. 3.2 Python keywords.

Can’t use as identifiers

 2002 Prentice Hall. All rights reserved.


13

keyword pass : do nothing


Python 2.2b2 (#26, Nov 16 2001, 11:44:11) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1 < 2:
... pass
...

Sometimes useful, e.g. during development:


if a <= 5 and c <= 5:
print “Oh no, both below 5! Fix problem”
if a > 5 and c <= 5:
pass # figure out what to do later
if a <= 5 and c > 5:
pass # figure out what to do later
if a > 5 and c > 5:
pass # figure out what to do later

 2002 Prentice Hall. All rights reserved.


14

3.7 while Repetition Structure

• Repetition Structures
– Allow a program to repeat an action while a condition is true
• Using while Repetition
– Action(s) contained within the body of the loop
– Condition should evaluate to false at some point
• Otherwise infinite loop and program hangs

 2002 Prentice Hall. All rights reserved.


15

3.7 while Repetition Structure

true
Product <= 1000 Product = 2 * product

false

Fig. 3.8 while repetition structure flowchart.

 2002 Prentice Hall. All rights reserved.


16
3.8 Formulating Algorithms: Case Study 1
(Counter Controlled Repetition)
• Counter controlled repetition
– Called definite repetition
• The number of loops is known before the loop starts
– Uses a counter to limit the number of times a loop repeats
– Counter must be incremented or decremented in the loop

 2002 Prentice Hall. All rights reserved.


17
3.8 Formulating Algorithms: Case Study 1
(Counter Controlled Repetition)

Set total to zero


Set grade counter to one

While grade counter is less than or equal to ten


Input the next grade
Add the grade into the total
Add one to the grade counter

Set the class average to the total divided by ten


Print the class average

Fig. 3.9 Pseudocode algorithm that uses counter-controlled repetition to


solve the class-average problem.

 2002 Prentice Hall. All rights reserved.


18
1 # Fig. 3.10: fig03_10.py
2 # Class average program with counter-controlled repetition.
3
The total and counter, set to
4 # initialization phase
5 total = 0 # sum of grades zero and one respectively Fig03_10.py
6 gradeCounter = 1 # number of grades entered A loop the continues as long as
7
8 # processing phase the counter does not go past 10
9 while gradeCounter <= 10: # loop 10 times
10 grade = raw_input( "Enter grade: " ) # get one grade
11 grade = int( grade ) # convert string to an integer
12 total = total + grade Adds one to the counter to
13 gradeCounter = gradeCounter + 1
14
eventually break the loop
15 # termination phase
16 average = total / 10 # integer division
Divides the total by the 10
17 print "Class average is", average to get the class average

Enter grade: 98
Program Output
Enter grade: 76
Enter grade: 71
Enter grade: 87
Enter grade: 83
Enter grade: 90
Enter grade: 57
Enter grade: 79
Enter grade: 82
Enter grade: 94
Class average is 81  2002 Prentice Hall.
All rights reserved.
19
3.9 Formulating Algorithms: Case Study 2
(Sentinel-Controlled Repetition)
• Sentinel (guard) Value
– A dummy value, one that the program checks for in order to
break out of the loop
– Sentinel values can be entered in by the user
– Known as indefinite repetition
• The total number of loops is unknown

 2002 Prentice Hall. All rights reserved.


20
3.9 Formulating Algorithms: Case Study 2
(Sentinel-Controlled Repetition)

Initialize total to zero


Initialize counter to zero

Input the first grade (possibly the sentinel)


While the user has not as yet entered the sentinel
Add this grade into the running total
Add one to the grade counter
Input the next grade (possibly the sentinel)

If the counter is not equal to zero


Set the average to the total divided by the counter
Print the average
else
Print “No grades were entered”

Fig. 3.12 Pseudocode algorithm that uses sentinel-controlled repetition


to solve the class-average problem.

 2002 Prentice Hall. All rights reserved.


21
1 # Fig. 3.13: fig03_13.py
2 # Class average program with sentinel-controlled repetition.
3
4 # initialization phase
5 total = 0 # sum of grades Fig03_13.py
6 gradeCounter = 0 # number of grades entered
7
8 # processing phase
9 grade = raw_input( "Enter grade, -1 to end: " ) # get one grade
10 grade = int( grade ) # convert string to an integer
11 The –1 acts as the dummy value, it is
12 while grade != -1: used to stop the program from looping
13 total = total + grade
14 gradeCounter = gradeCounter + 1
15 grade = raw_input( "Enter grade, -1 to end: " ) Again a counter is used so
16 grade = int( grade )
that the program knows the
17
18 # termination phase total number to students
19 if gradeCounter != 0:
20 average = float( total ) / gradeCounter
21 print "Class average is", average Finds the average by
22 else: dividing total by
23 print "No grades were entered"
the gradeCounter

 2002 Prentice Hall.


All rights reserved.
22
Enter grade, -1 to end: 75
Enter grade, -1 to end: 94
Enter grade, -1 to end: 97
Enter grade, -1 to end: 88
Fig03_13.py
Program Output
Enter grade, -1 to end: 70
Enter grade, -1 to end: 64
Enter grade, -1 to end: 83
Enter grade, -1 to end: 89
Enter grade, -1 to end: -1
Class average is 82.5

 2002 Prentice Hall.


All rights reserved.
23
3.10 Formulating Algorithms: Case Study 3
(Nested Control Structures)
• Nesting
– Inserting one control structure into another
• A loop inside of a loop
• An if statement inside of a loop

 2002 Prentice Hall. All rights reserved.


24
3.10 Formulating Algorithms: Case Study 3
(Nested Control Structures)

Initialize passes to zero


Initialize failures to zero
Initialize student counter to one

While student counter is less than or equal to ten


Input the next exam result
If the student passed
Add one to passes
else
Add one to failures
Add one to student counter

Print the number of passes


Print the number of failures

If more than eight students passed


Print “Raise tuition”

Fig. 3.14 Pseudocode for examination-results problem.

 2002 Prentice Hall. All rights reserved.


25

Correct indentation essential!

1 # Fig. 3.15: fig03_15.py


2 # Analysis of examination results.
3
Fig03_15.py
4 # initialize variables
5 passes = 0 # number of passes
6 failures = 0 # number of failures
7 studentCounter = 1 # student counter
8
Creates a loop that will break
9 # process 10 students; counter-controlled loop once the counter is passed 10
10 while studentCounter <= 10:
11 result = raw_input( "Enter result (1=pass,2=fail): " )
12 result = int( result ) # one exam result
13 This if/else statement is
14 if result == 1:
15 passes = passes + 1 nested within the while loop
16 else:
17 failures = failures + 1 Adds one to either the
18 passes or failures counter
19 studentCounter = studentCounter + 1
20
21 # termination phase
22 print "Passed", passes
23 print "Failed", failures
24
25 if passes > 8:
26 print "Raise tuition"

 2002 Prentice Hall.


All rights reserved.
26
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Fig03_15.py
Program Output
Enter result (1=pass,2=fail): 2
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Enter result (1=pass,2=fail): 1
Passed 9
Failed 1
Raise tuition

 2002 Prentice Hall.


All rights reserved.
27
3.12 Essentials of Counter-Controlled
Repetition
• Essentials
– The counter
• A named variable to control the loop
– Initial value
• That which the counter starts at
– Increment
• Modifying the counter to make the loop eventually terminate
– Condition
• The test that the counter must pass in order to continue looping

 2002 Prentice Hall. All rights reserved.


28

Intermezzo

1. Copy and run fig03_13.py (see page 86). Reminder:


~chili/CSS.E03/Programs_from_book/ch03/fig03_13.py)
2. Format the output to look like this:
Class average is 78.130
I.e., the average should be printed with exactly 3 digits after the
comma. See figure 2.19, page 52.
3. Extend the program so it reads the grades of three classes numbered
1, 2 and 3; after reading all grades from one class, it should print out
the average and the number of students of that class like this:
Class 1 average is 59.666
4. Finally the program should print out the overall average of all
students (i.e., sum of all grades divided by sum of all students).

 2002 Prentice Hall. All rights reserved.


29
# Fig. 3.13: fig03_13.py -- REVISED
totalgradesum = 0 solution part 1
totalgradecounter = 0
classcounter = 1

original
while classcounter <= 3:
program
total = 0 # sum of grades of current class
gradeCounter = 0 # number of grades entered for current class

grade = raw_input( "Enter grade, -1 to end: " ) # get one grade


grade = int( grade ) # convert string to an integer

while grade != -1:


total = total + grade
gradeCounter = gradeCounter + 1
grade = raw_input( "Enter grade, -1 to end: " )
grade = int( grade )

if gradeCounter != 0:
average = float( total ) / gradeCounter
print "Class %d average is %.3f" %(classcounter, average)
else:
print "No grades were entered for this class"
 2002 Prentice Hall. All rights reserved.
30
totalgradesum += total
totalgradecounter += gradeCounter solution part 2
classcounter += 1

if totalgradecounter != 0:
average = float( totalgradesum ) / totalgradecounter
print "Overall average is %.3f" %average
else:
print "No grades were entered"

 2002 Prentice Hall. All rights reserved.


31

3.13 for Repetition Structure

• The for loop


– Function range is used to create a list of values
– range ( integer )
• Values go from 0 up to given integer (i.e., not
including)
– range ( integer, integer )
• Values go from first up to second integer
– range ( integer, integer, integer )
• Values go from first up to second integer but increases
in intervals of the third integer
– This loop will execute howmany times:
for counter in range ( howmany ):
and counter will have values 0, 1,.. howmany-1

 2002 Prentice Hall. All rights reserved.


32
1 # Fig. 3.18: fig03_18.py
2 # Counter-controlled repetition with the
3 # for structure and range function.
4
5 for counter in range( 10 ): Fig03_18.py
Makes the counter go from zero to nine
6 print counter

0
1 Program Output
2
3
4
5
6
7
8
9

 2002 Prentice Hall.


All rights reserved.
33

range function

Python 2.2b2 (#26, Nov 16 2001, 11:44:11) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> range( 10 )
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Fig. 3.19 Function range.

Python 2.2b2 (#26, Nov 16 2001, 11:44:11) [MSC 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> range( 10, 0, -1 )
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Fig. 3.20 Function range with a third value.

 2002 Prentice Hall. All rights reserved.


34

Another example

1 # Fig. 3.22: fig03_22.py


2 # Summation with for.
3
4 sum = 0 Loops from 2 to 101
5
6 for number in range( 2, 101, 2 ): in increments of 2 Fig03_22.py
7 sum += number
8
9 print "Sum is", sum
A sum of all the even
numbers from 2 to 100
Sum is 2550 Program Output

 2002 Prentice Hall.


All rights reserved.
35
1 # Fig. 3.23: fig03_23.py
2 # Calculating compound interest.
3
4 principal = 1000.0 # starting principal
5 rate = .05 # interest rate Fig02_23.py
6 Starts the loop at 1 and goes to 10
7 print "Year %21s" % "Amount on deposit"
8
9 for year in range( 1, 11 ):
10 amount = principal * ( 1.0 + rate ) ** year 1.0 + rate is the same no matter
11 print "%4d%21.2f" % ( year, amount )
what, therefore it should have been
calculated outside of the loop
Year Amount on deposit
1 1050.00
Program Output
2 1102.50
3 1157.63
4 1215.51
5 1276.28
6 1340.10
7 1407.10
8 1477.46
9 1551.33
10 1628.89

 2002 Prentice Hall.


All rights reserved.
36

3.15 break and continue Statements

• The break statement


– Used to make a loop stop looping
– The loop is exited and no more loop code is executed
• The continue statement
– Used to continue the looping process
– All following actions in the loop body are not executed
• But the loop will continue to run

 2002 Prentice Hall. All rights reserved.


37
1 # Fig. 3.24: fig03_24.py
2 # Using the break statement in a for structure.
3
4 for x in range( 1, 11 ): The loop will go from 1 to 10
5 Fig03_24.py
6 if x == 5: When x equals 5 the loop breaks.
7 break Only up to 4 will be displayed
8
9 print x,
10 Shows that the counter does not get
11 print "\nBroke out of loop at x =", x to 10 like it normally would have

1 2 3 4 Program Output
Broke out of loop at x = 5

 2002 Prentice Hall.


All rights reserved.
38

Using break to exit a loop

1 # Fig. 3.25: fig03_25.py


2 # Using the break statement to avoid repeating code
3 # in the class-average program.
4 Fig03_25.py
5 # initialization phase
6 total = 0 # sum of grades
7 gradeCounter = 0 This loop will
# number continue
of grades entered
8 no matter what
9 while 1:
10 grade = raw_input( "Enter grade, -1 to end: " )
11 grade = int( grade )
12
13 # exit loop if user inputs -1
14 if grade == -1:
15 break If the user enters –1
16 then the loop ends
17 total += grade
18 gradeCounter += 1
19 Keeps a count and a
20 # termination phase sum of all the grades
21 if gradeCounter != 0:
22 average = float( total ) / gradeCounter
23 print "Class average is", average
24 else:
25 print "No grades were entered" Finds the average by
dividing total by the counter
 2002 Prentice Hall.
All rights reserved.
39

continue skips rest of body but continues


loop

1 # Fig. 3.26: fig03_26.py


2 # Using the continue statement in a for/in structure.
3
4 for x in range( 1, 11 ):
5 The loop will continue
6 if x == 5: if the value equals 5 Fig03_26.py
7 continue
8 The value 5 will never be
9 print x,
10 output but all the others will
11 print "\nUsed continue to skip printing the value 5"

1 2 3 4 6 7 8 9 10
Used continue to skip printing the value 5 Program Output

 2002 Prentice Hall.


All rights reserved.

You might also like