首页 > 解决方案 > 在 Python 中递归使用 ord()

问题描述

我需要使用递归函数将字符串转换为数字,我对如何绕过基本和递归情况感到有些困惑。我有以下代码,但我不确定哪里出错了。

def string_to_num(s):
    if s == "":
        return []
    else:
        return ord(s[0]) + string_to_num(ord(s[1:]))

标签: pythonrecursionord

解决方案


你需要假设string_to_num(ord(s[1:]))back ord 因为string你不需要ord(s[1:])你需要string_to_num(s[1:])并且你需要 back string 然后使用+,你可以改变你的代码,如下所示:

>>> 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]

推荐阅读