Loops#

Midjourney: Loops, ref. Robert Delaunay

Insanity is doing the same thing over and over again and expecting different results.

— Albert Einstein

Slides/PDF#

Often, blocks of code need to be executed multiple times. If the number or amount of repetitions is known beforehand, use the for-Loop for that. There are two types of For-Loops:

  • For-Loop: Repeat the loop exactly \(n\) times

  • For-Each-Loop (Iterator): Repeat the loop for each element in a sequence

Repetitions with a Known Count#

For-Each Loop Over Sequences#

The for loop in Python is a for-each loop. It always iterates through a sequence of values, such as a list. The variable of the iterator e contains the current value of the sequence seq. This makes it very easy to iterate through lists.

seq = ['a','b','c']
for e in seq:
	print(e)
a
b
c

or tuples

seq = ('a','b','c')
for e in seq:
	print(e)
a
b
c

For loop with a known number of iterations \(n\)#

The for loop in Python can also be used as a classic for loop, in which you repeat something \(n\) times. To do this, you generate a sequence of numbers with the range(n) function, over which you then iterate as usual in a for-each loop. The iterator i takes on the value of the counting index.

n = 3
seq = range(n)
for i in seq:
	print(i)
0
1
2

The difference becomes clearer when you look at how you would iterate through the above list using a numbered index. To do this, determine the length of the sequence with len(), generate a numeric iterator with range(), and then access the list’s indexed values with seq[i]. This corresponds to a classic for-loop over an array, as you would find, for example, in C or Java.

seq = ['a','b','c']
for i in range(len(seq)):
    value = seq[i]
    print(f"Index: {i}; Wert {value}")
Index: 0; Wert a
Index: 1; Wert b
Index: 2; Wert c

Since this is quite cumbersome, Python offers the enumerate function as a simplification. It turns any sequence into a numbered sequence. This is useful if you also need the index i for another reason.

sequence = ['a', 'b', 'c']
for i, value in enumerate(sequence):
	print(f"Index: {i}; Value {value}")
Index: 0; Value a
Index: 1; Value b
Index: 2; Value c

For-Each Loop with Dictionaries#

You can also iterate over dictionaries with a for loop. For this, you can either iterate over the keys and then look up the corresponding value via seq[key].

seq = {"key1":"wert1", "key2":"wert2", "key3":"wert3"}
for key in seq:
    value = seq[key]
    print(f"Schlüssel: {key}; Wert {value}")
Schlüssel: key1; Wert wert1
Schlüssel: key2; Wert wert2
Schlüssel: key3; Wert wert3

Or one can iterate directly over all key-value pairs.

for key, value in seq.items():
    print(f"Schlüssel: {key}; Wert {value}")
Schlüssel: key1; Wert wert1
Schlüssel: key2; Wert wert2
Schlüssel: key3; Wert wert3

For-Loop Example#

This can then be used, for example, to convert a list of measurements from imperial feet into metric meters.

feet_measurements = [4.2, 2.3, 6.2, 10.5]  # Input
meters_measurements = []                        # Results
for feet in feet_measurements:
    meters_measurements.append(0.3048 * feet)

print(meters_measurements)
[1.2801600000000002, 0.70104, 1.88976, 3.2004]

In Python there’s also a shorthand for such simple for-loops, a form of syntactic sugar.

measurements_meter = [0.3048 * feets for feets in measurements_feet]

print(measurements_meter)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[9], line 1
----> 1 measurements_meter = [0.3048 * feets for feets in measurements_feet]
      3 print(measurements_meter)

NameError: name 'measurements_feet' is not defined

Unknown Number of Repetitions#

While loops are primarily used when the length of the loop is not known at the outset. The loop is repeated as long as a certain condition holds. In computer science, the following types are distinguished:

  • While loop: Repeat as long as a condition is true (possibly never)

  • Do-While loop: Repeat until a condition is false (i.e., at least once)

  • Repeat-Until loop: Repeat until a condition becomes true (i.e., at least once)

While-Loop#

In a while loop, the condition may already be false at the start. The loop therefore does not need to be executed.

count = 3
while count > 0:
		print(f"Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife {count} > 0 wahr ist")
		count -= 1  # we decrement the variable count
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 3 > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 2 > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 1 > 0 wahr ist

The while loop runs three times because the condition is true and we count down to zero.

The while loop is not executed because n is already 0.

count = 0
while count > 0:
		print(f"Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife {count} > 0 wahr ist")
		count -= 1 # we count the variable count down

Do-While-Loops#

In a do-while loop, the condition is checked only at the end. The loop is therefore always executed at least once. However, this behavior is identical to a while loop in which the condition is set to true at the beginning and is changed inside the loop.

