2013-05-03 2 views
-2

문자열을 일정한 간격으로 분할하고 각 간격마다 줄 바꿈 문자가 같은 문자열 (한 칸 및 영문자)을 반환해야합니다. 행/열 직사각형 모양의 문자열. 다음과 같이 반환해야합니다 (예) :Python 3에서 규칙적인 간격으로 문자열을 분할하는 방법

>>> s = 'sliding puzzles' 
>>> puzzle(s, 3, 5) 
'slidi 
ng pu 
zzles' 

사람이 누구입니까? 이

def puzzle(s,a,b): 
    if a*b != len(s): 
     print "Not possible" 
     return 
    start =0 
    end = b+1 
    output ="" 
    for i in range(0,a): 
     output= output+s[start: end]+"\n" 
     start = end+1 
     end = end+b 
    print output 
+0

아주 간단한 운동처럼 들립니다. 어디서 붙어 있니? – agf

+0

귀하의 requirment 이해가 확실하지 않습니다. 당신은 문자열과 2 ints 걸립니다 함수 퍼즐 wan't. 당신의 예제에서 문자열은 5 개의 문자로 나뉘어져 있어야합니다. 3은 무엇입니까? 즉 첫 번째 int는 무엇입니까? – pypat

+0

나는 정말로 붙어 있지는 않지만 다른 곳에 집중해야한다. 3은 행을 나타내고 5는 열을 나타냅니다. 더 큰 프로그램에서 필요합니다. 이 점에 관해 나는 경험하고있는 정전이라고 부른다. –

답변

3

뭔가 알았어요! Bhavish Agarwal에게 감사드립니다.

def puzzle(s, r, c): 
assert r*c == len(s), 'not possible' 
start = 0 
end = c 
output ="" 
for _ in range(0, r - 1): 
    output= output+s[start: end]+"\n" 
    start = end 
    end = end + c 
output= output+s[start: end] 
return output 

그리고 그렇게 쉬운 방법입니다. 신속한 대응에 감사드립니다. :)

+0

감사합니다. 사용할 수 있습니다. 어쨌든, 내가이 겉으로보기에는 단순한 (그러나 구체적이고 작은) 질문을하는 이유는 특정 마감 기한 전에 더 큰 작업을 해결할 수 있으므로 프로그래밍 영역 밖의 다른 의무에 더 집중할 수 있습니다. 다시 한번 감사드립니다. 이것은 정말로 도움이됩니다. –

+2

당신은 가깝지만 거기에 없습니다. 첫 번째 행 다음에 문자를 개행하지 않고 개행 문자로 바꿉니다. 그러나 나는 영감을 받았다. –

0

같은

0

난에 줄 바꿈을 얻기 위해 조인을 사용 제안 및 지능형리스트는 분할을 할 :

def make_slice(my_str, slice_length, slice_start): 
    return mystr[slice_length * slice_start:slice_length * (slice_start + 1)] 

def puzzle(my_string, substring_length): 
    return '\n'.join([make_slice(my_string, substring_length, substring_index) 
         for substring_index 
         in range((len(my_string) // substring_length) + 1)]) 

퍼즐의 높이를 지정 필요하지 않습니다이 변형, 단지 길이 부분 문자열 퍼즐의 마지막 줄은 다른 줄과 같은 길이에 도달하려면 스페이스가 있어야합니다.

관련 문제