### 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`