這篇文章主要介紹了Python實作讀取字串按列分配後按行輸出,涉及Python針對字串的遍歷、判斷、運算等相關操作技巧,有需要的朋友可以參考下
本文實例講述了Python實作讀取字串按列分配後按行輸出。分享給大家供大家參考,具體如下:
問題:
#輸入字串和數字,數字代表分成幾行,需要按照給定的列儲存方法儲存下來之後按行拼接讀出,如:
輸入:TNGDWXAZQSCVBK,3
輸出:TWQBNDXZSVKGAC
中間轉換的時候會形成這樣的圖形:
T W Q K
N D X Z S V B
G A C
化為矩陣可能看得更清楚一點:
T 0 W 0 Q 0 B
N D X Z S V K
G 0 A 0 C 0 0
0是當空白填滿進去的,下面看具體的實作:
#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:zigzag_pattern T W Q K N D X Z S V B G A C convert("TNGDWXAZQSCVBK", 3) should return "TWQBNDXZSVKGAC". ''' def convert_test(one_str,num): ''''' ''' mod=len(one_str)%(num+1) if mod==0: cols=(len(one_str)/(num+1))*2 else: cols=(len(one_str)/(num+1))*2+1 rows=num #print 'rows, cols', rows, cols matrix=[] for i in range(rows): matrix.append([0]*cols) one_str_list=list(one_str) for j in range(cols): if j%2==0: for i in range(rows): if len(one_str_list): matrix[i][j]=one_str_list.pop(0) else: matrix[1][j]=one_str_list.pop(0) #print matrix # for one in matrix: # one_list=[str(onec) for onec in one] # print ' '.join(one_list) res='' for one_list in matrix: one_list=[str(one) for one in one_list] res+=''.join(one_list) return ''.join(res.split('0')) if __name__ == '__main__': print convert_test("TNGDWXAZQSCVBK", 3) print convert_test("PAYPALISHIRING", 2) print convert_test("PAYPALISHIRING", 4)
結果如下:
##TWQBNDXZSVKGACPPIINAYALSHRIG
PLRAAIIIYSNPHG
[Finished in 0.3s]
相關推薦:
以上是Python實作讀取字串按列分配後按行輸出的詳細內容。更多資訊請關注PHP中文網其他相關文章!