%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np

from IPython.html.widgets import interact, interactive, fixed
from IPython.display import display
from IPython.html import widgets

"""
Explanation: Interact Exercise 01
Import
End of explanation
"""


def print_sum(a, b):
    """Print the sum of the arguments a and b."""
    print(a + b)

"""
Explanation: Interact basics
Write a print_sum function that prints the sum of its arguments a and b.
End of explanation
"""


interact(print_sum, a = (-10., 10.,.1), b = (-8,8,2));


assert True # leave this for grading the print_sum exercise

"""
Explanation: Use the interact function to interact with the print_sum function.

a should be a floating point slider over the interval [-10., 10.] with step sizes of 0.1
b should be an integer slider the interval [-8, 8] with step sizes of 2.
End of explanation
"""


def print_string(s, length=False):
    """Print the string s and optionally its length."""
    l = len(s)
    print(s)
    if length:
        print(l)

"""
Explanation: Write a function named print_string that prints a string and additionally prints the length of that string if a boolean parameter is True.
End of explanation
"""


interact(print_string, s="Hello World!", length = True);

assert True # leave this for grading the print_string exercise

"""
Explanation: Use the interact function to interact with the print_string function.

s should be a textbox with the initial value "Hello World!".
length should be a checkbox with an initial value of True.
End of explanation
"""


