# Touring Turing

## 1 Manipulating Variable Values

### Learn It

- Last lesson you used Python to perform some calculations.
- Let's have a quick test to see how well you remember how to perform calculations.

### Badge It - Silver

- What is the sum of the following numbers - 5,1,4,9,12
- What is the product of the following numbers - 4,1,2,8,9,12
- What is the remainder of dividing 12 by 5
- What is 12% of 32
- If I add 6 to 4, multiply the answer by 10 and then raise to the power of 2, what is the answer.

### Try It

- Using variables can help us solve more complex problems.
- Let's try and use variables to solve some trickier problems.
- Let's imagine you're in a maths class and you are given the following problem.

A chicken can lay a single egg, every day. If a chicken lives for seven years, what is the maximum number of eggs it can lay in it's lifetime?

- We can use Python to help us work this out, using a few simple variables.

daysInYear = 365 lifeTime = 7 eggsPerDay = 1 numberEggs = daysInYear * eggsPerDay * lifeTime

- We started by assigning three variables to have integer values. Then we assigned a third variable (
`numberEggs`

) to be the result of multiplying (`*`

) the previous variables together.

### Try It

- Let's try another one.

A snake can slither 20cm in 15 minutes. How many hours would it take the snake to travel 100cm

distance = 100 speed = 20/15 time = distance/speed

### Badge It - Gold

- These ones are even trickier.
- A woodchuck can chuck 5 bits of wood in an hour. How long does it take a woodchuck to chuck 45 pieces of wood.
- A peck is equal to 9 litres. If Peter picked a peck of pickled peppers and each pepper has a volume of 0.25 litres, how many pickled peppers did Peter pick.
- A cannibal can nibble 9 cans in an hour. How many cans can nine cannibals nibble in ninety minutes

### Learn It

- We can easily assign variables to other variables.

foo = 10 bar = foo

- Let's find out what
`bar`

is now.

bar

- As you probably expected, it is now 10.
- But what happens if we change
`foo`

```
foo = 5
```

- What's bar now?

### Learn It

- To see why
`bar`

stays at 10, we need to think about what happens when we use code like`bar = foo`

. We'll talk in terms of a*sort of*Turing Machine. - We start off with an empty tape and some empty cards.

- When we write
`foo = 10`

two things happen.- The value of 10 is stored on the tape in a certain box. In this case it is box number 4.
- The card is then altered so it has the variable identifier and the box it points to.

- When we then write
`bar = foo`

, a second card is then used to indicate that`bar`

points to the same box number as`foo`

.

- Lastly, when we reassign
`foo`

the value of 5, a second box (in this case box 8) has 5 stored in it and`foo`

's card is altered to now point to the new box.

- We can see that bar is still pointing to the value in address 4, which is the number 10.

### Badge It - Platinum

- For each of the problems below - you may only use the variables stated in the problem. You can't use additional variables or values.
- The first has been done for you as an example

#### Example

foo = 10 bar = 4 baz = 0

- make
`foo`

,`bar`

and`baz`

all equal to 6.

*Answer*

baz = foo - bar foo = baz bar = baz

#### Problem 1

foo = 10 bar = 4

- Make
`foo`

and`bar`

both equal to 6.

#### Problem 2

foo = 10 bar = 15 baz = 3

- Make
`foo`

and`bar`

both equal to 25 and`baz`

equal to 22

#### Problem 3

foo = 12 bar = 3

- Make
`foo`

equal to 4 and`bar`

equal to 12

#### Problem 4

foo = 9 bar = 4

- Make
`foo`

equal to 4 and`bar`

equal to 9