CMU Coding Bootcamp

feat: oct 1 level 2

thecoded.prof 22888541 771847f6

verified
+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
··· 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
··· 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
··· 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!")