2016-11-13 28 views
-4

我需要一些建議。我需要用Python編寫一個程序,向用戶請求一個包含左邊 和右括號的字符串S,例如(()))(()(Python中的字符串處理(作爲列表)

之後,程序需要計算輸入字符串的左邊數和右邊括號的數量。例如,字符串(()))(()包含四個右括號和四個左括號。提示:在開始時引入初始化爲零的兩個計數器。然後在循環中探索字符串的符號。對於當前符號遞增left計數器通過1f符號爲(,否則遞增1right計數器。

然後,我需要測試字符串是否數學。

如果方括號出現在數學公式中,讓我們調用一個字符串數學式。 例如,字符串(),(())(),(()())是類似數學的,而字符串 ))(())((())(()不是。 我需要編寫一個程序,打印"YES"如果輸入字符串是數學類似的,否則,"NO" 。提示:特別是,對於循環的每次迭代,我需要檢查leftright計數器的值是否滿足特定條件。

我只是一個初學者,所以我寫這個任務的實現或者至少想象它應該是什麼樣子會讓我很困惑。

我會很感激任何類型的幫助,因爲我真的需要解決這個問題。先謝謝你!

+3

這是一個着名的(也是最主要的)堆棧數據結構的應用之一。嘗試搜索'使用堆棧匹配的圓括號' –

回答

0

聽起來像你正在尋找某人爲你回答課程練習。這樣的事情的要點是,工作。所以這是一個首發,而不是「在這裏,把這個給你的老師。」

令牌解析需要更多;所以請注意圓括號的訂單。但這裏是如何貫穿一個字符串,看看你有什麼:

test1 = '(()))(()(' 
test2 = '(()))(()' 

def ptest(test): 
    lefts = 0 
    rights = 0 
    balance = 0 
    for c in test: 
     if c == '(': 
      balance += 1 
      lefts += 1 
     elif c == ')': 
      balance -= 1 
      rights += 1 
    print 'testing "'+test+'"' 
    print 'lefts='+str(lefts)+' rights='+str(rights) 
    if balance == 0: print 'balanced, possibly math-like' 
    else: print 'unbalanced, definitely not math-like' 

ptest(test1) 
ptest(test2) 
+0

這是我參與的一個項目的一部分,我根本不是一個編程專家,所以我真的需要一些幫助,我非常感謝您幫助我瞭解我該做什麼,我真的很感激它。 非常感謝! :) –

+0

我的榮幸。不幸的是,對於什麼是「好」,SO是非常諷刺的。這就是所有肛門保持力降低的來源。對於那個很抱歉。不是我。 :) – fyngyrz