Skip to content

Commit c587591

Browse files
committed
Bug fixes
1 parent 59415cf commit c587591

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

calc.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
class Calc(ParseArg):
55
def solve(self):
66
self.clean()
7-
self.pol = [*self.s_equ][-1]
87
self.polynomial()
98
if self.pol == 1:
109
self.linear()
@@ -16,10 +15,18 @@ def clean(self):
1615
for x in self.equ:
1716
if self.equ[x] != 0:
1817
temp[x] = self.equ[x]
19-
self.s_equ = dict(sorted(temp.items(), key=lambda item: item[0]))
20-
if bool(self.s_equ) == False:
18+
if bool(temp) == False:
2119
sys.exit('Each real number is a solution!')
22-
20+
self.s_equ = dict(sorted(temp.items(), key=lambda item: item[0]))
21+
self.pol = [*self.s_equ][-1]
22+
i = 0
23+
while i < self.pol:
24+
if i in self.s_equ.keys():
25+
pass
26+
else:
27+
self.s_equ[i] = 0
28+
i += 1
29+
2330
def polynomial(self):
2431
print ('Polynomial degree: %d' % int(self.pol))
2532
if self.pol > 2:
@@ -29,7 +36,8 @@ def polynomial(self):
2936

3037
def linear(self):
3138
result = -(self.s_equ[0]) / self.s_equ[1]
32-
print (int(result) if result == int(result) else result)
39+
print ('The solution is:')
40+
print (int(result) if result == int(result) else round(result, 6))
3341

3442
def quadratic(self):
3543
result = [0] * 2

parse.py

+11-4
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@ def __init__(self, av):
88

99
def process(self, av):
1010
raw = av.replace(" ", "").split("=")
11+
self.trim(raw)
1112
if len(raw) != 2:
12-
sys.exit('Input contains invalid equation!')
13+
sys.exit('Input contains an invalid equation!')
1314
self.parse(raw[0], 1)
1415
self.parse(raw[1], -1)
1516

1617
def parse(self, side, sv):
1718
val = 1.0
1819
sign = 1
1920
parts = re.split('([+-]+)', side)
21+
self.trim(parts)
2022
if re.match('[+-]+', parts[-1]):
21-
sys.exit('Input contains invalid equation!')
23+
sys.exit('Input contains an invalid equation!')
2224
for i in parts:
2325
if re.match('[+-]+', i):
2426
sign = -1 if i.count('-') % 2 == 1 else 1
@@ -33,14 +35,19 @@ def parse(self, side, sv):
3335
if (nums[0] != ''):
3436
val = float(nums[0])
3537
x = 1
36-
elif re.match('\d+(\.?\d+)*', i):
38+
elif re.match('^(\d+(\.?\d+)*)$', i):
3739
val = float(i)
3840
x = 0
3941
else:
40-
sys.exit('Input contains invalid equation!')
42+
sys.exit('Input contains an invalid equation!')
4143
self.update(val * sign, x, sv)
4244
val = 1
4345

46+
def trim(self, lst):
47+
for i in lst:
48+
if i == '':
49+
lst.remove(i)
50+
4451
def update(self, val, x, sv):
4552
if (x in self.equ):
4653
self.equ[x] += val * sv

0 commit comments

Comments
 (0)