On 21/12/2011 19:12, Dean Richardson P.Eng wrote:
Hi All,
I'm a newbie just learning Python, using a couple of books to learn the
language. (Books: "Visual Quickstart Guide - Python, 2nd Ed", "Practical
Programming - An Intro to Computer Science using Python"). I'm just now
learning OOP material as presented in both books -- I'm new to this
approach -- the last formal language I learned was Fortran77 -- :o)  I
am running Python 3.2.1 on Mac OS/X 10.6.8.

My problem stems from a simple example in the Visual Quickstart book.
The code is:
----------------------------
#person.py
class Person:
"""Class to represent a person"""
     def __init__(self):
         self.name=' '
         self.age=0
     def display(self):
         print("Person('%s', age)" %
               (self.name, self.age))
  -------------------------
  When I run this, the shell presents thus:
 >>> ================================ RESTART
================================
 >>>
 >>> p=Person()
 >>> p.name <http://p.name>='Bob'
 >>> p.age=24
 >>> p.display()
Traceback (most recent call last):
   File "<pyshell#33>", line 1, in <module>
     p.display()
   File "/Volumes/dean_richardson/GoFlex Home Personal/Dean's
Code/Python3.x/Person.py", line 9, in display
     (self.name <http://self.name>, self.age))
TypeError: not all arguments converted during string formatting
 >>>
---------------
I'm sure this is something simple, but I can't see it. Any help appreciated!

It should be:

print("Person('%s', %s)" % (self.name, self.age))

As it is, you're giving it 2 values but only %s placeholder.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to