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

2024-09-27 00:12:43 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:

创建一个函数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]),但没用。你知道吗

谢谢


Tags: 函数字符串代码pos参数return单位数字
1条回答
网友
1楼 · 发布于 2024-09-27 00:12:43

您只需在参数转换后的索引中使用[-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'

相关问题 更多 >

    热门问题