我写了这个程序:
def mix(a,b):
if len(a) != len(b):
return
else:
return a[0]+b[0]+a[1]+b[1]+a[2]+b[2]+a[3]+b[3]
这是做什么的,取两个字符串并将它们“交织”在一起。例如,如果我选择taco
作为字符串1而bowl
作为字符串2,则会返回tbaocwol
。如果字符串的长度不同,我们将返回。
我遇到的问题是我的else return语句中的递归。我怎么写它才能接受任何长度的字符串而不限于2,3或4个字母?我在原始代码中对索引进行了硬编码,以便在我查看结果时查看结果,但我对此感到很沮丧。
我不想使用任何循环或任何字符串处理函数。
只有我愿意使用的是切片和/或全局变量。
我也不想使用.remove()
,index
或.replace()
。
注意:我已经看到了类似的问题,但它是在java中,我无法弄清楚python的等效性。
答案 0 :(得分:2)
您可以传递字符串的切片版本。
def mix(a,b):
if len(a) != len(b):
return
elif not a:
return ""
else:
return a[0] + b[0] + mix(a[1:], b[1:])
一些测试用例:
>>> print(mix("Hello", "abcde"))
Haeblcldoe
>>> print(mix("Guten Tag", "ihgfedcba"))
Giuhtgefne dTcabga
>>> print(mix("Ni Hao", "Hello "))
NHie lHlaoo
答案 1 :(得分:1)
def mix(a,b):
if len(a) != len(b):
return ''
if len(a) == 0:
return ''
else:
return mix(a[:-1], b[:-1])+a[-1]+b[-1]
这应该可以解决问题!