Python一行代码打印九九乘法表的实现思路

步骤一:生成每一行中的公式列表

[['{}*{}={}'.format(i,j,i*j) for j in range(1,i+1)] for i in range(1,10)]

输出:

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

步骤二:行中每个公式之间用空格拼接

[' '.join(['{}*{}={}'.format(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10)]

输出:

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

步骤三:行与行之间用换行符拼接

'\n'.join([' '.join(['{}*{}={}'.format(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10)])

输出:

'1*1=1\n2*1=2 2*2=4\n3*1=3 3*2=6 3*3=9\n4*1=4 4*2=8 4*3=12 4*4=16\n5*1=5 5*2=10 5*3=15 5*4=20 5*5=25\n6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36\n7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49\n8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64\n9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81'

最后print打印输出

print('\n'.join([' '.join(['{}*{}={}'.format(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

输出:

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

思路过程:
重点在于第一步,怎么按行分组得到每行的公式呢?
如果你直接使用列表生成式嵌套两层for循环的话,会依次得到每个乘法公式:

['{}*{}={}'.format(i,j,i*j) for i in range(1,10) for j in range(1,i+1)]

输出:

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

解析:
但这没有进行分组,如何按行分组?
可以把每一行的公式都放到一个小列表里。
按行来生成每行的公式列表,那就需要再嵌套一个列表生成式。
通过外层循环来获取行数i,内层再根据行数i生成每个小列表,里面正好有i个公式。

主要知识点:
列表生成式、join拼接、格式化字符串

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值