【发布时间】:2017-12-20 10:25:50
【问题描述】:
我试图在一个函数中拆分和组织一个字符串,我的目标是分离小写和大写字符,然后返回一个新的字符串,基本上像这样:
"lowercasestring" + " " + "uppercasestring".
重要的是,所有角色都必须按照他们收到但分开的顺序返回。 我的问题是我必须在一个函数中递归地执行此操作(出于教育目的),我很难理解如果没有外部函数调用递归然后修改字符串,这是如何实现的。
def split_rec(string):
if string == '':
return "-" #used to seperate late
elif str.islower(string[0]) or string[0] == "_" or string[0] == ".": #case1
return string[0] + split_rec(string[1:])
elif str.isupper(string[0]) or string[0] == " " or string[0] == "|": #case2
return split_rec(string[1:]) + string[0]
else: #discard other
return split_rec(string[1:])
def call_split_rec(string):
##Essentially i want to integrate the functionality of this whole function into the recursion
mystring = split_rec(string)
left, right = mystring.split("-")
switch_right = right[::1]
print(left + " " + switchright)
仅递归就会返回:
"lowerUPPERcaseCASE" -> "lowercase" + "ESACREPPU"
我在单个函数中解决此问题的最佳尝试是创建 case2:
elif str.isupper(string[-1]) or string[-1] == " " or string[-1] == "|": #case2
return split_rec(string[:-1]) + string[-1]
为了正确打印字符串,大写字母将与最后一个字母一起添加。这里的问题是,当第一个字符为大写而最后一个字符为小写时,我显然会卡住。
我花了很多时间试图找到一个好的解决方案,但我无法找到我的帮助。我希望这个问题不是太愚蠢 - 如果是这样,请随意删除它。谢谢!
【问题讨论】: