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

标签 python string

问题:

创建一个函数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/

相关文章:

python - 如何使用返回绘图的函数创建 3D 绘图?

Python:以逗号作为小数点分隔符加载数据

python - plot_decision_boundary() 不知何故没有给出任何输出

Python Matplotlib 颜色图

java - 使用 while 循环删除字符,直到达到计数,Java 不工作

python - 为什么我的“赞”按钮仅适用于 Django 中列表的第一个实例?

java - 如何在字符串数组中存储字符串值?

java - 当某些值为空时,如何从逗号分隔的值列表中提取值?

javascript - 将每个拆分结果与每个类元素进行比较

java - 数字顺序,但最长的数字在前