python竖着展示诗_Python把一段字符串用“右起竖排”的古文格式输出

本文介绍了如何使用Python编程语言实现古诗《静夜思》的逐行拆分和重组,并展示了如何通过`transfer`函数调整字数和利用`zip`函数进行列表操作。此外,还提到了Python中星号(*)和双星号(**)在函数参数传递中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如:

静 夜 思   李 白

床 前 明 月 光 ,

疑 似 地 上 霜 。

举 头 望 明 月 ,

低 头 思 故 乡 。

结果是

低 举 疑 床 静

头 头 似 前 夜

思 望 地 明 思

故 明 上 月

乡 月 霜 光 李

。 , 。 , 白

下面是我用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) 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值