2012-04-14 4 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

데프 (S1, S2, POS) 삽입 : S3 = 리스트 (S1)을 난 위해 열거한다 (S3)에서 S : 만약 == POS : s3.insert (I, S2) 복귀 ' '. 조인 (s3) 조인에 대한 조언 주셔서 감사. 그것은 삽입물을 사용할 수 있지만, 교수가 합법적인지 여부를 확신 할 수는 없습니다. 교수님은 내장 된 방법을 사용할 때가 싫어. – VPNTIME

+0

글쎄, 나는'sort()'와 같은 메소드를 사용하는 것에 반대한다고 생각한다. 왜냐하면 목록 이해력과 내부의'if' 문을 사용하여 파이썬에서 단 한 줄에 정말 간단한 정렬 알고리즘을 작성할 수 있기 때문이다. 이 경우 삽입 또는 다른 기본 제공 방법을 사용하지 않고 요소를 목록에 삽입하는 방법을 모르겠습니다. 이제 삽입을 허용하지 않으면'insert '는 사람들이'list'에서 작동하는 데 사용하는 고급 API/메소드이기 때문에 그는 미쳤습니다. – CppLearner

+0

파이썬 문장의 정의는'NEWLINE' 종료를 포함한다고 생각합니다. 여러 개의 'NEWLINE'이 없으면 여러 개의 명령문을 가질 수 없습니다. 당신이 말하는 것은 "조건부 표현"입니다. 그냥 몇 가지 용어 : P는 교수가 미치지 않습니다. 나는 언어로 특정 라이브러리 기능을 사용하지 않는 것이 꽤나 표준이라고 생각한다. 당신이하는 일이나 그들이하는 일의 개요를 이해할 때까지 말이다. 왜 다양한 종류의 런타임을 나열하는 대신 다양한 종류, 알고리즘 및 데이터 구조의 구현을 가르쳐 주겠습니까? –

관련 문제