Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
23 views

Lecture 12 Loop Structures PartII

The document discusses loop structures, specifically while loops. It begins with recapping previous examples using for loops to calculate Fibonacci numbers and averages. It then introduces the while loop and shows its flowchart. Examples are given to count from 0 to 9 and for a guessing game. Revisiting previous problems using while loops is demonstrated. Input validation with while loops is explained using an example of printing odd numbers between user-input ranges. Nested loops are discussed using an example to print a rhombus shape, with pseudocode provided to generalize the solution. The next lecture topic will be on problem solving.

Uploaded by

thezynkofficial
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

Lecture 12 Loop Structures PartII

The document discusses loop structures, specifically while loops. It begins with recapping previous examples using for loops to calculate Fibonacci numbers and averages. It then introduces the while loop and shows its flowchart. Examples are given to count from 0 to 9 and for a guessing game. Revisiting previous problems using while loops is demonstrated. Input validation with while loops is explained using an example of printing odd numbers between user-input ranges. Nested loops are discussed using an example to print a rhombus shape, with pseudocode provided to generalize the solution. The next lecture topic will be on problem solving.

Uploaded by

thezynkofficial
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24

Principles of Programming

languages
Loop Structures- Part II
Lecture 12
Today…
• Last Session:
• Loop Structures- Part II

• Today’s Session:
• Loop Structures- Part III:
• While Statement
• Nested Loops
• Various Examples
Recap: Fibonacci Sequence
• Suppose we want to write a program that computes and outputs the
nth Fibonacci number, where n is a value entered by a user

• The Fibonacci sequence starts with 0 and 1

• After these first two numbers, each number in the sequence is


computed as simply the sum of the previous two numbers
• E.g., 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
Recap: Fibonacci Sequence
def fibonacci(n):
f_i = 0
f_j = 1

print(f_i, f_j, end = " ")

for k in range(2, n+1):


f_new = f_i + f_j
print(f_new, end = " ")
f_i = f_j
f_j = f_new
Recap: Fibonacci Sequence

n = eval(input("Enter a number that is larger than 1 >> "))


if n < 2:
print("You can only enter a number that is larger than 1!")
else:
fibonacci(n)
Definite Loops vs. Indefinite Loops
• So far, we have considered only the case where the number of
iterations is determined before the loop starts
• This kind of loops is called definite loops and for is used in Python
to write definite loops

• But, what if we want to write loops, wherein we do not know the


number of iterations beforehand?
• This kind of loops is denoted as indefinite loops
The While Statement
• In Python, an indefinite loop is implemented using a while statement

while <condition>:
<body>

• <condition> is a Boolean expression, just like in if statements

• <body> is, as usual, a sequence of one or more statements


The Flowchart of a While Loop

Is <condition> No
True?

Yes

<body>
Example
• Count = 0
• While count<9:
• print(“number:”, count)
• count = count+1
• Print(“good bye”)
A little guessing game
• This little code shows code for a
guessing game
• The random number is
generated from 0- 20 and once
that number is generated you
need to guess that number
• In this code we don’t know the
number of iterations we need
to have in order to guess the
answer therefore the reason
we have used the while loop
Revisiting Average of a Series of Numbers
• Here is how we have done it before:
def main():
n = eval(input("How many numbers do you have? "))
sum = 0.0

for i in range(n):
x = eval(input("Enter a number >> "))
sum = sum + x

print("\nThe average of the numbers is", sum/n)

main()
Revisiting Average of a Series of Numbers
• Here is how we can do it now using a while statement:
sum = 0.0
n = eval(input("How many numbers do you have? "))
count = 0
while count < n:
x = eval(input("Enter a number >> "))
sum = sum + x
count = count + 1

print("The average of the " + str(n) + " numbers you entered is ", sum/n)
Revisiting Average of a Series of Numbers
• Here is also another version that assumes no prior knowledge about
the quantity of numbers the user will input
sum = 0.0
count = 0
moreData = "yes"
while moreData == "yes":
x = eval(input("Enter a number >> "))
sum = sum + x
count = count + 1
moreData = input("Do you have more numbers (yes or no)? ")

