# Lecture 15: Programming review session¶

## Common data types in python: lists, strings, dictionaries, ints, floats, boolean values, tuples¶

### string¶

```s = '40'
r = '20'

print r + s
```

### int¶

```s = 40
r = 20

print r + s
```

### float¶

```s = 40.0
r = 20.0

print r + s
```

### boolean values: True or False¶

```s = True
r = False

print s or r

print s and r

print 42 == 42

print 4 > 5

c = True
print (42 >= 41) and ('A' == 'a' or c)
```

## Loops and conditionals¶

### Loops¶

`for` loops are much more commonly used in python then `while` loops (although this isn’t necessarily true in other languages). `for` loops allow you to iterate over several steps of code to perform the same operation multiple times, usually with a different value for one or a few variables. For example, what does this code do:

```for c in 'ACCGATTGACC':
print c.lower(),
```

`c` in this case is a variable name that gets set to each entry in the string in turn. All code in the indented block will be executed before `c` gets assigned to the next value.

Sometimes you need to do the same thing some specified number of times with no different variable settings (which differs from the previous example where we’re doing the same thing multiple times with a different value of `c` each time). To do this in python, you would typically use the `range` function, which when called as:

```range(n)
```

returns a list of numbers from 0 to n-1: `[0, 1, 2, ..., n-1]`. For example, to randomly reorder the positions in a given DNA sequence 25 times and print the resulting sequences, you could do the following:

```sequence = 'ACCGAGGACCATACATTA'
for i in range(25):
shuffle(sequence)
print ''.join(sequence)
```

Note that we don’t actually use the value assigned to the variable `i` ever: we just use that in combination with range to iterate 25 times.

### Conditional statements¶

Conditional statements allow you to apply some steps under certain conditions, such as when two values are equal, and apply some other steps in cases where those certain conditions are not met. The `if/elif/else` statements are used for conditionally executing some code in python. For example, describe line-by-line what this code does:

```sequence = 'ACCTAGGCAT'
result = []
for base in sequence:
if base == 'T':
result.append('U')
elif base == 'A' or base == 'C' or base == 'G':
result.append(base)
else:
print "Unknown base (%s). Cannot complete." % base
exit()
print ''.join(result)
```

## Functions in python¶

```def complement_sequence(seq,complements={'A':'T','C':'G','T':'A','G':'C'}):
result = []
for base in seq:
result.append(complements[base])
return ''.join(result)

my_seq = 'ACCGATTAGCCA'
complement_sequence(my_seq)
my_seq_comp = complement_sequence(my_seq)

my_seq_comp_non_default = complement_sequence(my_seq,{'A':'t','C':'g','T':'a','G':'c'})
```