我需要使用递归函数将字符串转换为数字,我对如何绕过基本和递归情况有点困惑。我有以下代码,但我不确定哪里出错了。
def string_to_num(s):
if s == "":
return []
else:
return ord(s[0]) + string_to_num(ord(s[1:]))
你需要假设string_to_num(ord(s[1:]))
返回字符串为string
,所以你不需要ord(s[1:])
,你需要string_to_num(s[1:])
,你需要返回字符串,然后使用+
,你可以像下面这样改变你的代码:
>>> def string_to_num(s):
... if s == '':
... return ''
... return f'{ord(s[0])}' + string_to_num(s[1:])
>>> string_to_num('abc')
'979899'
如果你想要一个列表,你可以这样写:
>>> def string_to_num(s):
... if s == '':
... return []
... return [ord(s[0])] + string_to_num(s[1:])
>>> string_to_num('abc')
[97, 98, 99]