gpt4 book ai didi

python - 如何修复此代码,使其打印一串字母,其中一个位置被相应的输入数字替换?

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

问题:

创建一个函数replaceCharAtPos(orig,pos),它接收两个输入参数:一个字符串(orig)和一个正整数(pos)。

如果数字是字符串中的某个位置,则该函数应返回一个新字符串。新字符串应该是原始字符串,除了位置 pos 中的原始字符之外,它应该具有位置编号本身(如果位置编号超过 1 位,则该字符应替换为单位部分中的数字)位置编号,例如,如果位置编号为 12,则为 2)。

如果数字 pos 不是原始字符串 orig 中的有效位置,则返回的字符串应与原始字符串完全相同。

应输入和输出的示例:

print (replaceCharAtPos("abcd",2))

这给出了输出 ab2d,因为数字 2 对应于字符串的索引位置 2(索引从 0 开始),因此它替换了“abcd”的“c”

我的代码有问题:

def replaceCharAtPos(orig,pos):
if pos >= (len(orig)):
return orig
orig = list(orig)
orig[pos] = str(pos)
return ''.join(orig)

当输入两位数时,例如 12,新字符串应采用 12 的第二个/最后一个数字,即 2。请看下面,看看我的代码存在的问题:

print (replaceCharAtPos('abcdefghijklmn',12))

我得到的输出是abcdefghijkl12n,但它应该是abcdefghijkl2n。如何解决这个问题?我尝试将 str(pos) 更改为 str(pos[-1]) 但不起作用。

谢谢

最佳答案

您可以在参数转换后的索引中使用 [-1] 索引,以确保如果提供的数字超过 1 位,它始终采用最后一位数字。您几乎得到了正确的结果,但是您执行 str(pos[-1]) 的方式是尝试对 pos 进行切片,它是一个 integer > 与转换后的 str 相反。

In [10]: def replace_char_at_idx(orig, idx): 
...: if idx >= (len(orig)):
...: return orig
...: orig = list(orig)
...: # Take always the last digit from the CONVERTED
...: orig[idx] = str(idx)[-1]
...: return ''.join(orig)


In [11]: replace_char_at_idx("abcdefghijklmn", 12)
Out[11]: 'abcdefghijkl2n'

关于python - 如何修复此代码,使其打印一串字母,其中一个位置被相应的输入数字替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550292/

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