Python把一段字符串用“右起竖排”的古文格式输出
2011-11-17 10:03 会被淹死的鱼 阅读(1658) 评论(0) 编辑 收藏 举报这个是在网上看到的题目(源地址: http://www.pin5i.com/showtopic-22424.html), 把一段字符串用“右起竖排”的古文格式输出.
例如:
静 夜 思 李 白
床 前 明 月 光 ,
疑 似 地 上 霜 。
举 头 望 明 月 ,
低 头 思 故 乡 。
结果是
低 举 疑 床 静
头 头 似 前 夜
思 望 地 明 思
故 明 上 月
乡 月 霜 光 李
。 , 。 , 白
下面是我用Python实现的代码
1 # offset诗句每行的字数
2 def transfer(offset=6):
3 string = u'静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。'
4 a = [['']*offset for _ in xrange(len(string)/offset)]
5 for i in xrange(len(string)/offset):
6 for j in xrange(offset):
7 a[i][j] = string[i*offset + j]
8 print '\n'.join([u''.join(unicode(c) for c in row)for row in a])
9 print
10 b = zip(*a[::-1])
11 print '\n'.join([u''.join(unicode(c) for c in row)for row in b])
12
13 if __name__ == "__main__":
14 transfer()
这个transfer可以接受不同的参数, 表示每行的字数. 可以试试transfer(5), transfer(7)等等, 看看结果对不对.
使用了zip方法, zip可以把两个list压缩成为一个tuple的list. 看下面的例子
1 names = ['anne', 'beth', 'george', 'damon']
2 ages = [12, 45, 32, 102]
3 print zip(names, ages)
4 print zip(names, ages, ages)
输出结果是
[('anne', 12), ('beth', 45), ('george', 32), ('damon', 102)]
[('anne', 12, 12), ('beth', 45, 45), ('george', 32, 32), ('damon', 102, 102)]
a[::-1]这句是切片, 这个是将a列表中的列表从后向前迭代的结果.
本例中, 原来的a是:
静 夜 思 李 白
床 前 明 月 光 ,
疑 似 地 上 霜 。
举 头 望 明 月 ,
低 头 思 故 乡 。
a[::-1]就是这样的:
低 头 思 故 乡 。
举 头 望 明 月 ,
疑 似 地 上 霜 。
床 前 明 月 光 ,
静 夜 思 李 白
在调用函数时使用星号 * 或 **
test(*args):* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。
test(**kwargs):** 的作用则是把字典 kwargs 变成关键字参数传递。如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

作者:icejoywoo
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
短网址: http://goo.gl/ZiZCi
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 程序员转型AI:行业分析
· 为DeepSeek添加本地知识库
· 深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能
· .NET程序员AI开发基座:Microsoft.Extensions.AI