python - 在 Python 中递归使用 ord()
问题描述
我需要使用递归函数将字符串转换为数字,我对如何绕过基本和递归情况感到有些困惑。我有以下代码,但我不确定哪里出错了。
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:]))
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]
推荐阅读
- c++ - 将算法应用于投影,但从原始容器中检索信息
- python - Twisted Producer 从未取消注册
- python - SQLite - 将行组合成新列
- python - 在 Python 中将字符串列添加到 txt 文件
- r - 在 R 中创建具有描述性统计信息的表
- android - 如何使用蓝牙设备播放网络音频
- mysql - 日期未正确导入
- laravel - Laravel + Livewire:livewire 组件中的 CRUD 是否会导致未来的问题
- reactjs - 无法在cmd中开始反应
- parallel-processing - 如何在 openCL 中获取“_cl_devide_id”结构的大小?