我刚刚开始使用Python,我从导师那里得到的一个练习就是将一个元组(嵌套括号的数量)转换成小数;我现在已经工作了几个小时,但我无处可去...... 例如 input =(((()))) 输出= 3
我是这样开始的:
def add (x,y):
if y == '()':
return x
else:
length = len(y)
return successor(add (x,y[1:length-1]))
任何人都可以在我错误的地方给我一个提示 - 请!!!!
答案 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)
答案 4 :(得分:0)
如果您可以使用实际元组,这很容易。尽管
,它们很难用Python语法阅读def f(t):
return len(t) + sum(map(f, t))
print f( () )
print f( ((),()) )
print f( ((),) )
print f( (((),),((),()),(((),),)) )