2014-02-28 40 views
-1

我有一個程序顯示方括號'['']'。它以隨機順序和隨機數量(最多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 
+3

請出示你至今嘗試什麼。 –

+0

[[[]]]平衡,對吧? –

+0

是的,這是平衡的 – Baileyavfc

回答

3

對於這個代碼,你只需要檢查if newValue == newValue2

+0

這應該是一個評論 – thefourtheye

+0

@thefourtheye我認爲他需要50代表這樣做。而且由於OP的代碼沒有做到他認爲的那樣。這也是解決方案。 – M4rtini

+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 
+0

這就是我一直在尋找謝謝,但是,當它是平衡的,我如何得到它顯示說''平衡''還有當它不平衡時說'不平衡'' – Baileyavfc

+0

@Baileyavfc:在這種情況下,請接受答案。打印部分在這裏描述:http://www.learnpython.org/en/Conditions – blubb

+0

@Corley:您可以通過編輯代碼 –