介绍
这篇文章主要介绍Python如何实现读取字符串按列分配后按行输出示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>问题:强>
输入一个字符串和一个数字,数字代表分为几行,需要按照给定的列存储方法存储下来之后按行拼接读出,如:
<强>输入:强> TNGDWXAZQSCVBK, 3
<强>输出:强> TWQBNDXZSVKGAC
中间转化的时候会形成这样的图形:
T ,W ,Q ,K
N D X Z S V B
G ,A ,C
化为矩阵可能看得更清晰一点:
T 0 W 0问0 B
N D X Z S V C K
G 0 0 0 0
0是作为空白填充进去的,下面看具体的实现:
# !/usr/bin env python utf - 8编码: & # 39;& # 39;& # 39;& # 39;& # 39; __Author__:沂水寒城 功能:zigzag_pattern T , W , Q K N D  X Z  S V B G A , C 转换(“TNGDWXAZQSCVBK",, 3), should return “TWQBNDXZSVKGAC"。 & # 39;& # 39;& # 39; def convert_test (one_str, num): & # 39;才能& # 39;& # 39;& # 39;& # 39; & # 39;才能& # 39;& # 39; mod=才能len (one_str) % (num + 1) if 才能;mod==0: ,,,关口=(len (one_str)/(num + 1) * 2 其他的才能: ,,,关口=(len (one_str)/(num + 1) * 2 + 1 全国矿工工会,行=# print 才能& # 39;行,关口# 39;,,行,关口 矩阵才能=[] for 才能小姐:拷贝范围(行): ,,,matrix.append([0] *峡路) one_str_list=才能列表(one_str) for 才能;j 拷贝范围(峡路): ,,,if j % 2==0: ,,,,,for 小姐:拷贝范围(行): ,,,,,,,if len (one_str_list): ,,,,,,,,,矩阵[我][j]=one_str_list.pop (0) ,,,: ,,,,,矩阵[1][j]=one_str_list.pop (0) ,# print 矩阵 #,才能for one 拷贝矩阵: #才能,,,one_list=(str (onec), for onec 拷贝一个 #才能,,,print & # 39; . join (one_list), & # 39; res才能=& # 39;& # 39; for 才能;one_list 拷贝矩阵: ,,,one_list=(str(一个),for one 拷贝one_list] ,,,res +=& # 39; & # 39; . join (one_list) return 才能;& # 39;& # 39;. join (res.split (& # 39; 0 & # 39;)) if __name__ ==, & # 39; __main__ # 39;: print 才能;convert_test (“TNGDWXAZQSCVBK",, 3) print 才能;convert_test (“PAYPALISHIRING",, 2) print 才能;convert_test (“PAYPALISHIRING",, 4)
结果如下:
TWQBNDXZSVKGAC
引用>
PPIINAYALSHRIG
PLRAAIIIYSNPHG
(在0.3秒完成)Python如何实现读取字符串按列分配后按行输出示例