如何修复此代码,使其打印出一系列字母,其中一个位置由相应的输入数字替换



问题:

创建一个函数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的第二个/LAST-数字,即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'

相关内容

最新更新