n = 3
condition = True # Condition is always initialized as True
while condition:
	n -= 1 # we decrement the variable n
	condition = n > 0 # The condition is only updated at the end of the loop
	print(f"Die Do-While-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife {n} > 0 wahr ist")
Die Do-While-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 2 > 0 wahr ist
Die Do-While-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 1 > 0 wahr ist
Die Do-While-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 0 > 0 wahr ist

The do-while loop is also executed three times because the condition is true and we count down to zero.

The do-while loop runs once even though n is already 0.

counter = 0
condition = True  # Condition is always initialized as True
while condition:
    counter -= 1  # we decrement the counter variable
    condition = counter > 0  # The condition is only updated at the end of the loop
    print(f"The do-while loop will be executed at least once until the condition at the end of the loop {counter} > 0 is true")
The do-while loop will be executed at least once until the condition at the end of the loop -1 > 0 is true

Repeat-Until-Loop#

In a repeat-until loop, the condition is only checked at the end. Thus the loop is always executed at least once. However, the loop is repeated until the condition becomes true. So it is the negation of a do-while loop.

counter = -3
condition = False  # Condition is always initialized as False
while not condition:  # but negated in the while
	counter += 1  # we increment the counter variable upwards
	condition = counter > 0  # The condition is updated only at the end of the loop
	print(f"Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife {counter} > 0 falsch ist")
Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife -2 > 0 falsch ist
Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife -1 > 0 falsch ist
Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 0 > 0 falsch ist
Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 1 > 0 falsch ist

The repeat-until loop runs three times because the condition at the beginning is false and we count up to 0.

The do-while loop will run once, since n is greater than 0 at the end of the loop.

count = 0
condition = False  # Condition is always initialized as False
while not condition:  # but negated in the loop
    count += 1  # we count up the variable count
    condition = count > 0  # The condition is only updated at the end of the loop
    print(f"Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife {count} > 0 falsch ist")
Die Repeat-Until-Schleife wird mindestens einmal ausgeführt bis die Bedingung am Ende der Schleife 1 > 0 falsch ist

Endless Loops#

Warning

While loops have no maximum number of repetitions. They can potentially run forever if the condition never changes. Therefore it is always important to think through whether there exists a case in which the condition cannot change, and then to add a second termination condition (e.g., maximum iterations, maximum time, etc.).

Let’s take another look at our while_loop function. How could this function become an infinite loop?

while n > 0:
	print(f"Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife {n} > 0 wahr ist")
	n -= 1  # we decrement the variable n

It looks like this isn’t possible at first glance. Nevertheless, as a precaution, we will define a second variant with an additional termination condition.

def while_loop_with_break(n, max_iterations=99):
	iterations = 0
	while n > 0 and iterations < max_iterations:
		print(f"Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife {n} > 0 wahr ist")
		n -= 1 # we count the variable n down
		iterations += 1
	print(f"Die While-Schleife wurde nach {iterations} von {max_iterations} beendet")

The above test case with 3 seems to be working.

while_loop_with_break(3)
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 3 > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 2 > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife 1 > 0 wahr ist
Die While-Schleife wurde nach 3 von 99 beendet

But what happens if we initialize the function with infinity (Infinity)? Subtracting or adding any finite number to infinity yields infinity. The variable n will therefore never change.

import math  # the number infinity is defined in the math library

while_loop_with_break(math.inf)
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wird ausgeführt wenn die Bedingung am Anfang der Schleife inf > 0 wahr ist
Die While-Schleife wurde nach 99 von 99 beendet

Break out of loops early or skip elements#

Sometimes you want to prematurely break out of a for/while loop. Python provides the break statement for this. It breaks out of the loop at the current position (similar to repeat in a function). This allows you to implement additional termination conditions in the loop.

The continue statement does not break out of the loop, but immediately starts the next iteration. This is useful, for example, when a filter condition is not met.

The following loop should find the first edible thing in my backpack.

things_in_my_backpack = ["Papier", "Stift", "Apfel", "Brot", "Messer"]
edibles = {"Apfel", "Brot"}
edible = None

for item in things_in_my_backpack:   # Find the first edible item in my backpack
	if item not in edibles:
		print(f"Überspringe {item}")
		continue
	print(f"Essbares gefunden {item}")
	edible = item
	break

print("")
print(f"Ergebnis ist {edible}")
Überspringe Papier
Überspringe Stift
Essbares gefunden Apfel

Ergebnis ist Apfel

We see that the loop over Papier and Stift skips them and does not write "Essbares gefunden Papier".

As soon as the loop finds some edible item, it outputs "Essbares gefunden Apfel" and ends the loop, even though Brot and Messer are still in the backpack.

