石岛编程周老师:
实战是掌握编程最快的方法,没有之一
放下书本、放下理论,
马上动手做起来。
今天看到一个乘法口诀表,就想着用Python试试,
结果4行代码就搞定了,因为太简单了,本来也没准备写,
又想能不能融入一些其他的Python知识点, 获取对于Python新手来说是一个不错的小练习,
如果你觉得有用,点个赞让我知道!
我看到的是这个图,就按这个图做吧。

1.先输出第1列,1乘以1到9的部分

2.再输出9列,相当于所有的表达式,一共是81个

3.将表达式输出为9行9列

4.将表达式优化成图片的样子

5.用其他的方法搞定这个99乘法口诀表
注意,我下面例子中的公式表达式与图片中不一样,
你尝试自己改一下
for i in range(1,10):
print("1x%d=%d"%(i,1*i)
一共两行,循环就是从1开始,到10结束,不包括10;
至于格式化的输出,先用旧版的%来做,
%d表示此外代入一个整数
引号内的内容表示输出的样子
引号外的括号中,i表示将i代入第1个%d,
1*i是计算的式子,写成这样,后面要用,让电脑算去

输出9行9列,只需要再写一个循环,1个循环表示行,1个循环表示列
for i in range(1,10):
for j in range(1,10):
print("%dx%d=%d"%(i,j,i*j))
输出效果:

这样可以输出所有的表达式,但都写在一列了,
需要写成1行9个式子的样子,
也就是说1行的9个式子之间用空格隔开,
修改end的参数即可,
下面是print的默认参数,表示默认以"\n",即换行符来结束的print("%dx%d=%d"%(i,j,i*j), end="\n")
我们改成,用空格来结束输出print("%dx%d=%d"%(i,j,i*j), end=" ")
输出效果:

想要变成9行,只需要每一行,加1个换行符,print()
那自然是在第1行输出的代码后增加,也就是第2个循环后增加
for i in range(1,10):
for j in range(1,10):
print("%dx%d=%d"%(i,j,i*j))
print()

先不要向后看,看这个图能总结出什么规律?

规律:
每行的式子数量,和当前行的行数是相同的
即,第1行1个式子,第2行2个式子
那就反向找一下,哪一行代码可以控制输出式子的数量,
答案是第2个for循环,将循环的结束数字9,改为当前行即可
for i in range(1,10):
for j in range(1,i+1):
print("%dx%d=%d"%(i,j,i*j))
print()

下面采用了Python的格式化输出、列表推导式等方法,对原来的代码进行了修改。
分别使用了自定义函数的方法,方便调用。
上面的输出,可以看出来,积为一位数或两位数,会导致式子不对齐,不太好看
下面将分别使用旧版和新版的格式化输出一下
只改print输出的部分
#旧版方法
print("%dx%d=%2d"%(i,j,i*j), end=" ")
#新版方法
print(f"{i}x{j}={j*i:2d}", end=" ")
%2d、{:2d}分别为旧版、新版保留两位整数的格式方法

上面的效果,我觉得没有那么好,就再用个条件语句修改一下
for i in range(1,10):
for j in range(1,i+1):
k = i*j
if k>9:
s = " "
else:
s = " "
print("%dx%d=%d"%(i,j,i*j), end=s)
print()

好看多了吧
这里还可以使用列表的方法,纯属”爱学习“,
for i in range(1,10):
list1 = []
for j in range(1,i+1):
s = "%dx%d=%d"%(i,j,i*j)
list1.append(s)
print( " ".join(list1) )
join表示用前面的空格将列表中所有的元素连接
第三种方法,可以更简化,直接使用列表推导式两行输出。
看似增加了难度,但这种方法是以后彻底掌握Python常用的写法,
多看看,多学学,没有错,自己多理解一下
#这四行其实是一行
list1 = [
" ".join(f"{i}x{j}={i*j:2d}"for j in range(1, i+1))
for i in range(1, 10)
]
print("\n".join(list1))
本来还准备用C++再写一些,但时间不够了,再说吧
如果你觉得这个项目有用,欢迎:
️⃣ 点赞/在看——让更多同学看到
️⃣ 留言告诉我——你还想做什么作品?
️⃣ 关注公众号,更新各种实战项目,不迷路!
带你用实战项目快速掌握编程,
分享Python、C++、ESP32、掌控板、AI编程等软硬件编程实战项目,
欢迎关注!