zoukankan      html  css  js  c++  java
  • 代码演练_文字竖排

    题目

    把一段字符串用“右起竖排”的古文格式输出,并以竖线(“|”)符号作为每一列的分隔符。

    例如这段文本:

    静夜思 
    李白
    床前明月光
    疑是地上霜
    举头望明月
    低头思故乡
    

    输出结果:

    低|举|疑|床|李|静
    头|头|是|前|白|夜
    思|望|地|明| |思
    故|明|上|月| | 
    乡|月|霜|光| |
    

    思路

    仔细观察文本,我们就可以发现从下往上依次输出每一行的第一个字,然后是第二个字,以此类推就可以得到“右起竖排”的古文格式。 同时,为了对齐,我们需要把短句用中文全角空格补全,如果句中有英文半角空格,也要替换成中文全角空格。

    zip()函数将每个集合的同位置的元素组成一个元组,函数用法如下:

    zip(...)
        zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
    

    代码

    # coding:utf-8
    
    text = u'''
            静夜思
            李白
            床前明月光
            疑是地上霜
            举头望明月
            低头思故乡
            '''
    # 中文全角空格
    blank = u'u3000'
    lines = text.splitlines()
    # 去掉首尾空白
    lines = [x.strip() for x in lines]
    # 去掉空元素
    lines = [x for x in lines if x]
    # 将句中的英文半角空格替换成中文全角空格
    lines = [x.replace(' ', blank) for x in lines]
    # 反转句子的顺序
    lines = list(reversed(lines))
    
    # 补足短句
    max_len = max([len(x) for x in lines])
    lines = [x+blank*(max_len-len(x)) for x in lines]
    
    for x in zip(*lines):
        print '|'.join(x)
    
  • 相关阅读:
    140704
    140703
    140702
    堆排序
    并查集
    140701
    这年暑假集训-140630
    vim for python
    hihocode 第九十二周 数论一·Miller-Rabin质数测试
    hdu 3157 Crazy Circuits 有源汇和下界的最小费用流
  • 原文地址:https://www.cnblogs.com/skeeter/p/3493271.html
Copyright © 2011-2022 走看看