Python 如何使用递归选择字符串中的特定部分?
所以我在处理递归 问题是:Python 如何使用递归选择字符串中的特定部分?,python,recursion,Python,Recursion,所以我在处理递归 问题是: “早上好” 我必须使用递归打印括号内的所有信息,如下所示:“(43)” 到目前为止,我的代码是: def extractor(myString): if len(myString) == 0: return "" if myString[0] == "(": return myString[0] if myString[0] == ")": return myString[:] el
“早上好”
我必须使用递归打印括号内的所有信息,如下所示:“(43)”
到目前为止,我的代码是:
def extractor(myString):
if len(myString) == 0:
return ""
if myString[0] == "(":
return myString[0]
if myString[0] == ")":
return myString[:]
else:
return extractor(myString[1:])
我只能得到括号。我怎样才能改变它呢?你就快到了:
def extractor(myString):
if not myString: # empty strings are falsy
return ""
if myString[0] == "(":
if myString[-1] == ")": # success
return myString
else: # only starts with (, trim from the end
return extractor(myString[:-1])
else: # doesn't start with (, trim from beginning
return extractor(myString[1:])
如果您感兴趣,这里是您的代码的迭代版本。:) 或: 输出:
mystring = "Lol (234) mate!"
print(iterative_extractor(mystring))
>>> "(234)"
这是工作,但我不能使用任何内置函数,除了len()
str.startswith
和str.endswith
是方法,不是函数,但公平地说,我会更改它。非常感谢much@David.Lin对于函数提取器,我的输入是否正确是“(43)”&而不是“早上好(43)”
def iterative_extractor(mystring):
if not mystring:
return ""
while mystring[0] != "(":
mystring = mystring[1:]
while mystring[-1] != ")":
mystring = mystring[:-1]
return mystring
mystring = "Lol (234) mate!"
print(iterative_extractor(mystring))
>>> "(234)"