knowledge-kitchen / course-notes

# Loops - For

Unlike while loops, which are most often used to repeat the execution of a block of code an indefinite number of times, for loops are usually used to execute a block of code a fixed finite number of times. Each repetition is called an iteration.

## Iterating through a series of numbers

The following examples all repeat a print statement 6 times in order to print the numbers from 5 to 10, inclusive.

### Python example

This example uses the range function to generate the list of values to loop through.

``````for i in range(5,11):
print(i)
``````

### Java example

``````for (int i = 5; i <= 10; i++) {
System.out.println(i);
}
``````

### Javascript example

``````for (var i = 5; i <= 10; i++) {
console.log(i)
}
``````

### PHP example

``````for (\$i = 5; \$i <= 10; \$i++) {
print(\$i);
}
``````

## Iterating through a characters in a string

The following examples all repeat a print statement 9 times in order to print the characters in the string, 'asparagus'.

### Python example

``````s = "asparagus"

for c in s:
print(c)
``````

### Java example

``````String s = "asparagus";

for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
System.out.println(c);
}
``````

### Javascript example

``````var s = "asparagus"

for (var i = 0; i < s.length; i++) {
var c = s.charAt(i)
console.log(c)
}
``````

### PHP example

``````\$s = "asparagus";

for (\$i = 0; \$i < strlen(\$s); \$i++) {
\$c = \$s{\$i};
print(\$c);
}
``````

## Iterating through a values in a list or array

The following examples all repeat a print statement 5 times in order to output each of the following values: 'they', 'sailed', 'away', 'in', 'a', 'sieve', 'they', 'did'.

### Python example

``````list_of_values = [ 'they', 'sailed', 'away', 'in', 'a', 'sieve', 'they', 'did' ]

for s in values:
print(s)
``````

### Java example

``````String[] list_of_values = { "they", "sailed", "away", "in", "a", "sieve", "they", "did" };

for (int i = 0; i < list_of_values.length; i++) {
System.out.println(list_of_values[i]);
}
``````

Java has an "enhanced" for loop that can loop through elements in an array with more syntactic sugar:

``````String[] list_of_values = { "in", "a", "sieve", "they", "went", "to", "sea" };

for (String value : list_of_values) {
System.out.println(value);
}
``````

### Javascript example

``````var list_of_values = [
"they",
"sailed",
"away",
"in",
"a",
"sieve",
"they",
"did",
]

for (var i = 0; i < list_of_values.length; i++) {
console.log(list_of_values[i])
}
``````

### PHP example

``````\$list_of_values = array( 'they', 'sailed', 'away', 'in', 'a', 'sieve', 'they', 'did' );

for (\$i = 0; \$i < sizeof(\$list_of_values); \$i++) {
print(\$list_of_values[\$i]);
}
``````

## Ranges in Python

The built-in range() function in Python automatically generates a range of integer values. This is a useful function if you want to iterate through a preset list of integers.

There are several sets of arguments you can supply to this function to customize this list.

### Single argument

``````range(10) #generates a range of values starting from 0 up to 9, like [0,1,2,3,4,5,6,7,8,9]
``````

Example usage:

``````for i in range(10):
print(i)
``````

### Two arguments

``````range(3, 10) #generates a range of values starting from 3 up to 9, like [3,4,5,6,7,8,9]
``````

Example usage:

``````for i in range(3, 10):
print(i)
``````

### Three arguments

Going forwards

``````range(20, 30, 2) #generates a range of values stepping by 2's, like [20, 22, 24, 26, 28]
``````

Example usage:

``````for i in range(20, 30, 2):
print(i)
``````

Going backwards:

``````range(30, 20, -2) #generates a range of values from 30 down to 22, stepping down by 2's, like [30, 28, 26, 24, 22]
``````

Example usage:

``````for i in range(30, 20, -2):
print(i)
``````