dukai 发表于 2023-1-20 14:08:30

第18讲作业:输入符号看对不对的那个,求解

本帖最后由 dukai 于 2023-1-20 14:18 编辑

a = input("typing ")
stack = []
c = 1
for b in a:
    if b == '[' or b == '{'or b == '(':
      stack.append(b)
    else:
      if b == ']' or b == '}' or b == ')':
            if b == ']':
                c = '['
            elif b == '}':
                c = '{'
            elif b == ')':
                c = '('
       
            if c == stack[-1]:#我想先让c和stack的最后一个比较,如果比较成功了就剔除stack最后一个符号
                stack.pop(stack[-1])
            else:
                print("error")
                break
            
if len(stack) == 0:
    print("ok")

#想了很久也没明白哪里错了,求大神解答,希望各位大神手下留情,尽量在我的代码上改一下,如果我整个思路是错的就当我没说

dolly_yos2 发表于 2023-1-20 14:38:39

list.pop 是您的代码中这样用的吗?
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists

dukai 发表于 2023-1-20 14:56:27

。。。

jackz007 发表于 2023-1-20 17:13:07

本帖最后由 jackz007 于 2023-1-20 17:27 编辑

    if b == '[' or b == '{'or b == '(':                  # '(' 是中文字(全角)符
      这是我改写的代码,楼主可以参考一下。
stack , d = [] , {'}' : '{' , ']' : '[' , ')' : '('}
f = False
a = input("typing ")
for b in a:
    if b in '{[(':
      stack . append(b)
    else:
      if stack . pop() != d:
            break
else :
    if not stack : f = True
print('ok') if f else print('error')
页: [1]
查看完整版本: 第18讲作业:输入符号看对不对的那个,求解