学完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))
最终版本,一行代码了