hw08

.py

School

University of California, Berkeley *

*We aren’t endorsed by this school

Course

88

Subject

Computer Science

Date

Dec 6, 2023

Type

py

Pages

4

Uploaded by MajorFogLeopard31 on coursehero.com

################ #### OOP ##### ################ class Error: """ >>> err1 = Error(12, "error.py") >>> err1.write() error.py:12 """ def __init__(self, line, file): "*** YOUR CODE HERE ***" self.line = line self.file = file def format(self): return self.file + ':' + str(self.line) def write(self): print(self.format()) class SyntaxError(Error): """ >>> err1 = SyntaxError(17, "lab10.py") >>> err1.write() lab10.py:17 SyntaxError : Invalid syntax >>> err1.add_code(4, "EOL while scanning string literal") >>> err2 = SyntaxError(18, "lab10.py", 4) >>> err2.write() lab10.py:18 SyntaxError : EOL while scanning string literal """ type = 'SyntaxError' msgs = {0 : "Invalid syntax", 1: "Unmatched parentheses", 2: "Incorrect indentation", 3: "missing colon"} def __init__(self, line, file, code=0): "*** YOUR CODE HERE ***" super().__init__(line,file) self.message = self.msgs[code] def format(self): "*** YOUR CODE HERE ***" end = self.type + ' : ' + self.message return self.file+":"+str(self.line)+" "+end def add_code(self, code, msg): "*** YOUR CODE HERE ***" self.msgs[code]=msg class ZeroDivisionError(Error): """ >>> err1 = ZeroDivisionError(273, "lab10.py") >>> err1.write() lab10.py:273 ZeroDivisionError : division by zero """ type = 'ZeroDivisionError' def __init__(self, line, file, message='division by zero'):
"*** YOUR CODE HERE ***" super().__init__(line,file) self.message = message def format(self): end = self.type + ' : ' + self.message "*** YOUR CODE HERE ***" return self.file+":"+str(self.line)+" "+end # Linked List Class class Link: """ >>> s = Link(1, Link(2, Link(3))) >>> s Link(1, Link(2, Link(3))) """ empty = () def __init__(self, first, rest=empty): assert rest is Link.empty or isinstance(rest, Link) self.first = first self.rest = rest def __repr__(self): if self.rest is not Link.empty: rest_str = ', ' + repr(self.rest) else: rest_str = '' return 'Link({0}{1})'.format(repr(self.first), rest_str) # Notice that this is not part of the Link class. def print_link(link): """Print elements of a linked list link. >>> link = Link(1, Link(2, Link(3))) >>> print_link(link) <1 2 3> >>> link1 = Link(1, Link(Link(2), Link(3))) >>> print_link(link1) <1 <2> 3> >>> link1 = Link(3, Link(Link(4), Link(5, Link(6)))) >>> print_link(link1) <3 <4> 5 6> """ print('<' + helper(link).rstrip() + '>') def helper(link): if link == Link.empty: return '' elif isinstance(link.first, Link): return '<' + helper(link.first).rstrip() + '> ' + helper(link.rest) else: return str(link.first) +' '+ helper(link.rest) ###################### #### Linked Lists #### ######################
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
  • Access to all documents
  • Unlimited textbook solutions
  • 24/7 expert homework help