好吧,我搞错你代码的意思了。。。
你的判断有问题!!!比如说你的判断 == ["("] 直接 == "(" 就行了,你又不是比较列表。。。str_test = input("请输入测试字符串:") #这里得到的只是一个字符串#
str_test0 = [] #将字符串单个拆分,装入给定的列表,初始列表为空#
for each in str_test:
str_test0.append(each) #将字符串中的每个元素按顺序装入列表#
str_test = str_test0 #列表重命名#
str_len = len(str_test) #得到列表的长度,表明里面的元素总数#
a = int(str_len/2) #列表长度的一半,需要取整数#
if str_len % 2 == 0: #只有当列表长度为偶数时才有可能合法,奇数可以直接判定不合法#
str_f = str_test[:a] #将列表的前半部分切片给新列表f#
str_b = str_test[a:] #将列表的后半部分切片给新列表b#
str_b = str_b[-1::-1] #将新列表b中的元素倒序排布并重新指定为列表b#
i = 0
while i < len(str_f):
print(str_f[i], "-", str_b[i]);
if str_f[i] == "(":
if str_b[i] != ")":
break
if str_f[i] == "[":
if str_b[i] != "]":
break
if str_f[i] == "{":
if str_b[i] != "}":
break
i += 1
if i == len(str_f):
print("合法^o^")
else:
print("非法T_T")
else:
print("非法T_T")
|