99乘法口诀及列表解析(成功完成一行代码实现)

学完while 循环后试做了一个99 乘法表,代码如下:

num1 = 1
num2 = 1
while num2 <= 9:
    while num1 <= num2:
        print(str(num1)+'*'+str(num2)+'='+str(num1*num2)+' ',end="")
        num1+=1
    print()
    num1 = 1
    num2 +=1

一共用了9行代码,据讲师说可以有大神化繁为简变成1行代码,当时就震惊了,在这里预留下此课题,

学习过for 及列表后,我觉得可以尝试简化一下:

for num2 in range(1,10):
    a=[str(num1)+'*'+str(num2)+'='+str(num1*num2)+' ' for num1 in range(1,num2)]#加号不足取,该改!
    print(a,str(num2)+'*'+str(num2)+'='+str(num2*num2)+' ')

执行后是这样的

意思上基本差不多,但是列表打印免不了有 [ ]及 ' 目前还是没法避免,但是如果还想再次简化目前我就做不到了

这次简化主要用了列表解析这个功能,例子为  列表名 = [表达式 for 变量 in range()]可以直接生成相应的列表,可以省去两行代码。

 

发现字符串的输出果然博大精深

用+连接是最不明智的,先来个%s的输出

for num2 in range(1,10):
    a=['%s*%s=%s '% (num1,num2,num1*num2)for num1 in range(1,num2)]
    print(a,'%s*%s=%s '% (num2,num2,num2*num2))

 

for num2 in range(1,10):a=['%s*%s=%s '% (num1,num2,num1*num2)for num1 in range(1,num2)];print(a,'%s*%s=%s '% (num2,num2,num2*num2))

最终版本,一行代码了

转载于:https://www.cnblogs.com/tonson/p/8658455.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值