# Multiple choice questions with diagnostic answers

Both of my multiple choise questions are building on the lessons about Making Choices (Python).

## Question 1

Suppose we define the following tuple `a`

and list `b`

as follows:

```
a=(1,2,3,4)
id_number_a = id(a)
a+=(5,6,7)
id_number_a_extended = id(a)
b=[1,2,3,4]
id_number_b = id(b)
b+=[5,6,7]
id_number_b_extended = id(b)
```

Which one of the following statements will return True?

- a)
`a == b`

- b)
`id_number_a == id_number_a_extended`

- c)
`id_number_b == id_number_b_extended`

- d)
`id_number_a == id_number_b`

*Note that id() returns the “identity” of an object which might change during the lifetime of the variable (see documentation).*

## Question 2

The following code should sort and compute the power of each of the numbers within a list.

```
list = [3,5,1,2,4]
list_2 = [???]
```

Think about it and complete the `???`

by choosing one of the following options:

`[x*x for x in list.sort()]`

`[x*x for x in sorted(list)]`

`[x^2 for x in sorted(list)]`

`[x**2 for x in list[:].sort()]`

*Tip: list.sort() is a method that mutes the object whereas sorted(list) is a
function that doesn’t.*

What can the different answer tell us about misconception of the student?

- The student does not understand the concept of immutability and chooses this method which modifies the list on the fly (and in fact returns an error).
- The correct answer
- The student does not remember the exponentiation operator in Python.
- The student fails with the same concept of the point a) and confuses the manipulations of lists being objects.

Source: These exercises are based on Chema Cortés’ blog entries (1, 2).