print("The average of the " + str(count) + " numbers you entered is ", sum/count)
Printing Odd Numbers With Input Validation
• Suppose we want to print the odd numbers between two user-input
numbers (inclusive), say, start and end

• The program assumes some conditions, whereby the start and end
numbers shall be positive and end should be always greater than start

• Hence, we should continue prompting the user for the correct input
before proceeding with printing the odd numbers
• This process is typically called input validation
• Well-engineered programs should validate inputs whenever possible!
Printing Odd Numbers With Input Validation
1. while True:
2. start = eval(input("Enter start number: "))
3. end = eval(input("Enter end number: "))
4. if start >=0 and end >= 0 and end > start:
5. break It breaks the loop; execution continues at line 8.
6. else:
7. print("Please enter positive numbers, with end being greater than start")
8.
9. for i in range(start, end + 1):
10. if i % 2 == 0:
11. continue It skips one iteration in the loop; execution
12. print(i, end = " ") continues back at line 9.
Nested Loops
• Like the if statement, loops can also be nested to produce
sophisticated algorithms
• Example: Write a program that prints the following rhombus shape
*
* *
* *
* *
* *
* *
* *
* *
*
The Rhombus Example
• One way (not necessarily the best way!) to think about this problem is to
assume that the stars are within a matrix with equal rows and columns
1 2 3 4 5 6 7 8 9
1 *
2 * *
3 * *
Can you figure
4 * *
5 * * out the different
6 * * relationships
7 * * between rows
8 * *
and columns?
9 *
The Rhombus Example
• One way (not necessarily the best way!) to think about this problem is to
assume that the stars are within a matrix with equal rows and columns
1 2 3 4 5 6 7 8 9
1 *
2 * *
3 * * Print a star when:
4 * * 1) Row + Column == 6
5 * *
2) Row + Column == 14
6 * *
7 * * 3) Row – Column == 4
8 * * 4) Column – Row == 4
9 *
The Rhombus Example
• Here is one way of writing the program in Python
for i in range(1, 10):
for j in range(1, 10):
if ((i+j== 6) or (j-i==4) or (i+j == 14) or (i-j==4)):
print("*", end = "")
else:
print(" ", end = "")
print()

Can you generalize this code?


The Rhombus Example
• What are 6, 14, 4, and 4 below?
1 2 3 4 5 6 7 8 9
1 *
2 * *
3 * * Print a star when:
4 * * 1) Row + Column == 6
5 * *
6 * *
2) Row + Column == 14
7 * * 3) Row – Column == 4
8 * * 4) Column – Row == 4
9 *
The Rhombus Example
• What are 6, 14, 4, and 4 below?
1 2 3 4 5 6 7 8 9
1 *
2 * *
3 * * Print a star when:
4 * * 1) Row + Column == 6 (i.e., Columns/2 +2)
5 * *
6 * *
2) Row + Column == 14 (i.e., Columns + )
7 * * 3) Row – Column == 4 (i.e., Columns/2)
8 * * 4) Column – Row == 4 (i.e., Columns/2)
9 *
The Rhombus Example: A More General Version
while True:
rows = eval(input("Enter number of rows: "))
columns = eval(input("Enter number of columns: "))

if rows != columns or rows % 2 != 1 or columns % 2 != 1:


print("Please enter odd and equal rows and columns")
else:
break

rows = abs(rows)
columns = abs(columns)
The Rhombus Example: A More General Version
for i in range(1, rows+1):
for j in range(1, columns+1):
if ((i+j== (columns//2 +2)) or (j-i==(columns//2)) or (i+j ==
(columns+ math.ceil(rows/2))) or (i-j==(columns//2))):
print("*", end = "")
else:
print(" ", end = "")
print()
Next Lecture…
• Problem Solving

You might also like