-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalulator.py
77 lines (67 loc) · 2.31 KB
/
calulator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import math
class Calculator:
def __init__(self, numbers):
self.numbers = numbers
self.history = []
self.last_result = None
def add(self):
result = sum(self.numbers)
self.last_result = result
self.history.append(('add', self.numbers, result))
return result
def subtract(self):
result = self.numbers[0] - sum(self.numbers[1:])
self.last_result = result
self.history.append(('subtract', self.numbers, result))
return result
def multiply(self):
result = 1
for num in self.numbers:
result *= num
self.last_result = result
self.history.append(('multiply', self.numbers, result))
return result
def divide(self):
result = self.numbers[0]
for num in self.numbers[1:]:
if num == 0:
raise ValueError("Cannot divide by zero")
result /= num
self.last_result = result
self.history.append(('divide', self.numbers, result))
return result
def sqrt(self):
result = [math.sqrt(num) for num in self.numbers]
self.last_result = result
self.history.append(('sqrt', self.numbers, result))
return result
def exponent(self, power):
result = [num ** power for num in self.numbers]
self.last_result = result
self.history.append(('exponent', self.numbers, result))
return result
def display_history(self):
for operation in self.history:
print("Operation: ", operation[0])
print("Numbers: ", operation[1])
print("Result: ", operation[2])
print("-" * 20)
@staticmethod
def get_input():
numbers = input("Enter the numbers separated by commas: ")
numbers = [int(num) for num in numbers.split(',')]
return numbers
#usage example
numbers = Calculator.get_input()
calc = Calculator(numbers)
print("Addition: ", calc.add())
print("Subtraction: ", calc.subtract())
print("Multiplication: ", calc.multiply())
try:
print("Division: ", calc.divide())
except ValueError as e:
print(e)
print("Square roots: ", calc.sqrt())
print("Exponentiation (power=2): ", calc.exponent(2))
print("Last result: ", calc.last_result)
calc.display_history()