一行情书的浪漫之 九九乘法表

代码如下:

print('\n'.join('   '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)))
1*1=1
1*2=2    2*2=4
1*3=3    2*3=6    3*3=9
1*4=4    2*4=8    3*4=12   4*4=16
1*5=5    2*5=10   3*5=15   4*5=20   5*5=25
1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36
1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49
1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64
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

写在前面:

1. join方法

  • 用于将序列中的元素以指定的字符连接生成一个新的字符串
str = '-';
seq = ('a','b','c');
print(str.join( seq ))
...
a-b-c

2. 列表生成式:

形如:

list = [x for x in range(5)]
print(list, type(list))
...
[0, 1, 2, 3, 4] <class 'list'>

3. 生成器:

生成器表达式与列表推导非常类似,使用列表推导 会一次产生所有结果。而使用生成器不会一次产生所有结果,它会返回按需产生结果的一个对象。如下所示:

obj = [x ** 2 for x in range(5)]
print(obj, type(obj))
...
[0, 1, 4, 9, 16] <class 'list'>

将列表推导的中括号换成圆括号,就是生成器表达式:

obj = (x ** 2 for x in range(5))
print(obj, type(obj))
...
<generator object <genexpr> at 0x7fe486d59eb8> <class 'generator'>

4. 一行情书 分解 伪代码 如下:

 obj3      =    ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]  

 obj2      =    '   '.join(        obj3        ) for x in range(1,10)   
 
 obj1      =    '\n'.join(       obj2      )     

print(  obj1  )            

解析: 层层 开扒:

1.

 obj3      =    ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]  

乘法表基本元素构造( x 相当于 九九乘法表 的第x行)
因为 for y in range(1,x+1)
所以需要根据 x 确定 y, 从而 确定 循环几次 继而 生成几个 列表元素

In [16]: x=1

In [17]: ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]
Out[17]: ['1 * 1 = 1 ']

In [18]: x=2

In [19]: ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]
Out[19]: ['1 * 2 = 2 ', '2 * 2 = 4 ']

In [20]: x=3

In [21]: ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]
Out[21]: ['1 * 3 = 3 ', '2 * 3 = 6 ', '3 * 3 = 9 ']

In [22]: x=9

In [23]: ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]
Out[23]:
['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']

2.

 obj2      =    '   '.join(        obj3        ) for x in range(1,10)   

for x in range(1,10)
循环遍历x等于(1...10); 每次都会提供给内部一个x;
' '.join( obj3 )
得到一个字符串

In [39]: x=1

In [40]: obj3 = ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]

In [41]:  '   '.join( obj3 )
Out[41]: '1 * 1 = 1 '

In [42]: x=2

In [43]:  '   '.join( obj3 )
Out[43]: '1 * 1 = 1 '

In [44]: obj3 = ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]

In [45]:  '   '.join( obj3 )
Out[45]: '1 * 2 = 2    2 * 2 = 4 '

In [46]: x=3

In [47]: obj3 = ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]

In [48]:  '   '.join( obj3 )
Out[48]: '1 * 3 = 3    2 * 3 = 6    3 * 3 = 9 '

In [49]: x=9

In [50]: obj3 = ['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]

In [51]:  '   '.join( obj3 )
Out[51]: '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'

3.

 obj1      =    '\n'.join(       obj2      )                           

换行操作

4.

print(     obj1     )                                    

打印

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • # Python关键字 部分单词没有分类整理按照顺序整理的 ``` statements语句 print输出 qu...
    ZhouLang阅读 584评论 0 0
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 466评论 0 0
  • 举杯邀明月,对影成三人。不要笑话古人的痴醉,寂寞其实是一种至上的境界。随波逐流只换来一时的欢娱,喧嚣过后却...
    黑旗阅读 240评论 0 1
  • 不知道你有没有留意,在生活中,我们总是可以感觉到两类人,我们暂且简单的就把他们分为两类人。这两类分别是进攻型和防御...
    我是从此不同阅读 283评论 3 1