t | class Calculator: | t | class Calculator: |
| | | |
| def __init__(self): | | def __init__(self): |
| self.variables = {} | | self.variables = {} |
| self.allowed_namespaces = {'__builtins__': {}} | | self.allowed_namespaces = {'__builtins__': {}} |
| | | |
| def process_input(self, line): | | def process_input(self, line): |
| line = line.strip() | | line = line.strip() |
| if not line or line.startswith('#'): | | if not line or line.startswith('#'): |
| return None | | return None |
| if '=' in line: | | if '=' in line: |
| identifier, expr = map(str.strip, line.split('=', 1)) | | identifier, expr = map(str.strip, line.split('=', 1)) |
| return self.assign(identifier, expr) | | return self.assign(identifier, expr) |
| return self.evaluate_expression(line) | | return self.evaluate_expression(line) |
| | | |
| def assign(self, identifier, expr): | | def assign(self, identifier, expr): |
| if not identifier.isidentifier(): | | if not identifier.isidentifier(): |
| return 'Assignment error' | | return 'Assignment error' |
| try: | | try: |
| self.variables[identifier] = eval(expr, self.allowed_namespa | | self.variables[identifier] = eval(expr, self.allowed_namespa |
| ces, self.variables) | | ces, self.variables) |
| except SyntaxError: | | except SyntaxError: |
| return 'Syntax error' | | return 'Syntax error' |
| except NameError: | | except NameError: |
| return 'Name error' | | return 'Name error' |
| except Exception: | | except Exception: |
| return 'Runtime error' | | return 'Runtime error' |
| return None | | return None |
| | | |
| def evaluate_expression(self, expr): | | def evaluate_expression(self, expr): |
| try: | | try: |
| result = eval(expr, self.allowed_namespaces, self.variables) | | result = eval(expr, self.allowed_namespaces, self.variables) |
| return result | | return result |
| except SyntaxError: | | except SyntaxError: |
| return 'Syntax error' | | return 'Syntax error' |
| except NameError: | | except NameError: |
| return 'Name error' | | return 'Name error' |
| except Exception: | | except Exception: |
| return 'Runtime error' | | return 'Runtime error' |
| calculator = Calculator() | | calculator = Calculator() |
| while True: | | while True: |
| line = input().strip() | | line = input().strip() |
| if not line: | | if not line: |
| break | | break |
| result = calculator.process_input(line) | | result = calculator.process_input(line) |
| if result is not None: | | if result is not None: |
| print(result) | | print(result) |