python括号配对检测问题_python判断括号匹配

Description

在实际编程中,我们经常会嵌套使用括号,如“{}”、“[]” 、 “()”,如果括号太多,可能会出现括号不匹配的情况,比如“(as))”、“{(bcd})”等。现编写一个程序,判断输入的一段语句中的括号是否匹配。

def func(S):

mylist=[]

index = -1

#由于continue,index不能放在循环体最后,进而index<=len(S)-2

while index < len(S)-1:

index += 1

sym = S[index] #存储字符

if sym == '(' or sym == '[' or sym == '{':

mylist.append(sym) #有左括号时压栈

#注意:分类讨论

else:

if sym == ')':

if len(mylist)>0 and mylist.pop()=='(':

continue

else:

return False

if sym == ']':

if len(mylist)>0 and mylist.pop()=='[':

continue

else:

return False

if sym == '}':

if len(mylist)>0 and mylist.pop()=='{':

continue

else:

return False

if len(mylist) == 0:

return True

else:

return False

S = input()

print(func(S))

一个要注意的地方,右括号一定要分别讨论。

括号匹配,是在左括号、右括号个数相等的基础上的。比如:

Print(abc[0{+’This is a ]}’) 左右括号个数相同,但不匹配,所以为False。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值