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))

最终版本,一行代码了

posted on 2018-03-27 16:58  tonson9527  阅读(564)  评论(0)    收藏  举报