学习知识点:
1. string.join(seq): 以string字符串作为分隔符,将seq的所有元素拼接成一个新的字符串

1 s = ['%d * %d = %d' % (y, 4, 4*y) for y in range(1, 5)] 2 print(' '.join(s)) 3
2. list的赋值可以采用表达式

1 s = ['%d * %d = %d' % (y, 4, 4*y) for y in range(1, 5)]
下面是99乘法表的拆分过程
1. 打印第i行

1 i = 5 2 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 3 print(' '.join(s))
2. 打印多行

1 i = 1 2 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 3 print(' '.join(s)) 4 i = 2 5 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 6 print(' '.join(s)) 7 i = 3 8 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 9 print(' '.join(s))
3. 再次借助join的方式实现

1 i = 1 2 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 3 # print(' '.join(s)) 4 i = 2 5 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 6 # print(' '.join(s)) 7 i = 3 8 s = ['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)] 9 # print(' '.join(s)) 10 11 print(' '.join(' '.join(s) for i in range(1, 10))) 12 #将s替换成表达式后即为99乘法表 13 print(' '.join(' '.join(['%d * %d = %d' % (y, i, y * i) for y in range(1, i+1)]) for i in range(1, 10))) 14 15