10.12. Project: Functions

The reverse() method flips the order of the elements within a list. However, reverse() does not affect the digits or characters within those elements.

Example

1
2
3
4
my_list = ['hello', 'world', 123, 'orange']

my_list.reverse()
print(my_list)

Console Output

['orange', 123, 'world', 'hello']

What if we wanted the reversed list to be ['egnaro', 321, 'dlrow', 'olleh']?

Let’s have some fun by creating a process that reverses BOTH the order of the entries in a list AND the order of characters within the individual elements.

Remember that a function should perform only one task. To follow this best practice, we will solve the list reversal by defining two functions—one that reverses the characters in a string (or the digits in a number) and one that flips the order of entries in the list.

10.12.1. Before You Start

If your teacher added you to a Trinket course, login to your account to access the starter code.

Otherwise, use the links below to code in your own free account.

Note

The code editors embedded in the exercises all include a Remix button in the upper right corner which will save the code to your account. For the matching repl.it code, click these links:

  1. Parts A - C

  2. Bonus Missions

10.12.2. Part A: Reverse Characters

On a previous page, we examined a function that reverses the characters in a string using list() and join. Let’s rebuild that function now.

  1. Define the function as reverse_characters. Give it one parameter, which will be the string to reverse.

  2. Within the function, use list() to create a list of characters from the string, then reverse the list.

  3. Use join to create the reversed string and return that string from the function.

  4. Below the function, define a variable and assign it a string value to test the function.

  5. Call the reverse_characters function and use the variable as the argument. Check that your function correctly reverses the characters in the string.

Tip

Use these sample strings for testing:

  1. 'apple'

  2. 'LC101'

  3. 'Capitalized Letters'

  4. 'I love the smell of code in the morning.'

10.12.3. Part B: Reverse Digits

The reverse_characters function works great on strings, but what if the argument passed to the function is a number? Using reverse_characters(1234) results in an error, since list() does not work on numbers (TRY IT). When passed an int or float value, we want the function to return a number with all the digits reversed (e.g. 1234 converts to 4321 and NOT the string "4321").

  1. Add an if statement to reverse_characters to check the type() of the parameter.

  2. If type() is str, return the reversed string as before.

  3. If type() is int or float, convert the parameter to a string, reverse the characters, then convert it back into a number.

  4. Return the reversed number.

  5. Be sure to print the result returned by the function to see if your code works for both strings and numbers. Do this before moving on to the next part.

Tip

Use these samples for testing:

  1. 1234

  2. 'LC101'

  3. 8675.309

  4. 'radar'

10.12.4. Part C: Complete Reversal

Now we are ready to finish our complete reversal process. Create a new function with one parameter, which is the list we want to change. The function should:

  1. Define a new, empty list.

  2. Loop through the old list.

  3. For each element in the old list, call reverse_characters to flip the characters or digits.

  4. Add the reversed string (or number) to the list created in part ‘a’.

  5. Return the final, completely reversed list.

  6. Be sure to print the results from each test case in order to check your code.

Tip

Use this sample data for testing.

Input

Output

['apple', 'potato', 'Capitalized Words']

['sdroW dezilatipaC', 'otatop', 'elppa']

[123, 8897, 4.2, 1138, 8675309]

[9035768, 8311, 2.4, 7988, 321]

['hello', 'world', 12.3, 'orange', 987]

[789, 'egnaro', 3.21, 'dlrow', 'olleh']

10.12.5. Bonus Missions

  1. Define a function with one parameter, which will be a string. The function must do the following:

    1. Have a clear, descriptive name like fun_phrase.

    2. Take only the last character from strings with lengths of 3 or less.

    3. Take only the first 3 characters from strings with lengths larger than 3.

    4. Use .format() to return the phrase We put the '___' in '___'. Fill the first blank with the modified string, and fill the second blank with the original string.

  2. Now test your function:

    1. Outside of the function, define a variable and assign it a string value (e.g. 'Functions rock!').

    2. Call your function and print the returned phrase.

  3. The area of a rectangle is equal to its length x width.

    1. Define a function with the required parameters to calculate the area of a rectangle.

    2. The function should return the area, NOT print it.

    3. Call your area function by passing in two arguments—the length and width.

    4. If only one argument is passed to the function, then the shape is a square. Modify your code to deal with this case.

    5. Use the returned value to print, The area is ____ cm^2.

    Tip

    Use these test cases.

    1. length = 2, width = 4 (area = 8)

    2. length = 14.2, width = 7.6 (area = 107.92)

    3. length = 20 (area = 400)