当前位置:Gxlcms > Python > Python实现读取字符串按列分配后按行输出

Python实现读取字符串按列分配后按行输出

时间:2021-07-01 10:21:17 帮助过:113人阅读

这篇文章主要介绍了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是作为空白填充进去的,下面看具体的实现:


  1. #!usr/bin/env python
  2. #encoding:utf-8
  3. '''''
  4. __Author__:沂水寒城
  5. 功能:zigzag_pattern
  6. T W Q K
  7. N D X Z S V B
  8. G A C
  9. convert("TNGDWXAZQSCVBK", 3) should return "TWQBNDXZSVKGAC".
  10. '''
  11. def convert_test(one_str,num):
  12. '''''
  13. '''
  14. mod=len(one_str)%(num+1)
  15. if mod==0:
  16. cols=(len(one_str)/(num+1))*2
  17. else:
  18. cols=(len(one_str)/(num+1))*2+1
  19. rows=num
  20. #print 'rows, cols', rows, cols
  21. matrix=[]
  22. for i in range(rows):
  23. matrix.append([0]*cols)
  24. one_str_list=list(one_str)
  25. for j in range(cols):
  26. if j%2==0:
  27. for i in range(rows):
  28. if len(one_str_list):
  29. matrix[i][j]=one_str_list.pop(0)
  30. else:
  31. matrix[1][j]=one_str_list.pop(0)
  32. #print matrix
  33. # for one in matrix:
  34. # one_list=[str(onec) for onec in one]
  35. # print ' '.join(one_list)
  36. res=''
  37. for one_list in matrix:
  38. one_list=[str(one) for one in one_list]
  39. res+=''.join(one_list)
  40. return ''.join(res.split('0'))
  41. if __name__ == '__main__':
  42. print convert_test("TNGDWXAZQSCVBK", 3)
  43. print convert_test("PAYPALISHIRING", 2)
  44. print convert_test("PAYPALISHIRING", 4)


结果如下:

TWQBNDXZSVKGAC
PPIINAYALSHRIG
PLRAAIIIYSNPHG
[Finished in 0.3s]

相关推荐:

Python实现求解括号匹配问题的方法

用Python实现web端用户登录和注册功能

以上就是Python实现读取字符串按列分配后按行输出的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行