Libraries and Modules in Python

Solutions

In [20]:
class GuessGame:
    """
        This class provides a simple guessing game. You create an object
        of the class with its own secret, with the aim that a user
        then needs to try to guess what the secret is.
    """
    def __init__(self, secret, max_guesses=5):
        """Create a new guess game
        
           secret -- the secret that must be guessed
           max_guesses -- the maximum number of guesses allowed by the user
        """
        self._secret = secret
        self._nguesses = 0
        self._max_guesses = max_guesses
    def guess(self, value):
        """Try to guess the secret. This will print out to the screen whether
           or not the secret has been guessed.
        
           value -- the user-supplied guess
        """
        if (self.nGuesses() >= self.maxGuesses()):
            print("Sorry, you have run out of guesses")
        elif (value == self._secret):
            print("Well done - you have guessed my secret")
        else:
            self._nguesses += 1
            print("Try again...")
    def nGuesses(self):
        """Return the number of incorrect guesses made so far"""
        return self._nguesses
    def maxGuesses(self):
        """Return the maximum number of incorrect guesses allowed"""
        return self._max_guesses
In [21]:
help(GuessGame)
Help on class GuessGame in module __main__:
class GuessGame(builtins.object)
 |  GuessGame(secret, max_guesses=5)
 |  
 |  This class provides a simple guessing game. You create an object
 |  of the class with its own secret, with the aim that a user
 |  then needs to try to guess what the secret is.
 |  
 |  Methods defined here:
 |  
 |  __init__(self, secret, max_guesses=5)
 |      Create a new guess game
 |      
 |      secret -- the secret that must be guessed
 |      max_guesses -- the maximum number of guesses allowed by the user
 |  
 |  guess(self, value)
 |      Try to guess the secret. This will print out to the screen whether
 |      or not the secret has been guessed.
 |      
 |      value -- the user-supplied guess
 |  
 |  maxGuesses(self)
 |      Return the maximum number of incorrect guesses allowed
 |  
 |  nGuesses(self)
 |      Return the number of incorrect guesses made so far
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

2

In [23]:
class Person:
    """Class the represents a Person, holding their name and age"""
    def __init__(self, name="unknown", age=0):
        """Construct a person with unknown name and an age of 0"""
        self.setName(name)
        self.setAge(age)
    def setName(self, name):
        """Set the person's name to 'name'"""
        self._name = str(name)  # str ensures the name is a string
    def getName(self):
        """Return the person's name"""
        return self._name
    def setAge(self, age):
        """Set the person's age. This must be a number between 0 and 130"""
        if (age < 0 or age > 130):
            print("Cannot set the age to an invalid value: %s" % age)
        self._age = age
    def getAge(self):
        """Return the person's age"""
        return self._age
In [24]:
p = Person(name="Peter Parker", age=21)
In [25]:
p.getName()
Out[25]:
'Peter Parker'
In [26]:
p.getAge()
Out[26]:
21

3

In [27]:
class Person:
    """Class the represents a Person, holding their name and age"""
    def __init__(self, name="unknown", age=0):
        """Construct a person with unknown name and an age of 0"""
        self.setName(name)
        self.setAge(age)
    def setName(self, name):
        """Set the person's name to 'name'"""
        self._name = str(name)  # str ensures the name is a string
    def getName(self):
        """Return the person's name"""
        return self._name
    def setAge(self, age):
        """Set the person's age. This must be a number between 0 and 130"""
        if (age < 0 or age > 130):
            print("Cannot set the age to an invalid value: %s" % age)
        self._age = age
    def getAge(self):
        """Return the person's age"""
        return self._age
    def _splitName(self):
        """Private function that splits the name into parts"""
        return self._name.split(" ")
    def getFirstName(self):
        """Return the first name of the person"""
        return self._splitName()[0]
    def getSurname(self):
        """Return the surname of the person"""
        return self._splitName()[-1]
In [28]:
p = Person(name="Peter Parker", age=21)
In [29]:
p.getFirstName()
Out[29]:
'Peter'
In [30]:
p.getSurname()
Out[30]:
'Parker'