On Jul 2, 2008, at 12:36 PM, Christopher Spears wrote:

I'm working on problem 13-5 in Core Python Programming (2nd Edition). I am supposed to create point class. Here is what I have so far:

#!/usr/bin/python

class Point(object):
   def __init__(self, x=0.0,y=0.0):
       self.x = float(x)
        self.y = float(y)
        
   def __repr__(self):
       coord = (self.x,self.y)
        return coord
        
   def __str__(self):
        point_str = "(%f,%f)" % self.x, self.y
        return point_str

Hi Christopher,
The problem's right above here – string formatting takes only one value. If you're trying format more than one string, you have to pass them in as a tuple. Try this:

point_str = "(%f,%f)" % (self.x, self.y)


        
   def get_x(self):
       return self.x
        
   def get_y(self):
       return self.y
        
if __name__ == '__main__':
   print "Creating a point"
   x = raw_input("Enter a x value: ")
   y = raw_input("Enter a y value: ")
   p = Point(x,y)
   print p

I ran the script and got the following error message:

Creating a point
Enter a x value: 1
Enter a y value: 2
Traceback (most recent call last):
 File "point.py", line 27, in ?
   print p
 File "point.py", line 13, in __str__
   point_str = "(%f,%f)" % self.x, self.y
TypeError: not enough arguments for format string

Does anyone know what is wrong? I'm sure it is something obvious, but I can't see it.



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to