Skip to content

Commit ba44ef1

Browse files
authored
Update equation.py
1 parent b58505b commit ba44ef1

File tree

1 file changed

+22
-14
lines changed
  • script/order_bot_program_module_custom/dialogue_section

1 file changed

+22
-14
lines changed

script/order_bot_program_module_custom/dialogue_section/equation.py

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#numpy
66
import numpy as np
77

8+
from time import sleep
9+
810
def equation(self):
911
self.line_speaker('請講一下是甚麼題目讓你連一元一次方程式都不會解的?')
1012
self.line_speaker('先講一下題目有幾個變數?')
@@ -15,9 +17,9 @@ def equation(self):
1517
self.line_speaker('請再說一次..')
1618
self.line_speaker('有{}個變數,請說{}個方程式。'.format(var_num,var_num))
1719
# AX=B
18-
A = np.array([[0]*var_num for _ in range(var_num)])
19-
B = np.array([[0] for _ in range(var_num)])
20-
X = np.array([[None] for _ in range(var_num)])
20+
A = np.array([[0]*var_num for _ in range(var_num)], dtype=float)
21+
B = np.array([[0] for _ in range(var_num)], dtype=float)
22+
X = np.array([[None] for _ in range(var_num)], dtype=float)
2123
for i in range(var_num):
2224
while True:
2325
self.line_speaker('可以開始說了..')
@@ -26,12 +28,12 @@ def equation(self):
2628
math_line = re.sub(r'[負副富減]+','-',math_line)
2729
math_line = re.sub(r'等於','=',math_line)
2830
math_line = re.sub(r'加','+',math_line)
31+
math_line = re.sub(r'[立力例]','z',math_line)
2932
math_line = re.sub(r'(?<=\D)(?=[xyz])|^(?=[xyz])','1',math_line)
30-
print(math_line)
31-
if len(re.findall(r'([^xyzXYZ\+\-\d=])',math_line))==0:
32-
break
33-
else:
33+
if len(re.findall(r'([^.xyzXYZ\+\-\d=])',math_line))!=0 or math_line[-1]=='=' or not '=' in math_line:
3434
self.line_speaker('請再說一次..')
35+
else:
36+
break
3537
if var_num >= 1:
3638
finda = re.findall(r'([\+\-\d]+)x',math_line)
3739
A[i][0] = int(finda[0]) if len(finda)>=1 else 0
@@ -42,21 +44,27 @@ def equation(self):
4244
finda = re.findall(r'x?y?([\+\-\d]+)z',math_line)
4345
A[i][2] = int(finda[0]) if len(finda)>=1 else 0
4446
findx = re.findall(r'=(.*)',math_line)
45-
if len(findx)>=1:
46-
B[i][0] = int(findx[0])
47-
else:
48-
B[i][0]=0
47+
try:
48+
B[i][0] = float(findx[0])
49+
except:
50+
B[i][0] = 0
4951
have_ans=True
5052
try:
5153
X = np.linalg.inv(A).dot(B)
5254
except:
5355
have_ans=False
5456
if have_ans:
57+
ans = [X[k][0] for k in range(len(X))]
58+
for i in range(len(ans)):
59+
if ans[i]-int(ans[i])==0.0:
60+
ans[i]=int(ans[i])
5561
if var_num==1:
56-
self.line_speaker('X等於{}'.format(X[0][0]))
62+
self.line_speaker('X等於{}'.format(ans[0]))
5763
elif var_num==2:
58-
self.line_speaker('X等於{}\nY等於{}'.format(X[0][0],X[1][0]))
64+
self.line_speaker('X等於{}\nY等於{}'.format(ans[0],ans[1]))
5965
else:
60-
self.line_speaker('X等於{}\nY等於{}Z等於{}'.format(X[0][0],X[1][0],X[2][0]))
66+
self.line_speaker('X等於{}\nY等於{}\nZ等於{}'.format(ans[0],ans[1],ans[2]))
6167
else:
6268
self.line_speaker('此題無解or無限解 ^_^')
69+
sleep(2)
70+
self.line_speaker('很高興為您服務,如果你需要法律諮詢,我們也可以為您解惑')

0 commit comments

Comments
 (0)