我试图完成给定数字的递归函数,返回一个字符串,其中返回的值具有每个数字的副本
示例:如果是507,则返回550077
如果数字仅为0,那么只返回0
如果是负数,也只返回一次负号
示例:-507返回-550077
我还没有实现任何能够识别负数的东西,我只是想让我的功能首先工作
到目前为止,我有:def double(x):
if x == 0:
return x
else:
x = str(x)
return x[0]*2 + double(x[1: ])
print(double(527))
但是这会返回IndexError:字符串索引超出范围 我通过打印结果而不是返回结果来工作,但我试图解决的问题严格要求返回结果,而不是打印。我究竟做错了什么?
答案 0 :(得分:1)
这是递归的,修复了x == 0终止错误,在加倍之前检查一个字符是否为数字,并将最终答案作为int(而不是str)返回。
def double(x):
x = str(x)
if len(x) == 0:
return ''
else:
first_char = x[0]
# only double if it's an integer
if first_char in map(str, range(10)):
first_char *= 2
return int(first_char + str(double(x[1: ])))
print(double(-527))
>>> -552277
答案 1 :(得分:0)
这样的事可能有用。
def double(x):
if x == 0:
return x
else:
x = str(x)
l=[]
for a in x:
if a == '-':
l.append(a)
else:
l.append(a*2)
return ''.join(l)