今天是Andy学Python的第22天哦!
大家好,我是Andy。
今天学习了制作九九乘法表。
01.九九乘法表长什么样
02.解题步骤
2.1输出九行数字
应该用循环,已知循环次数,选用for … in range()。
for line in range(10):
print(line)
结果发现输出包含0。range(10)用错了,这是将0,1,2,3,4,5,6,7,8,9依次赋值给line。如果不包括0,应该是for line in range(1,10)。
for line in range(1,10):
print(line)
2.2行数X列数=乘积
算式打印行数较多,疏忽了Python中print(,end="")函数默认换行打印,如果想要不换行输出,应在end=""的引号内添加任何符号,如空格、逗号等等。
#行为line,列为row
for line in range(1,10):
for row in range(1,10):
print(line, "*", row, "=", row * line, end=" ")
2.3列数<=行数
虽然实现了不换行输出,但并不是我们想要的结果,整个九九乘法表是一个直角三角形,列数<=行数。
#行为line,列为row
for line in range(1,10):
for row in range(1,10):
while row <= line:
print(line, "*", row, "=", row * line, end=" ")
出现死循环。删去重写。
想实现列数<=行数,在row遍历时就可定义好。比如line = 1,row只能取1,即row in range(1,line+1)。验证line=5,row取(1,5+1)左闭右开,或者顾头不顾尾,即row取1,2,3,4,5,符合要求。
#行为line,列为row
for line in range(1,10):
for row in range(1, line + 1):
print(line,"*",row,"=",line * row,end = " ")
2.4换行
虽然算式实现了,但未实现行数+1即换行输出。
在row即将+1时增加换行输出。
代码如下:
#行为line,列为row
for line in range(1,10):
for row in range(1, line + 1):
print(line,"*",row,"=",line * row,end = " ")
print("\n")
虽然换行了,但不是自己想要的结果。换行应该是line+1,而不是row+1。所以换行应该在for line in range(1,10)的子一级,也就是和for row in range(1, line + 1)同级,缩进相同。
代码如下:
#行为line,列为row
for line in range(1,10):
for row in range(1, line + 1):
print(line,"*",row,"=",line * row,end = " ")
print("\n")
成功了。
2.5优化
进一步优化行列算式对齐,将print()不换行输出的空格从1个增加到2个。
#行为line,列为row
for line in range(1,10):
for row in range(1, line + 1):
print(line,"*",row,"=",line * row,end = " ")
print("\n")
算式没有对齐。应该是输出占位符设置的问题。
查阅占位符设置,将乘积设置为2位整数。
最终代码如下:
#行为line,列为row
for line in range(1,10):
for row in range(1,line+1):
print('%d*%d=%2ld '%(line,row,line*row),end=' ')
print("\n")
Copyright © 2021 Andy学Python
转载事宜请留言 | 获得授权后方可转载
本平台所使用的电子版教材、视频属相关权利人所有。因客观原因部分作品若存在不当使用的情况,请相关权利人随时与我们联系,以协商授权事宜。
End
不会Python,将成为人工智能时代的新“文盲”!
欢迎加入零基础自学Python计划,未来100天,Andy会把自学Python学习笔记持续输出公众号、视频号,不定期更新,邀您观战、加油、评论,亦或围观Andy被打脸。
人到中年,你一定要努力,但千万别着急。
我是Andy,一个终身学习者。
欢迎关注公众号与视频号:Andy学Python。
网友评论