Both are common commands to improve the performance of loops.

Infinite loops with a timeout#

With break you can implement additional termination conditions, such as a maximum execution time. For example, define an additional timeout in an infinite loop of 10 seconds using the time() function from the time package, which returns the current time (since 1970) in seconds.

import time

iterations = 0
start = time.time() # we store the start time
while True:         # THIS IS AN INFINITE LOOP
	iterations += 1
	elapsed = time.time() - start  # we calculate the time difference in seconds
	if elapsed > 3:
		print(f"Timeout after {elapsed}s and {iterations} iterations")
		break       # We break the loop
Timeout after 3.0000009536743164s and 52397990 iterations

However, this isn’t a good way to pause a program for a while. For that, you should instead use the sleep() function from the time package. Note the execution time below the cell.

start = time.time()              # we store the start time

time.sleep(3)                    # we sleep for 3 seconds

print(f"Sleeped for {time.time() - start}s")  # we print the time difference
Sleeped for 3.0027010440826416s

Loops - Infinite Loops!#

While loops have no maximum number of iterations. They can potentially run forever if the condition never changes.

⚠️ Warning: It is therefore always important to consider whether there is a case where the condition cannot change and then add a second exit condition.
Condition = True
while Condition:  # THIS IS AN INFINITE LOOP
    # Statement
    Condition = True  # Condition never changes!

Loops - Breaking out of a loop early#

break-Befehl: Aborts the loop at its current position

continue-Befehl: Does not abort the loop, but immediately starts the next iteration

things_in_my_backpack = ["Paper", "Pen", "Apple", "Bread", "Knife"]
edibles = {"Apple", "Bread"}
edible = None

for item in things_in_my_backpack:  # Find the first edible item
    if item not in edibles:
        print(f"Skipping {item}")
        continue
    print(f"Edible found: {item}")
    edible = item
    break

print(edible)

Loops - Breaking out of a loop early#

With break you can implement additional termination conditions, such as a maximum execution time. Here we define an additional timeout in an infinite loop of 3 seconds:

import time

iterations = 0
start = time.time()

while True:  # THIS IS AN INFINITE LOOP
    iterations += 1
    elapsed = time.time() - start
    
    if elapsed > 3:
        print(f"Timeout after {iterations} iterations")
        break

Quiz#

--- shuffleQuestions: true shuffleAnswers: true --- ### Why are loops used in programs? - [x] To execute statements multiple times - [ ] To terminate programs - [ ] To look for errors in the code - [ ] To define functions ### What is typical for a `for` loop? - [x] It repeats statements for a sequence or a count - [ ] It only executes statements once - [ ] It automatically creates variables - [ ] It is always combined with `if` ### How does a For-Each-Loop in Python work? - [x] It iterates directly over the elements of a sequence - [ ] It counts from 1 to 100 - [ ] It automatically changes all elements - [ ] It is only used for numbers ### What does the loop variable contain in a For-Each-Loop? - [x] The current element from the sequence - [ ] The length of the sequence - [ ] The index of the previous element - [ ] Always a number ### What is `range(n)` used for in Python? - [x] To generate a sequence of numbers from 0 to n-1 - [ ] To generate a sequence of numbers from 0 to n - [ ] To create a list with n zeros - [ ] To compare strings - [ ] To evaluate conditions ### What does `enumerate()` do in Python? - [x] Creates a sequence with index and element - [ ] Sorts a list alphabetically - [ ] Removes duplicates from a dictionary - [ ] Converts strings to numbers ### How can you iterate through a dictionary? - [x] With a loop over the keys - [x] With a loop over key-value pairs using `items()` - [ ] Only with a While loop - [ ] Only by converting to a list ### Sort the following lines to write a valid `for` loop that prints all even numbers from 0 to 10 (inclusive): 1. `for i in range(0, 11, 2):` 2. ` print(i)` ### Sort the following lines to print all elements of a list with `for` and a condition. Given is: ```python zahlen = [3, 6, 9, 12, 15] ``` 1. `for z in zahlen:` 2. ` if z > 8:` 3. ` print(z)` ### Sort the following lines to correctly output the keys and values of a dictionary and print only values greater than 20. Given is: ```python person = {"name": "Anna", "alter": 30, "punkte": 18} ``` 1. `for key, value in person.items():` 2. ` if isinstance(value, int) and value > 20:` 3. ` print(f"{key}: {value}")` ### Sort the following lines to correctly use `enumerate()` and print the element with its index when the index is odd. Given is: ```python tiere = ["Katze", "Hund", "Maus", "Vogel"] ``` 1. `for i, tier in enumerate(tiere):` 2. ` if i % 2 == 1:` 3. ` print(f"{i}: {tier}")`