Need help to understand not the answer
MRAB
python at mrabarnett.plus.com
Sat Jul 29 15:49:27 EDT 2017
On 2017-07-29 20:16, new_to_c0ding wrote:
> Hello all,
> I have been scratching my head since morning but could not understand this quiz question. I would appreciate if someone could help me understand what is it asking me to do. I dont need the answer but just the right direction to look at.
>
> ### Do not change the Location or Campus classes. ###
> ### Location class is the same as in lecture. ###
> class Location(object):
> def __init__(self, x, y):
> self.x = x
> self.y = y
> def move(self, deltaX, deltaY):
> return Location(self.x + deltaX, self.y + deltaY)
> def getX(self):
> return self.x
> def getY(self):
> return self.y
> def dist_from(self, other):
> xDist = self.x - other.x
> yDist = self.y - other.y
> return (xDist**2 + yDist**2)**0.5
> def __eq__(self, other):
> return (self.x == other.x and self.y == other.y)
> def __str__(self):
> return '<' + str(self.x) + ',' + str(self.y) + '>'
>
> class Campus(object):
> def __init__(self, center_loc):
> self.center_loc = center_loc
> def __str__(self):
> return str(self.center_loc)
> class MITCampus(Campus):
> """ A MITCampus is a Campus that contains tents """
> def __init__(self, center_loc, tent_loc = Location(0,0)):
> """ Assumes center_loc and tent_loc are Location objects
> Initializes a new Campus centered at location center_loc
> with a tent at location tent_loc """
> # Your code here
>
> def add_tent(self, new_tent_loc):
> """ Assumes new_tent_loc is a Location
> Adds new_tent_loc to the campus only if the tent is at least 0.5 distance
> away from all other tents already there. Campus is unchanged otherwise.
> Returns True if it could add the tent, False otherwise. """
> # Your code here
>
> def remove_tent(self, tent_loc):
> """ Assumes tent_loc is a Location
> Removes tent_loc from the campus.
> Raises a ValueError if there is not a tent at tent_loc.
> Does not return anything """
> # Your code here
>
> def get_tents(self):
> """ Returns a list of all tents on the campus. The list should contain
> the string representation of the Location of a tent. The list should
> be sorted by the x coordinate of the location. """
> # Your code here
>
>
>
> -=-=-=-=-=-=-=
>
> For example, if c = MITCampus(Location(1,2)) then executing the following sequence of commands:
>
> c.add_tent(Location(2,3)) should return True
> c.add_tent(Location(1,2)) should return True
> c.add_tent(Location(0,0)) should return False
> c.add_tent(Location(2,3)) should return False
> c.get_tents() should return ['<0,0>', '<1,2>', '<2,3>']
>
> -=-=-=-=-=-=-
>
> Now as per instructions, class MITCampus(Campus) has (self, center_loc, tent_loc = Location(0,0)) and it is mentioned that center_loc and tent_loc are Location objects but when I code them as Locations, I get error from the tester:
> Traceback (most recent call last):
> File "submission.py", line 61, in __init__
> self.cloc=Location(center_loc)
> TypeError: __init__() missing 1 required positional argument: 'y'
>
> -=-=-=-==
>
> Please help
>
Location.__init__ expects 3 arguments: self, x, y
self is already provided, so that leaves 2 arguments: x, y
You're giving it only 1 argument: center_loc
What is center_loc? Is it a tuple?
If it is, then you could do:
self.cloc=Location(center_loc[0], center_loc[1])
or:
self.cloc=Location(*center_loc)
More information about the Python-list
mailing list