gpt4 book ai didi

python - Python 中的值替换递归

转载 作者:行者123 更新时间:2023-12-01 08:17:24 24 4
gpt4 key购买 nike

您好,我有一个关于我的作业的 python 编程的问题

任务是以递归的方式替换给定值中出现的数字,最终输出必须是整数

即digital_swap(521, 1, 3) --> 523,其中 1 被交换为 3

下面是我的代码,如果最终答案作为字符串输出,它适用于 s = 0 - 9

def digit_swap(n, d, s):
result = ""
if len(str(n)) == 1:
if str(n) == str(d):
return str(s)
else:
return str(n)
elif str(n)[0] == str(d):
result = result + str(s) + str(digit_swap(str(n)[1:], d, s))
return result
else:
result = result + str(n)[0] + str(digit_swap(str(n)[1:], d, s))
return result

但是,我无法将最终输出设为整数当 s = 0 时代码崩溃即 digital_swap(65132, 1, 0) --> 6532 而不是 65032

我的代码有任何修复吗?

def digit_swap(n, d, s):
result = ""
if len(str(n)) == 1:
if str(n) == str(d):
return str(s)
else:
return str(n)
elif str(n)[0] == str(d):
result = result + str(s) + str(digit_swap(str(n)[1:], d, s))
return int(result) # Changes
else:
result = result + str(n)[0] + str(digit_swap(str(n)[1:], d, s))
return int(result) # Changes

最佳答案

不需要转换为字符串,这可以更容易地实现

def digit_swap(n, d, s):
if n == 0:
return 0
lower_n = (s if (n % 10) == d else (n % 10))
higher_n = digit_swap(n // 10, d, s) * 10
return higher_n + lower_n

assert digit_swap(521, 1, 3) == 523
assert digit_swap(65132, 1, 0) == 65032

关于python - Python 中的值替换递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54900964/

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