Module 3 - Section 1 - Loops
Site: | ΕΛ/ΛΑΚ Moodle |
Course: | Python Lab |
Book: | Module 3 - Section 1 - Loops |
Printed by: | Guest user |
Date: | Thursday, 21 November 2024, 9:55 PM |
3.1.1 - Range
What is a loop in programming? In computer programming, a loop is a sequence of instructions that is continually repeated until a certain condition is reached.
What will we do to print 10 times our best friends name? We could write the following code 10 times:
print("My best friends name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
print("My best friend's name is Nick")
Instead we can order the computer to repeat the command 10 times.
First of all we have to learn the range command. When we write range(10), python generates a list of numbers, which is generally used to iterate over with for loops.
So range(5) contains 5 numbers [0, 1, 2, 3, 4]. In computer languages counting starts from 0 (zero).
If you want to view what is inside a range you can write the command in CLI
>>> list(range(5))
Try also the following and try to understand what range does
>>> list(range(3,6)) # The result is [3, 4 , 5]
>>> list(range(9,16)) # The result is [9, 10 , 11, 12, 13, 14, 15]
So a list includes numbers starting from the first one until the last one without including the last one and increasing (stepping) them with 1.
If we omit the first number it is the same as writing 0
>>> list(range(5)) # is the same as
>>> list(range(0,5))
What else can we do with range? Change the step.
Try the following in CLI
>>> list(range(2,20,3))
The first item is 2, the next is 5 (2+3), the next is 8 (5+3) .... and the last one is 17, 20 is not included in the list)
As an exercise try the following code and before execution try to foresee the result :
>>> list(range(1,9,2))
>>> list(range(7))
>>> list(range(7,17,4))
As an exercise write a range command that has 10 numbers.
Of course the easiest is range(10). List it with the command
>>> list(range(10))
3.1.2 - The For loop
When we use a loop? When we want to repeat a block of code. The for loop is used when we know how many times we want the code to be executed. Copy the following code to Thonny's editor and save it (save as) as Loops.py. To view the execution step by step you can press the Debug button, after that the Step into (F7) and finally Step over(F6). Take a closer look at the variable x in the right pane of Thonny.
for i in range(10):
print("I will not chew gum in class.")
Also try the following :
for i in range(5):
print("Please,")
print("Can I go to the mall?")
And change it to this :
for i in range(5):
print("Please,")
print("Can I go to the mall?")
Try the following code and try to explain what is its purpose :
for i in range(10):
print (i, "* 5 =", i*5)
Do you have an idea of how we can make it better? Try this one now :
for i in range(1,11):
print (i, "* 5 =", i*5)
And now this one :
number = int(input("Please write a number for 1 to 10 : "))
for i in range(1,11):
print (i, "* ",number," =", i*number)
3.1.3 - Nested for loops
Try to predict what the code below will print. Then enter the code and see if you are correct.
# What does this code prints? Why?
for i in range(3):
print("a")
for j in range(3):
print("b")
This next block of code is almost identical to the one above. The second for loop has been indented one tab stop so that it is now nested inside of the first for loop. This changes how the code runs significantly. Try it and see.
# What does this code prints? Why?
for i in range(3):
print("a")
for j in range(3):
print("b")
Now try to create a program that will output
Nested Loops Example
1
a
a
a
a
2
a
a
a
a
3
a
a
a
a
Here you can view a solution to the problem.
3.1.4 - Calculating a sum
A common operation in working with loops is to keep a running total. This “running total” code pattern is used a lot. Keep a running total of a score, total a person's account transactions, use a total to find an average, etc. In the code below, the user enters five numbers and the code totals up their values. Copy the code below and save it as sum.py inside your working folder.
So how can we calculate this sum 1+2+3+4+5+6+7+8+9+ ...... + 1000? What is the range of these numbers? Is it range(1000) or range (1,1001)? If you don't remember try to find listing the range. Of course feel free to think something different
The commands are
>>> list(range(1000))
and>>> list(range(1,1001))
A solution to the problem is :
Carefully remove the # signs and take care of indentation to see the program running and printing information about what is doing. This a form of debugging.
So this program calculated the sum of even numbers between 0 and 100 (not included). Can you modify it to calculate the odd numbers from 1 to 99? You need to change only one number, but you can find your own solution. The answer is 2500.