Python中的字符串处理(作为列表)

问题描述:

我需要一些建议。我需要用Python编写一个程序,向用户请求一个包含左边 和右括号的字符串S,例如(()))(()(Python中的字符串处理(作为列表)

之后,程序需要计算输入字符串的左边数和右边括号的数量。例如,字符串(()))(()包含四个右括号和四个左括号。提示:在开始时引入初始化为零的两个计数器。然后在循环中探索字符串的符号。对于当前符号递增left计数器通过1f符号为(,否则递增1right计数器。

然后,我需要测试字符串是否数学。

如果方括号出现在数学公式中,让我们调用一个字符串数学式。 例如,字符串(),(())(),(()())是类似数学的,而字符串 ))(())((())(()不是。 我需要编写一个程序,打印"YES"如果输入字符串是数学类似的,否则,"NO" 。提示:特别是,对于循环的每次迭代,我需要检查leftright计数器的值是否满足特定条件。

我只是一个初学者,所以我写这个任务的实现或者至少想象它应该是什么样子会让我很困惑。

我会很感激任何类型的帮助,因为我真的需要解决这个问题。先谢谢你!

+3

这是一个着名的(也是最主要的)堆栈数据结构的应用之一。尝试搜索'使用堆栈匹配的圆括号' –

听起来像你正在寻找某人为你回答课程练习。这样的事情的要点是,工作。所以这是一个首发,而不是“在这里,把这个给你的老师。”

令牌解析需要更多;所以请注意圆括号的订单。但这里是如何贯穿一个字符串,看看你有什么:

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