7 **4

"""
Explanation: Python Crash Course Exercises - Solutions
This is an optional exercise to test your understanding of Python Basics. If you find this extremely challenging, then you probably are not ready for the rest of this course yet and don't have enough programming experience to continue. I would suggest you take another course more geared towards complete beginners, such as Complete Python Bootcamp
Exercises
Answer the questions or complete the tasks outlined in bold below, use the specific method described if applicable.
 What is 7 to the power of 4?
End of explanation
"""


s = 'Hi there Sam!'

s.split()

"""
Explanation: Split this string:
s = "Hi there Sam!"

into a list.
End of explanation
"""


planet = "Earth"
diameter = 12742

print("The diameter of {} is {} kilometers.".format(planet,diameter))

"""
Explanation: Given the variables:
planet = "Earth"
diameter = 12742

 Use .format() to print the following string: 
The diameter of Earth is 12742 kilometers.
End of explanation
"""


lst = [1,2,[3,4],[5,[100,200,['hello']],23,11],1,7]

lst[3][1][2][0]

"""
Explanation: Given this nested list, use indexing to grab the word "hello"
End of explanation
"""


d = {'k1':[1,2,3,{'tricky':['oh','man','inception',{'target':[1,2,3,'hello']}]}]}

d['k1'][3]['tricky'][3]['target'][3]

"""
Explanation: Given this nest dictionary grab the word "hello". Be prepared, this will be annoying/tricky
End of explanation
"""


# Tuple is immutable

"""
Explanation: What is the main difference between a tuple and a list?
End of explanation
"""


def domainGet(email):
    return email.split('@')[-1]

domainGet('user@domain.com')

"""
Explanation: Create a function that grabs the email website domain from a string in the form: 
user@domain.com

So for example, passing "user@domain.com" would return: domain.com
End of explanation
"""


def findDog(st):
    return 'dog' in st.lower().split()

findDog('Is there a dog here?')

"""
Explanation: Create a basic function that returns True if the word 'dog' is contained in the input string. Don't worry about edge cases like a punctuation being attached to the word dog, but do account for capitalization.
End of explanation
"""


def countDog(st):
    count = 0
    for word in st.lower().split():
        if word == 'dog':
            count += 1
    return count

countDog('This dog runs faster than the other dog dude!')

"""
Explanation: Create a function that counts the number of times the word "dog" occurs in a string. Again ignore edge cases.
End of explanation
"""


seq = ['soup','dog','salad','cat','great']

list(filter(lambda word: word[0]=='s',seq))

"""
Explanation: Use lambda expressions and the filter() function to filter out words from a list that don't start with the letter 's'. For example:
seq = ['soup','dog','salad','cat','great']

should be filtered down to:
['soup','salad']
End of explanation
"""


def caught_speeding(speed, is_birthday):
    
    if is_birthday:
        speeding = speed - 5
    else:
        speeding = speed
    
    if speeding > 80:
        return 'Big Ticket'
    elif speeding > 60:
        return 'Small Ticket'
    else:
        return 'No Ticket'

caught_speeding(81,True)

caught_speeding(81,False)

"""
Explanation: Final Problem
You are driving a little too fast, and a police officer stops you. Write a function
  to return one of 3 possible results: "No ticket", "Small ticket", or "Big Ticket". 
  If your speed is 60 or less, the result is "No Ticket". If speed is between 61 
  and 80 inclusive, the result is "Small Ticket". If speed is 81 or more, the result is "Big    Ticket". Unless it is your birthday (encoded as a boolean value in the parameters of the function) -- on your birthday, your speed can be 5 higher in all 
  cases.
End of explanation
"""


