Challenge - 5 Problems
Comparison Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of custom __eq__ method
What is the output of this code?
Python
class Box: def __init__(self, volume): self.volume = volume def __eq__(self, other): return self.volume == other.volume b1 = Box(10) b2 = Box(10) b3 = Box(5) print(b1 == b2) print(b1 == b3)
Attempts:
2 left
💡 Hint
The __eq__ method compares the volume attribute of two Box objects.
✗ Incorrect
The __eq__ method returns True if the volumes are equal. b1 and b2 have volume 10, so b1 == b2 is True. b1 and b3 have different volumes, so b1 == b3 is False.
❓ Predict Output
intermediate2:00remaining
Output of __lt__ and __gt__ methods
What is the output of this code?
Python
class Number: def __init__(self, value): self.value = value def __lt__(self, other): return self.value < other.value def __gt__(self, other): return self.value > other.value n1 = Number(3) n2 = Number(5) print(n1 < n2) print(n1 > n2)
Attempts:
2 left
💡 Hint
The __lt__ method checks if one value is less than the other, __gt__ checks if greater.
✗ Incorrect
n1.value is 3 and n2.value is 5. 3 < 5 is True, 3 > 5 is False.
❓ Predict Output
advanced2:00remaining
Output of __le__ and __ge__ with inheritance
What is the output of this code?
Python
class Base: def __init__(self, x): self.x = x def __le__(self, other): return self.x <= other.x def __ge__(self, other): return self.x >= other.x class Derived(Base): pass b = Base(7) d = Derived(7) print(b <= d) print(b >= d)
Attempts:
2 left
💡 Hint
Derived inherits comparison methods from Base and both have the same x value.
✗ Incorrect
Both b and d have x = 7. So b <= d and b >= d both return True.
❓ Predict Output
advanced2:00remaining
Output of __eq__ with different types
What is the output of this code?
Python
class Item: def __init__(self, id): self.id = id def __eq__(self, other): if not isinstance(other, Item): return False return self.id == other.id item = Item(10) print(item == 10) print(item == Item(10))
Attempts:
2 left
💡 Hint
The __eq__ method returns False if the other object is not an Item instance.
✗ Incorrect
item == 10 returns False because 10 is not an Item. item == Item(10) returns True because ids match.
❓ Predict Output
expert3:00remaining
Output of chained comparisons with custom __lt__
What is the output of this code?
Python
class Weird: def __init__(self, val): self.val = val def __lt__(self, other): print(f"Comparing {self.val} < {other.val}") return self.val < other.val w1 = Weird(1) w2 = Weird(2) w3 = Weird(3) print(w1 < w2 < w3)
Attempts:
2 left
💡 Hint
Python evaluates chained comparisons by checking each pair separately.
✗ Incorrect
The expression w1 < w2 < w3 calls __lt__ twice: w1 < w2 and w2 < w3. Both print statements appear, and since 1 < 2 and 2 < 3 are True, the final output is True.