gpt4 book ai didi

Python - 使用递归将数字字符串转换为整数?

转载 作者:行者123 更新时间:2023-11-28 22:50:22 25 4
gpt4 key购买 nike

假设我有一个字符串 = '123',但我想在不使用 int() 函数的情况下将其转换为 123。我将如何使用递归继续执行此操作?到目前为止,我的想法是将字符串放入数组 ['1','2','3'] 中,然后根据 ASCII 表示形式转换它们。

for i in string:

myArr.append (ord(i) - ord('0'))

所以现在我有一个看起来像 [1,2,3] 的列表。接下来我应该怎么做才能递归得到123?我有一个使用位值并将它们加在一起的想法(即 100 + 20 + 3 = 123),但我不知道该怎么做。任何想法都会有所帮助!

最佳答案

我想这是一个学术练习,因为这是一个相当做作的问题。以下是假设 s 表示大于或等于零的整数:

def strToInt(s, acc):
if not s:
return acc
return strToInt(s[1:], 10 * acc + ord(s[0]) - 48)

或者更短:

def strToInt(s, acc):
return strToInt(s[1:], 10 * acc + ord(s[0]) - 48) if s else acc

诀窍是将转换的结果累加到一个额外的参数中,这具有产生尾递归解决方案的良好副作用(这在 Python 中并不重要,但仍然......)。还要注意我们如何使用 ord() 来获取代表数字的字符的数值,并且通过简单地减去 48 我们得到实际数字的值。测试它,它按预期工作:

strToInt('123', 0) # the accumulator always starts in zero
=> 123

关于Python - 使用递归将数字字符串转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22734672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com