Practice Exercises for Functions

Practice Exercises for Functions#

Solve each of the practice exercises below. Each problem includes three CodeSkulptor links: one for a template that you should use as a starting point for your solution, one to our solution to the exercise, and one to a tool that automatically checks your solution.

  1. Write a Python function miles_to_feet that takes a parameter miles and returns the number of feet in miles miles. Miles to feet template — Miles to feet solution — Miles to feet (Checker)

    def miles_to_feet(miles):
    	return miles * 5280
    
    def test(miles):
    	print(f'{miles} miles equals {miles_to_feet(miles)} feet.')
    
    test(13)
    test(57)
    test(82.67)
    
  2. Write a Python function total_seconds that takes three parameters hours, minutes and seconds and returns the total number of seconds for hours hours, minutes minutes and seconds seconds. Hours to seconds template — Hours to seconds solution — Hours to seconds (Checker)

    def total_seconds(hours, minutes, seconds):
    	return (hours * 60 + minutes) * 60 + seconds
    
    def test(hours, minutes, seconds):
    	print(f'{hours} hours, {minutes} minutes, and {seconds} seconds totals to',
    	      f'{total_seconds(hours, minutes, seconds)} seconds')
    
    test(7, 21, 37)
    test(10, 1, 7)
    test(1, 0, 1)
    
  3. Write a Python function rectangle_perimeter that takes two parameters width and height corresponding to the lengths of the sides of a rectangle and returns the perimeter of the rectangle in inches. Perimeter of rectangle template — Perimeter of rectangle solution — Perimeter of rectangle (Checker)

  4. Write a Python function rectangle_area that takes two parameters width and height corresponding to the lengths of the sides of a rectangle and returns the area of the rectangle in square inches. Area of rectangle template — Area of rectangle solution — Area of rectangle (Checker)

  5. Write a Python function circle_circumference that takes a single parameter radius corresponding to the radius of a circle in inches and returns the the circumference of a circle with radius radius in inches. Do not use $\pi = 3.14$, instead use the math module to supply a higher-precision approximation to $\pi$. Circumference of circle template — Circumference of circle solution — Circumference of circle (Checker)

  6. Write a Python function circle_area that takes a single parameter radius corresponding to the radius of a circle in inches and returns the the area of a circle with radius radius in square inches. Do not use $\pi = 3.14$, instead use the math module to supply a higher-precision approximation to $\pi$. Area of circle template — Area of circle solution — Area of circle (Checker)

  7. Write a Python function future_value that takes three parameters present_value, annual_rate and years and returns the future value of present_value dollars invested at annual_rate percent interest, compounded annually for years years. Future value template — Future value solution — Future value (Checker)

  8. Write a Python function name_tag that takes as input the parameters first_name and last_name (strings) and returns a string of the form "My name is % %." where the percents are the strings first_name and last_name. Reference the test cases in the provided template for an exact description of the format of the returned string. Name tag template — Name tag solution — Name tag (Checker)

  9. Write a Python function name_and_age that takes as input the parameters name (a string) and age (a number) and returns a string of the form "% is % years old." where the percents are the string forms of name and age. Reference the test cases in the provided template for an exact description of the format of the returned string. Name and age template — Name and age solution — Name and age (Checker)

    def name_and_age(name, age):
    	return f'{name} is {age} years old'
    
    def test(name, age):
    	print(name_and_age(name, age))
    	
    test("Joe Warren", 52)
    test("Scott Rixner", 40)
    test("John Greiner", 46)
    
  10. Write a Python function point_distance that takes as the parameters x0, y0, x1 and y1, and returns the distance between the points $(x0,y0)$ and $(x1, y1)$. Point distance template — Point distance solution — Point distance (Checker)

    def point_distance(x0, y0, x1, y1):
    	return ( (x0 - y0)**2 + (x1 - y1)**2 )**.5
    
    def test(x0, y0, x1, y1):
    	print( "The distance from (" + str(x0) + ", " + str(y0) + ") to", end=' ')
    	print( "(" + str(x1) + ", " + str(y1) + ") is", end=' ')
    	print( str(point_distance(x0, y0, x1, y1)) + ".")
    
    test(2, 2, 5, 6)
    test(1, 1, 2, 2)
    test(0, 0, 3, 4)
    
  11. Challenge: Write a Python function triangle_area that takes the parameters x0, y0, x1,y1, x2, and y2, and returns the area of the triangle with vertices $(x0,y0)$, $(x1, y1)$ and $(x2, y2)$. (Hint: use the function point_distance as a helper function and apply Heron’s formula .) Triangle area template — Triangle area solution — Triangle area (Checker)

    def triangle_area(x0, y0, x1, y1, x2, y2):
    	a = ( (x0 - x1)**2 + (y0 - y1)**2 )**.5
    	b = ( (x1 - x2)**2 + (y1 - y2)**2 )**.5
    	c = ( (x2 - x0)**2 + (y2 - y0)**2 )**.5
    	s = (a + b + c)/2
    	area = (s * (s-a) * (s-b) * (s-c))**.5
    	return area
    
    
    def test(x0, y0, x1, y1, x2, y2):
    	print( "A triangle with vertices (" + str(x0) + "," + str(y0) + "),", end=' ')
    	print( "(" + str(x1) + "," + str(y1) + "), and", end=' ')
    	print( "(" + str(x2) + "," + str(y2) + ") has an area of", end=' ')
    	print( str(triangle_area(x0, y0, x1, y1, x2, y2)) + ".")
    
    
    test(0, 0, 3, 4, 1, 1)
    test(-2, 4, 1, 6, 2, 1)
    test(10, 0, 0, 0, 0, 10)
    
  12. Challenge: Write a Python function print_digits that takes an integer number in the range $[0,100)$, i.e., at least 0, but less than 100. It prints the message "The tens digit is %, and the ones digit is %.", where the percent signs should be replaced with the appropriate values. (Hint: Use the arithmetic operators for integer division // and remainder % to find the two digits. Note that this function should print the desired message, rather than returning it as a string. Print digits template — Print digits solution — Print digits (Checker)

    def print_digits(n):
    	tens = n // 10 % 10
    	ones = n % 10
    	print(f'The tens digit is {tens}, and the ones digit is {ones}.')
    
    
    print_digits(42)
    print_digits(99)
    print_digits(5)
    
  13. Challenge: Powerball is lottery game in which 6 numbers are drawn at random. Players can purchase a lottery ticket with a specific number combination and, if the number on the ticket matches the numbers generated in a random drawing, the player wins a massive jackpot. Write a Python function powerball that takes no arguments and prints the message "Today's numbers are %, %, %, %, and %. The Powerball number is %.". The first five numbers should be random integers in the range $[1,60)$, i.e., at least 1, but less than 60. In reality, these five numbers must all be distinct, but for this problem, we will allow duplicates. The Powerball number is a random integer in the range $[1,36)$, i.e., at least 1 but less than 36. Use the random module and the function random.randrange to generate the appropriate random numbers.Note that this function should print the desired message, rather than returning it as a string. Powerball template — Powerball solution — Powerball (Checker)

    def powerball():
    	import random
    	def r():
    		return random.randrange(1, 36)
    
    	print( f"Today's numbers are {r()}, {r()}, {r()}, {r()}, and {r()}.",
               f" The Powerball number is {r()}." )
    
    
    powerball()
    powerball()
    powerball()