def checkWithin(result: float, expected: float, tolerance: float, name: str) -> None:
assert abs(result - expected) < tolerance, name
checkWithin(0.3 - 0.2, 0.1, 0.001, "Floating-point math")
checkWithin(0.3 - 0.2, 0.1, 0, "Too intolerant!")
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) Input In [2], in <cell line: 5>() 2 assert abs(result - expected) < tolerance, name 4 checkWithin(0.3 - 0.2, 0.1, 0.001, "Floating-point math") ----> 5 checkWithin(0.3 - 0.2, 0.1, 0, "Too intolerant!") Input In [2], in checkWithin(result, expected, tolerance, name) 1 def checkWithin(result: float, expected: float, tolerance: float, name: str) -> None: ----> 2 assert abs(result - expected) < tolerance, name AssertionError: Too intolerant!
from math import sqrt
def hypotenuse(a: float, b: float) -> float:
return sqrt(a**2 + b**2)
print(hypotenuse(4, 5) > 7)
False
def pos(x: float) -> float:
"""
If x is not zero, return the absolute value of x.
Otherwise, return 1.
"""
if x < 0:
return -x
elif x == 0:
return 1
else: # x > 0
return x
def clamp(x: float, minVal: float, maxVal: float) -> float:
"""
If x is between minVal and maxVal, return x. Otherwise return minVal if x
is below minVal, or maxVal if it's above maxVal.
"""
assert minVal <= maxVal, "minVal cannot be greater than maxVal"
print("Before x < minVal")
if x < minVal:
print("In x < minVal")
return minVal
print("Between x < minVal and x > maxVal")
if x > maxVal:
print("In x > maxVal")
return maxVal
print("After x > maxVal")
return x
print("After return")
clamp(42, 0, 1)
Before x < minVal Between x < minVal and x > maxVal In x > maxVal
1
def clamp(x: float, minVal: float, maxVal: float) -> float:
"""
If x is between minVal and maxVal, return x. Otherwise return minVal if x
is below minVal, or maxVal if it's above maxVal.
"""
assert minVal <= maxVal, "minVal cannot be greater than maxVal"
print("Before x < minVal")
if x < minVal:
print("In x < minVal")
x = minVal
print("Between x < minVal and x > maxVal")
if x > maxVal:
print("In x > maxVal")
x = maxVal
print("After x > maxVal")
return x
print("After return")
clamp(42, 0, 1)
Before x < minVal Between x < minVal and x > maxVal In x > maxVal After x > maxVal
1
x = hypotenuse(4, 5) > 7
print(x)
False
def clamp(x: float, minVal: float, maxVal: float) -> float:
"""
If x is between minVal and maxVal, return x. Otherwise return minVal if x
is below minVal, or maxVal if it's above maxVal.
"""
assert minVal <= maxVal, "minVal cannot be greater than maxVal"
print("A")
if x >= minVal:
print("B")
if x <= maxVal:
print("C")
# x >= minVal and x <= maxVal
return x
else:
print("D")
return maxVal
print("E")
else:
print("F")
return minVal
clamp(42, 0, 1)
A B D
1