确定字符串的结构

时间:2014-02-28 14:11:22

标签: python string brackets

我有一个显示方括号的程序,'['']'。它以随机顺序和随机数量(最多99)显示它们。

下面的代码是我当前的代码,每次运行模块时都会显示以下内容。

输入:

[[[[]]]]
[][]][]][[][]
[]]]][[[[[[]]][][][[]

我的代码:

import random
import string

def randomGen(N):
    return random.randint(1,N)

char1 = '['
char2 = ']'
finalist = []
newList = []
newList2 = []

newValue = randomGen(99)
newValue2 = randomGen(99)

for i in range(newValue):
    newList.append('[')

for j in range(newValue2):
    newList2.append(']')

finalist = newList + newList2

for everChar in finalist:
    print everChar,

我现在希望程序告诉用户显示的括号是平衡的还是不平衡的。我的意思是它是否由完全嵌套的对组成。

所以'[][][]'是平衡的,'[]]][[]'是不平衡的。

当我的模块运行时,我希望它显示一些关于括号的'balanced''unbalanced'文本。

我已将此添加到我的代码中,我不确定为什么它不起作用但我认为我的顺序是正确的:

def balanced(input):
  opened = 0
  for c in input:
    if c == '[':
      openend += 1
    elif c == ']':
      opened -= 1

    if opened < 0:
        print 'Not Balanced'

    if opened > 0:
        print 'Not Balanced'

    if opened == 0:
        print 'Balanced'

        print opened
  return opened == 0

2 个答案:

答案 0 :(得分:4)

对于按任意顺序包含[]的常规输入:

def balanced(input):
  opened = 0
  for c in input:
    if c == '[':
      opened += 1
    elif c == ']':
      opened -= 1
    if opened < 0:
      return False
  return opened == 0

答案 1 :(得分:3)

对于此代码,您只需检查if newValue == newValue2