|
发表于 2024-1-11 10:32:06
|
显示全部楼层
本帖最后由 jackz007 于 2024-1-11 10:39 编辑
- list_1=[]
- temp=input("请输入括号:")
- list_1[len(list_1):] = temp
- stack1=[]
- x = -1
- for i in list_1:
- if i == "(" or i == "[" or i == "{":
- stack1 . append(i)
- elif i == "]":
- if stack1[x] =="[":
- print("合法!")
- x += -1
- else:
- print("非法")
- break
- elif i ==")":
- if stack1[x] == "(":
- print("合法!")
- x += -1 # 这里有错,已做修正
- else:
- print("非法")
- break
- elif i == "}":
- if stack1[x] == "{":
- print("合法!")
- x += -1 # 此句新加
- else:
- print("非法")
- break
复制代码
楼主的代码可以大幅度优化,这本身就是一个极好的学习机会
- d = {'}' : '{' , ']' : '[' , ')' : '('}
- stack , r = [] , True
- s = input('输入表达式:')
- for x in s :
- if x in '{[(' :
- stack . append(x)
- elif x in '}])' :
- if stack and d[x] == stack[-1] :
- stack . pop()
- else :
- r = False # 如果 stack 为空或者 stack 最后一个元素不能与当前括号匹配
- break # 置非法标志
- else :
- if stack : # 如果右括号多于左括号,则循环完之后,stack 会不空
- r = False # 置非法标志
- print('合法') if r else print('非法')
复制代码 |
|