### Applying your skills to Advanced Functions & Problem Solving

There will be multiple times when you encounter a hard problem that you need to solve. In this basic course, I am going to outline the skill - solving process that I follow to get through these more difficult problems.

Here we are going to solve the following problem:

*Given a number, write a function to output its reverse digits. (e.g. given 123 the answer is 321) Make sure that if it is a negative number you keep the negative in the front (-123 becomes -321)*

I am going to write a function that solves this, and apply many of the skills that we have learned through this course.

- Start with a function:

```
def reverse_number(number):
"""
INPUT: a number that we want to reverse.
OUTPUT: reversed number
"""
pass
#Reverse the number
return reversed_number
```

- When the number comes in, we want to turn it into a string, and then that string into a list.

```
def reverse_number(number):
"""
INPUT: a number that we want to reverse.
OUTPUT: reversed number
"""
string_number = str(number)
list_string_number = list(string_number)
#Reverse the number
return reversed_number
reverse_number(22)
```

- A quick google search says it easy to reverse a list using the
`reversed`

method

```
def reverse_number(number):
"""
INPUT: a number that we want to reverse.
OUTPUT: reversed number
"""
string_number = str(number)
list_string_number = list(string_number)
reversed_list = reversed(list_string_number)
#Reverse the number
return reversed_number
```

- Another google search tells me that I can turn a list into using the code:

`''.join(list)`

```
def reverse_number(number):
'''
INPUT: a number that we want to reverse.
OUTPUT: reversed number
'''
string_number = str(number)
list_string_number = list(string_number)
reversed_list = reversed(list_string_number)
reversed_string = ''.join(reversed_list)
#Reverse the number
return reversed_number
```

- Finally I want to turn this back into a number

```
def reverse_number(number):
'''
INPUT: a number that we want to reverse.
OUTPUT: reversed number
'''
string_number = str(number)
list_string_number = list(string_number)
reversed_list = reversed(list_string_number)
reversed_string = ''.join(reversed_list)
reversed_number = int(reversed_string)
#Reverse the number
return reversed_number
```

- Turn into one line of code:

```
def reverse_number(number):
'''
INPUT: a number that we want to reverse.
OUTPUT: reversed number
'''
reversed_number = int(''.join(reversed(list(str(number)))))
return reversed_number
```

Write if statement for case when its negative (skip the first character, and then multiply by -1 after its a number again)

```
def reverse_number(number):
'''
INPUT: a number that we want to reverse.
OUTPUT: reversed number
'''
if str(n)[0] == '-':
reversed_number = -1*int(''.join(reversed(str(n)[1:])))
else:
reversed_number = int(''.join(reversed(str(n))))
return reversed_number
```