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