Skip to content

Commit 38fc609

Browse files
Design Spreadsheet
1 parent 2a97a79 commit 38fc609

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Mis/Design_Spreadsheet.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Spreadsheet():
2+
def __init__(self, rows):
3+
self.rows = rows
4+
self.grid = [[0]*26 for _ in range(rows)]
5+
6+
def _parse_cell(self, cell):
7+
col = ord(cell[0]) - ord('A')
8+
row = int(cell[1:]) - 1
9+
return row, col
10+
11+
def setCell(self, cell, value):
12+
row, col = self._parse_cell(cell)
13+
self.grid[row][col] = value
14+
15+
def resetCell(self, cell):
16+
row, col = self._parse_cell(cell)
17+
self.grid[row][col] = 0
18+
19+
def _get_operand_value(self, operand):
20+
if operand[0].isalpha():
21+
row, col = self._parse_cell(operand)
22+
return self.grid[row][col]
23+
else:
24+
return int(operand)
25+
26+
def getValue(self, formula):
27+
formula = formula[1:]
28+
left, right = formula.split('+')
29+
val1 = self._get_operand_value(left)
30+
val2 = self._get_operand_value(right)
31+
return val1+val2
32+
33+
spreadsheet = Spreadsheet(3)
34+
35+
print(spreadsheet.getValue("=5+7"))
36+
spreadsheet.setCell("A1", 10)
37+
print(spreadsheet.getValue("=A1+6"))
38+
spreadsheet.setCell("B2", 15)
39+
print(spreadsheet.getValue("=A1+B2"))
40+
spreadsheet.resetCell("A1")
41+
print(spreadsheet.getValue("=A1+B2"))

0 commit comments

Comments
 (0)