Python str.replace()或组合两个切片是删除字符的更好方法吗?

Python str.replace()或组合两个切片是删除字符的更好方法吗?,python,Python,我正在使用CodingBat进行Python语言的实践练习,我得到了“Warmup-1>missing_char”练习。问题在于: 给定一个非空字符串和一个int n,返回一个新字符串,其中 索引n处的字符已被删除。n的值将是有效的索引 原始字符串中字符的长度(即n将在范围内 0..len(str)-1(含) 例如: 失踪的_char('kitten',1)→ 'ktten' 缺少_char('kitten',0)→ '伊顿 失踪的_char('kitten',4)→ '基特 我写道: def

我正在使用CodingBat进行Python语言的实践练习,我得到了“Warmup-1>missing_char”练习。问题在于:

给定一个非空字符串和一个int n,返回一个新字符串,其中 索引n处的字符已被删除。n的值将是有效的索引 原始字符串中字符的长度(即n将在范围内 0..len(str)-1(含)

例如:

失踪的_char('kitten',1)→ 'ktten'

缺少_char('kitten',0)→ '伊顿

失踪的_char('kitten',4)→ '基特

我写道:

def missing_char(str, n):
  return str.replace(str[n], "") 
结果完全正确。当我得到正确答案时,我通常会这样做,我会看看CodingBat是如何回答的。他们的回答如下:

def missing_char(str, n):
  front = str[:n]   # up to but not including n
  back = str[n+1:]  # n+1 through end of string
  return front + back

现在,我的问题是:哪个答案更可行?我的方法是否有挫折,而CodingBat的方法更可靠?或者这只是那种“多种方法处理事情”的情况之一?

为了发布正式答案,正如前面所有的评论所表明的那样:

str.replace(char,”)
将删除所有出现的字符,无论其位置如何。
str[:n]+str[n+1:][/code>将只删除第n个字符


因此,对于该练习,替换(char,“”)
是不合适的。

您是否尝试过
缺少char('kitten',2)
?如果您尝试替换,3或4,它删除了两个不是您想要的行为的“t”字符。@OliverCharlesworth的注释表明了您的实现的缺点——它无法正确处理该测试用例。@OliverCharlesworth没有,但测试了“missing_char('code',2)”。@WoodyPride我明白了。