Python Loops

Lets get loopy!

For loops

Some simple looping techniques without going too much into everything. First we need something to play with. How about a list of things?

things = ['SpongeBob SquarePants', 'Patrick Star', 'Gary the Snail', 1, 2, 3]

Now start the looping...

for thing in things:
print(thing)

Which will print each item in the list on a new line. If, for some reason, you'd like to loop over the individual letters in these strings you can.

for thing in things:
for thingy in thing:
print(thingy)

Which spews out this (a bit pointless for now but you get the idea).

S
p
o
n
g
e
B
o
b

S
q
u
...

Notice that there are 3 integers at the end of the list. Hunt them down.

integers = []

for thing in things:
if isinstance(thing, int):
integers.append(thing)

print(integers)

We can use range() to choose how many times to iterate over the loop. Let's use this and our new list to create another pointless list of integers rounded to 1 decimal place.

pointless = []
counter = 0

for integer in integers:
for x in range(integer):
silly = round(counter + (x * 3.14), 1)
pointless.append(silly)
counter += 1

print(pointless)

To be honest.... If we wanted a list of random integers it'll be much easier just to generate some and use range again to choose how many.

from random import randint

data = []

for i in range(8):
x = randint(0, 9999999)
data.append(x)

print(data)

Which gives us this glorious list of beautiful integers.

[2204750, 5804939, 7561118, 5774771, 8124467, 332380, 2428940, 3355867]

While loops

We also have while loops. We can use conditions with these.

from time import sleep

counter = 0

while counter < 10:
counter += 1
print(counter)
sleep(0.2)

An endless loop goes a little something like this (press Ctrl + C to stop it).

from time import sleep

counter = 0

while True:
counter += 1
print(counter)
sleep(0.2)

Looping over dictionaries

First we'll build a dictionary. We'll throw in the glorious list we generated earlier also.

data = {
'name': 'Bob',
'age': 20,
'hobby': 'laughing',
'integers': [2204750, 5804939, 7561118, 5774771, 8124467, 332380, 2428940, 3355867]
}

And now we'll loop over it and as we know 'integers' is a list we can loop over that when it gets to it.

for key, value in data.items():
if key == 'integers':
print(key)
for x in value:
print(x)
else:
print(key, value)

We can target individual values very easily.

print(data['name'])

for x in data['integers']:
print(x)

And just for fun we'll find the difference between the integers as we loop through them.

d = []
gap = 0

for x in data['integers']:
d.append(x - gap)
gap = x

print(d)