• 代码演练_文字竖排


    题目

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

    例如这段文本:

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

    输出结果:

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

    思路

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

    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)
    
  • 相关阅读:
    剑指offer:二分查找找到旋转数组中的最小值
    强制索引
    剑指offer:青蛙跳台阶
    剑指offer:求和
    序列化和反序列化
    装饰器、生成器
    Python函数(一)
    【转】C# 中的委托和事件
    【读书笔记】备忘录模式翻译成C++了
    【学习笔记】Android 调试桥
  • 原文地址:https://www.cnblogs.com/skeeter/p/3493271.html
Copyright © 2020-2023  润新知