6  Loop

6.1 For Loop

Common iterables that can be used in loop:

  • range
  • str: iterate through each characters
  • list
for i in "python":
  print(i)
#> p
#> y
#> t
#> h
#> o
#> n
for i in [1, 2]:
  print(i)
#> 1
#> 2

range() is very helpful

range(start, stop, step)
  • start is inclusion
  • stop is exclusive
type(range(1))
#> <class 'range'>

list(range(2))
#> [0, 1]
list(range(1, 3))
#> [1, 2]
list(range(1, 10, 2))
#> [1, 3, 5, 7, 9]
for number in range(3):
  print(number)
#> 0
#> 1
#> 2
for number in range(1, 4):
  print("Attempt: ", number, number * ".")
#> Attempt:  1 .
#> Attempt:  2 ..
#> Attempt:  3 ...

6.1.1 For else

The break statement, breaks out of the innermost enclosing for or while loop

else is executed when the loop terminates through exhaustion of the iterable, but not when the loop is terminated by a break statement.

From: Ref

successful = False

for number in range(1, 4):
  print("Attempt: ", number)
  if successful:
      print("Success")
      break
else:
  print("Attempt 3 times and failed")
#> Attempt:  1
#> Attempt:  2
#> Attempt:  3
#> Attempt 3 times and failed

6.1.2 Nested Loop

for x in range(3):
  for y in range(2):
    print(f"({x},{y})")
#> (0,0)
#> (0,1)
#> (1,0)
#> (1,1)
#> (2,0)
#> (2,1)
count = 0

for n in range(1, 10):
  if (n % 2) == 0:
    print(n)
    count += 1
#> 2
#> 4
#> 6
#> 8
    
print(f"We have {count} even numbers")
#> We have 4 even numbers
10 % 2
#> 0
10 % 3
#> 1

6.2 While Loop

number = 100
while number > 0:
  number //= 2
  print(number)
#> 50
#> 25
#> 12
#> 6
#> 3
#> 1
#> 0