随笔 - 27  文章 - 2  评论 - 0  阅读 - 25883

python 一行代码打印九九乘法表

如果没有一行的限制,通常代码可以这样写:

1 for x in range(1,10):
2     for y in range(1, x+1):
3         print("%s*%s=%s"%(y, x, x*y), end="\t")
4     print()

写在一行的代码如下:

print("\n".join("\t".join(["%s*%s=%s"%(y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)))

简单分析一下这行代码,按照执行顺序先拆出下面这一句:

  1. "\t".join(["%s*%s=%s"%(y, x, x*y) for y in range(1, x+1)]) 很明显这句是一个将以推导式的形式生成的列表转换成字符串,以制表符分隔;单独这一句代码不能执行,因为x还未赋值,我们可以假设它有一个值,你会发现这一行代码最终结果是打印99乘法表的每一行。
  2. 然后剩下的代码则是外层循环,列表推导式,转换字符串,以换行符分隔,跟第1步一样(上面外层的join操作对象并没有再使用[ ]转成列表,加上也可以)。

最后结果:

复制代码
1 1*1=1
2 1*2=2    2*2=4
3 1*3=3    2*3=6    3*3=9
4 1*4=4    2*4=8    3*4=12    4*4=16
5 1*5=5    2*5=10    3*5=15    4*5=20    5*5=25
6 1*6=6    2*6=12    3*6=18    4*6=24    5*6=30    6*6=36
7 1*7=7    2*7=14    3*7=21    4*7=28    5*7=35    6*7=42    7*7=49
8 1*8=8    2*8=16    3*8=24    4*8=32    5*8=40    6*8=48    7*8=56    8*8=64
9 1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81
复制代码

 

posted on   杜景喜  阅读(3190)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示