将嵌套括号转换为小数

时间:2010-12-08 21:23:41

标签: python

我刚刚开始使用Python,我从导师那里得到的一个练习就是将一个元组(嵌套括号的数量)转换成小数;我现在已经工作了几个小时,但我无处可去...... 例如 input =(((()))) 输出= 3

我是这样开始的:

def add (x,y):
    if y == '()':
        return x
        else:
        length = len(y)
        return successor(add (x,y[1:length-1]))

任何人都可以在我错误的地方给我一个提示 - 请!!!!

5 个答案:

答案 0 :(得分:1)

你永远不会改变x。大概你想在递归之前添加一个。此外,诸如(()())之类的结构会让你失望。

答案 1 :(得分:0)

print len(s) / 2

假设你想通过递归来做这件事,你需要先考虑一下。递归的目的是将问题分解成你知道如何解决的小块,然后为解决小问题的大问题建立解决方案。在这种情况下你能做到吗?是:给定一个字符串,检查第一个字符是(,最后一个字符是),然后解决剩余字符串的问题并添加一个。

def depth(parens):
    # is the string empty? if so return 0
    # check that the first character is (
    # check that the last character is )
    # take off the first character and the last character
    # calculate depth(the remaining string)
    # add one and return

看看你是否可以写下来。

答案 2 :(得分:0)

嗯,这是照顾复杂(()((())))

的事情
def tuples(string, found=0):
  if not string: return found
  start = string.find('()')
  end = start + len('()')
  sub = string[:start] + string[end:]

  if start != 0 and end != len(string):
    return tuples(sub, found+1)
  else:
    return tuples(sub, found)

测试:

print tuples('') - 0
print tuples('()') - 0
print tuples('()()') - 0
print tuples('(()())') - 2
print tuples('(())') - 1
print tuples('(()') - 0
print tuples('( (()) (()()) ((())) )'.replace(' ', '')) - 8

我不确定它是多么快速和快速。

答案 3 :(得分:0)

您可以查看此ques

我问了同样的问题,但更多的是评价。在这看看使用re来计算inner()然后你可以只增加计数器。

我希望这会有所帮助:)

答案 4 :(得分:0)

如果您可以使用实际元组,这很容易。尽管

,它们很难用Python语法阅读
def f(t):
    return len(t) + sum(map(f, t)) 

print f( () )
print f( ((),()) )
print f( ((),) )
print f( (((),),((),()),(((),),)) )