Solutions


Try solving the exercise yourself first before checking the solution!

Python Basics: Exercises

Data Types

# 1. 
(11 - 3)/(5 - 2)
# 2. 
(150 - 120)/120
# 3. 
(80 * 0.3) + (90 * 0.5) + (70 * 0.2)
# 4. 
0.3 * 0.5
# 5. 
1000*(1 + 0.05)**3

Variables

# 1. 
weight / (height**2)
# 2. 
(C * (9/5)) + 32
# 3. 
(x - mu) / sigma
# 4. 
sigma**2
# 5. 
1 - prob_a

Data Structures

# 1. 
sum(data)/len(data)
# 2. 
[ [1,0,0], [0,1,0], [0,0,1] ]
# 3. 
len(notes["Math"]) + len(notes["Data"]) + len(notes["Stats"])
# 4. 
((v[0]-u[0])**2 + (v[1]-u[1])**2)**0.5
# 5. 
max(data) - min(data)

Python Intermediate: Exercises

Indexing

# 1. 
exam_scores.sort()
n = len(exam_scores)
mid1 = n//2 - 1
mid2 = n//2
(exam_scores[mid1] + exam_scores[mid2]) / 2
# 2. 
course["course_id"][4:14]
# 3. 
data.sort()
idx = int(0.25 * len(data))
data[idx]
# 4. 
matrix[14][6]
# 5. 
product_code[:27] + product_code[28:]

Conditional Statements

# 1. 
if category == "A":
    result = [1,0]
else:
    result = [0,1]
# 2. 
if probability > 0.5:
    result = "Buy"
else:
    result = "No Buy"
# 3. 
if predicted == actual:
    result = "Correct"
else:
    result = "Incorrect"
# 4. 
if x > 0:
    result = x
else:
    result = 0
# 5. 
"Class A" if feature1 > 5 and feature2 <= 3 else "Class B" if feature1 > 5 and feature2 > 3 else "Class C"

Loops

# 1. 
expected = 0
for i in range(len(outcomes)):
    expected += outcomes[i] * probabilities[i]
# 2. 
variance = 0
for i in range(len(data)):
    variance += (data[i] - mean) ** 2
variance /= len(data)
# 3. 
for first in letters:
    for second in letters:
        combinations.append(first + second)
# 4. 
for x in values:
    if x < 10:
        bins[0] += 1
    elif x < 20:
        bins[1] += 1
    else:
        bins[2] += 1
# 5. 
scaled = []
for x in data:
    scaled.append((x - x_min) / (x_max - x_min))

Python Advanced: Exercises

Functions

# 1. 
def abs_error(y, yhat):
    errors = []
    for true, pred in zip(y, yhat):
      errors.append(abs(true - pred))
    return errors
# 2. 
def normalize(xs):
    total = sum(xs)
    probs = []
    for x in xs: 
      probs.append(x / total)
    return probs
# 3. 
def bernoulli(outcomes, p): 
    probs = [0.3 if x == 1 else 0.7 for x in outcomes]
    return probs
# 4. 
def fib(n):
    sequence = [1,1]
    for i in range(2,n):
      sequence.append(sequence[i-1] + sequence[i-2])
    return sequence
# 5. 
def f(xs):
    ys = []
    for x in xs:
      ys.append(x**3 + 2*x**2 + 5*x + 10)
    return ys

Objects

# 1. 
class Counter:
    def __init__(self, values):
        self.values = values
    def count_above(self, threshold):
        return sum(1 for x in self.values if x > threshold)
# 2. 
class Scaler:
    def __init__(self, values):
        self.values = values
    def scale(self, factor):
        return [factor * value for value in self.values]
# 3. 
class Text:
    def __init__(self, content):
        self.content = content
    def word_count(self):
        return len(self.content.split())
# 4. 
class Text:
    def __init__(self, content):
        self.content = content
    def count_char(self, char):
        return self.content.count(char)
# 5. 
class Text:
    def __init__(self, content):
        self.content = content
    def first_word(self):
        return self.content.split()[0]

Import Statements

# 1. 
math.factorial(15)
# 2. 
Counter(data)
# 3. 
[random.randint(1, 10) for _ in range(5)]
# 4. 
np.dot(matrix, vector)
# 5. 
data["A"].mean()