77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
########## This file only contains the question 2, 4, and 10. The rest is in the BoundedInt.py. ##########
|
|
|
|
|
|
|
|
# 2. Modify the template to pass test 1, which checks that int() called on your class will return the value of i.
|
|
|
|
# class BoundedInt():
|
|
# def __init__(self, i, min, max):
|
|
# """
|
|
# Create a bounded integer.
|
|
|
|
# Args:
|
|
# i (int): The initial value of the integer.
|
|
# min (int): The minimum value of the integer.
|
|
# max (int): The maximum value of the integer.
|
|
# """
|
|
# self.i = i
|
|
# self.min = min
|
|
# self.max = max
|
|
|
|
# def __int__(self):
|
|
# """
|
|
# Convert the bounded integer to int.
|
|
|
|
# Returns:
|
|
# int: The value of the bounded integer.
|
|
# """
|
|
# return self.i
|
|
|
|
|
|
|
|
# 4. In that reading material, there's a sentence that starts with "For instance, to evaluate the expression x + y, "...
|
|
# What do you think the types of x and y are? Guess, without checking first.
|
|
# What are they, actually? You can use the debugger's local window to find out.
|
|
|
|
# x might be an instance of a class that has defined the __add__() method
|
|
# And y is the object that is compatible with the x instance for the addition operation.
|
|
|
|
class MyClass:
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
def __add__(self, other):
|
|
if isinstance(other, MyClass):
|
|
return MyClass(self.value + other.value)
|
|
elif isinstance(other, int):
|
|
return MyClass(self.value + other)
|
|
else:
|
|
raise TypeError("Unsupported operand type.")
|
|
|
|
# Example usage
|
|
obj1 = MyClass(5)
|
|
obj2 = MyClass(10)
|
|
result1 = obj1 + obj2 # Calls obj1.__add__(obj2)
|
|
print(result1.value) # Output: 15
|
|
|
|
result2 = obj1 + 3 # Calls obj1.__add__(3)
|
|
print(result2.value) # Output: 8
|
|
|
|
|
|
|
|
# 10. Think about how you would change the template so it could allow adding a BoundedInt to an emoji,
|
|
# if there was a hypothetical function sentiment(emoji) which returned a floating point number from -10.0 to 10.0
|
|
# which indicated whether the emoji was happy or sad. e.g. BoundedInt(1, min = 1, max = 10) + 😁 would raise ValueError.
|
|
|
|
# By adding the conceptional function 'sentiment(emoji)' in the '__add__()' method
|
|
# The sentiment will analyze the happy level of the input emoji and return a floating number from a number range
|
|
# For example:
|
|
# 10 for a 😊 smiley face
|
|
# -10 for a frowny face
|
|
# 0 for a 🍕
|
|
# The protential code can be like this:
|
|
'''
|
|
elif isinstance(other, str) and sentiment(other) < 0:
|
|
aise ValueError("Cannot add a BoundedInt to a sad emoji")
|
|
'''
|