Homework Solution

Error Checking and Exceptions

Problems to be Submitted (18 points)

  1. (6 points)

    def getInt(small,large):
        prompt = 'Enter a number from %d to %d: ' % (small,large)
        errorMsg = 'Your number must be between %d and %d.' % (small,large)
        number = small-1                      # intentionally invalid
        while not small <= number <= large:
          try:
            number = int(raw_input(prompt))
            if not small <= number <= large:
              print errorMsg
          except ValueError:
            print 'That is not a valid integer.'
        return number
    

    (click to see it run live)


  2. (6 points)

    def sliding(word, num=3):
        if not isinstance(word,str):
            raise TypeError('first parameter must be a string')
        if not isinstance(num,int):
            raise TypeError('second parameter must be an integer')
        if not 0 < num <= len(word):
            raise ValueError('second parameter can be at most length of first')
    


  3. (6 points)

    def toDecimal(string, base):
        if not isinstance(base, int):
            raise TypeError('base must be integral')
        if not 2 <= base <= 36:
            raise ValueError('base must be between 2 and 36')
        if not isinstance(string, str):
            raise TypeError('value must be expressed as a string')
        for digit in string:
    	if digit.isdigit():
    	    if not 0 <= int(digit) < base:
                    raise ValueError('invalid digit for given base')
    	else
    	    val = 10 + ord(digit) - ord('A')
    	    if not 10 <= val < base:
                    raise ValueError('invalid digit for given base')
    


Extra Credit

  1. (2 points)

    def getInt(small,large):
        if not (isinstance(small,int) and isinstance(large,int)):
            raise TypeError('parameters must be integer')
        if not small < large:
            raise ValueError('large must be bigger than small')
        ...
    

Last modified: Tuesday, 07 March 2017