+18
python/oct1/level2/chicagoHour.py
+18
python/oct1/level2/chicagoHour.py
···
1
+
def chicagoHour(parisHour: int) -> int:
2
+
"""Return the Chicago hour (12h time) given the Paris hour (24h time)."""
3
+
chicagoHour = parisHour + 5
4
+
twelveHour = chicagoHour % 12
5
+
return 12 if twelveHour == 0 else twelveHour
6
+
7
+
8
+
print("Testing chicagoHour()...", end="")
9
+
assert chicagoHour(0) == 5
10
+
assert chicagoHour(3) == 8
11
+
assert chicagoHour(7) == 12
12
+
assert chicagoHour(8) == 1
13
+
assert chicagoHour(12) == 5
14
+
assert chicagoHour(15) == 8
15
+
assert chicagoHour(19) == 12
16
+
assert chicagoHour(20) == 1
17
+
assert chicagoHour(23) == 4
18
+
print("Passed!")
+30
python/oct1/level2/getInRange.py
+30
python/oct1/level2/getInRange.py
···
1
+
def almostEqual(x, y):
2
+
return abs(x - y) < 10**-9
3
+
4
+
5
+
def getInRange(x: float, bound1: float, bound2: float) -> float:
6
+
"""Return x if it is between bound1 and bound2, inclusive.
7
+
Otherwise, return the nearest bound."""
8
+
lowBound = bound1
9
+
highBound = bound2
10
+
if bound2 < bound1:
11
+
lowBound = bound2
12
+
highBound = bound1
13
+
if x < lowBound:
14
+
return lowBound
15
+
elif x > highBound:
16
+
return highBound
17
+
else:
18
+
return x
19
+
20
+
21
+
print("Testing getInRange()...", end="")
22
+
assert getInRange(1, 3, 5) == 3
23
+
assert getInRange(4, 3, 5) == 4
24
+
assert getInRange(6, 5, 3) == 5
25
+
assert getInRange(5, 5, 3) == 5
26
+
assert getInRange(-1, -3, -5) == -3
27
+
assert getInRange(-4, -5, -3) == -4
28
+
assert getInRange(-6, -6, -3) == -6
29
+
assert almostEqual(getInRange(6.2, 6.3, 6.4), 6.3)
30
+
print("Passed!")
+31
python/oct1/level2/getNumberDescription.py
+31
python/oct1/level2/getNumberDescription.py
···
1
+
def getNumberDescription(n) -> str:
2
+
"""Return a description of the number n."""
3
+
description = ""
4
+
if isinstance(n, float):
5
+
if n < 0:
6
+
description += "negative "
7
+
else:
8
+
description += "non-negative "
9
+
description += "float"
10
+
elif isinstance(n, int):
11
+
if n % 2 == 0:
12
+
description += "even "
13
+
else:
14
+
description += "odd "
15
+
description += "int"
16
+
else:
17
+
description += "not a number"
18
+
return description
19
+
20
+
21
+
print("Testing getNumberDescription()...", end="")
22
+
assert getNumberDescription(124) == "even int"
23
+
assert getNumberDescription(123) == "odd int"
24
+
assert getNumberDescription(-124) == "even int"
25
+
assert getNumberDescription(-123) == "odd int"
26
+
assert getNumberDescription(-1.2) == "negative float"
27
+
assert getNumberDescription(1.2) == "non-negative float"
28
+
assert getNumberDescription(0.0) == "non-negative float"
29
+
assert getNumberDescription(0) == "even int"
30
+
assert getNumberDescription("yes") == "not a number"
31
+
print("Passed!")
+25
python/oct1/level2/getTriangeType.py
+25
python/oct1/level2/getTriangeType.py
···
1
+
def isLegalTriangle(s1: float, s2: float, s3: float) -> bool:
2
+
"""Return True if s1, s2, and s3 can form a legal triangle, False otherwise."""
3
+
return s1 + s2 > s3 and s2 + s3 > s1 and s3 + s1 > s2
4
+
5
+
6
+
def getTriangleType(a: float, b: float, c: float) -> str:
7
+
if not isLegalTriangle(a, b, c):
8
+
return "illegal"
9
+
if a == b and b == c:
10
+
return "equilateral"
11
+
elif a == b or b == c or c == a:
12
+
return "isosceles"
13
+
else:
14
+
return "scalene"
15
+
16
+
17
+
print("Testing getTriangleType()...", end="")
18
+
assert getTriangleType(5, 6, 7) == "scalene"
19
+
assert getTriangleType(7, 5, 6) == "scalene"
20
+
assert getTriangleType(6, 5, 5) == "isosceles"
21
+
assert getTriangleType(5, 6, 5) == "isosceles"
22
+
assert getTriangleType(5, 5, 6) == "isosceles"
23
+
assert getTriangleType(7, 7, 7) == "equilateral"
24
+
assert getTriangleType(1, 2, 3) == "illegal"
25
+
print("Passed!")