7、Python编程示例:乘法口诀表
上集回顾:
- 复习while循环:当条件成立时,循环执行代码块
- 循环中断:break
- 循环跳过:continue
- 循环中else子句
学以致用,在实践中学习,这次让小P来输出一下乘法口诀表。先来看一下乘法口诀表长啥样:
乘法口诀表
一共9行,每行输出列数和行号一样,正好是循环大显身手的地方。动手写代码之前,先画个简单的流程图:
流程图
从流程图上可以看出来,这就是一个简单的while循环。关键是其他部分都可以直接改成代码就行了,但是“输出第i行”好像没有对应的代码。那能不能先把会写的写完,不会写的先放个占位符,等下再去想呢?很多时候编程就是这样,一个大的功能可能一下子没有头绪,那就先拆分成小的功能点,每个功能点都完成了,合起来一个大的功能或者模块也就完成了。这时就可以用到函数了,函数可以简单理解为一个代码块,然后给他们起一个名字就是函数名,想执行这个代码块的时候,直接执行函数名就可以了。Python定义数使用关键字def
,后跟函数名与括号内的形参列表。函数语句从下一行开始,并且必须缩进。直接定义"输出第i行"的函数为“printLine(i)”,然后实现代码:
# nine_times_table.py
def printLine(lineNumber) :
print("输出第" + str(lineNumber) + "行")
i = 1
while i <= 9 :
printLine(i)
i += 1
保存文件为nine_times_table.py,然后在命令行执行python nine_times_table.py:
$ python nine_times_table.py
输出第1行
输出第2行
输出第3行
输出第4行
输出第5行
输出第6行
输出第7行
输出第8行
输出第9行
OK,第一步搞定了,下面把printLine函数实现了就行了。观察一下第9行,输出1x9、2x9到9x9,正好又是一个1到9的循环,第8行呢是1到8的循环,所以第i行就是1到i的循环。那就在函数里再写一个循环:
def printLine(n) :
j = 1
while j <= n :
print(str(j) + "X" + str(n) + "=" + str(j * n), end = " ")
j += 1
print()
重新保存文件,再次执行python nine_times_table.py:
$ python nine_times_table.py
1X1=1
1X2=2 2X2=4
1X3=3 2X3=6 3X3=9
1X4=4 2X4=8 3X4=12 4X4=16
1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
搞定!轻松完成!那么既然函数是一个代码块,调用函数名相当于调用代码块,我们把函数名再替换回代码块,应该也是可以的吧:
i = 1
while i <= 9 :
# printLine(i) # 替换回代码块
j = 1
while j <= i :
print(str(j) + "X" + str(i) + "=" + str(j * i), end = " ")
j += 1
print()
i += 1
正好是循环里面嵌套一个循环,这就是循环嵌套。循环嵌套可以有很多层,但是为了逻辑清晰和代码直观,最好不要超过2层,如果超过2层的话就可以考虑用函数代替。
本集技能总结:
- Python函数
- while循环嵌套
下集见