zoukankan      html  css  js  c++  java
  • Python把一段字符串用“右起竖排”的古文格式输出

    这个是在网上看到的题目(源地址: 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
  • 相关阅读:
    [JXOI2018]游戏
    UltraISO制作启动盘安装CentOS7
    龙芯、鲲鹏、飞腾等国产平台的浏览器
    浏览器相关性能测试网址
    有没有一种组合字体,中文是宋体,英文是times new roman?
    中国航天科工集团第二研究院706所招聘
    华为云
    面试阿里P6难在哪?(面试难点)
    Linux下配置环境变量—— .bashrc 和 /etc/profile
    Linux 内存 占用较高问题排查
  • 原文地址:https://www.cnblogs.com/icejoywoo/p/2252191.html
Copyright © 2011-2022 走看看