源码
import Stack
# 括号匹配
def match(i,j):
opens = '([{'
closes = ')]}'
return opens.index(i) == closes.index(j)
def syntaxChecker(string):
stack = Stack()
balanced = True
for i in string:
if i in '([{':
stack.push(i) # 左括号入栈
elif i in ')]}':
if stack.isEmpty():
balabced = False
break
else:
j = stack.pop()
if not match(j,i):
balanced = False
break
if not stack.isEmpty():
balanced = False
return balanced
if __name__ == '__main__':
string1 = '(({{[]}}))'
string2 = '(({{}]))'
r1 = syntaxChecker(string1)
r2 = syntaxChecker(string2)
print(r1)
print(r2)
报错
Traceback (most recent call last):
File "demo.py", line 31, in <module>
r1 = syntaxChecker(string1)
File "demo.py", line 10, in syntaxChecker
stack = Stack()
TypeError: 'module' object is not callable
原因分析:
Python导入模块的方法有两种:import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不要。
修改方案
- 把模块引入改成
from Stack import Stack
- 把调用模块部分改成
stack = Stack.Stack()