2012-04-14 111 views
1

这是我到目前为止。这是作业。我们不能使用切片。我似乎无法弄清楚。试图插入一个字符串到另一个字符串的x位置

def insert(s1, s2, pos): 
    s3 = list(s1) 
    for i,s in enumerate(s3): 
     if i == pos: 
      s3[pos + 1] = s 
      s3[i] = s2 
    "".join(s3)  
    return s3 

利用上述,串s1的最后一个字符被删除和join方法并不接合s3成一个字符串。

回答

3

通知行

"".join(s3)  
return s3 

如果你看一下the join documentation,你会看到加入不修改其参数,而是生成包含参数列表中的内容的字符串,所有连接在一起。所以,你把自己的结果

"".join(s3) 

并返回s3(列表)来代替。所以,你需要将最后两行更改为

return ''.join(s3) 

由于这是家庭作业,我不会对代码的其余部分发表评论,但返回加入调用的结果有一定的帮助。

+0

DEF插入(S1,S2,POS): S3 =列表(S1) 为I,S在枚举(S3): 如果我== POS: s3.insert(I,S2) 返回' '.join(s3) 感谢您的加入提示。它打我我可以使用插入,但我不知道我的教授是否会允许它是合法的。当我们使用内置的方法时教授讨厌。 – VPNTIME 2012-04-14 00:53:13

+0

好吧,我想他反对使用'sort()'这样的方法,因为可以在Python中使用列表理解和一些'if'语句在1行中写一个非常简单的排序算法。我不确定在这种情况下如何在不使用插入或任何其他内置方法的情况下将元素插入到列表中。现在,如果他不允许插入,他必须疯了,因为'insert'是人们用来在'list'上操作的高级API /方法。 – CppLearner 2012-04-14 01:10:48

+0

我认为Python语句的定义涉及到一个'NEWLINE'终止。没有多个'NEWLINE'就不能有多个语句。你所指的是“条件表达式”。只是一些术语:P教授并不疯狂。我认为在语言中不使用某些库功能是非常标准的,除非你了解他们做了什么/他们是如何做的概述。为什么你会教各种类型,算法和数据结构的实现,而不是只列出它们的各种运行时间? – 2012-04-14 02:37:14

相关问题