先看一下运行效果图:
实现步骤:
Step1:
创建两个空的list变量,分别表示乘法公式里的两个乘数
Step2:
For循环,range(1, 10),用list的append方法给两个list赋值
Step3:
双重循环输出正向乘法表
外层循环 for j in range(1, len(term1) + 1)
range的stop num是list的length+1,这层循环得到了乘法表的9行
里层循环 for k in range(1, j + 1) ,根据上面的运行效果可以看到,正序乘法表中,第二个乘数的值等于第一个乘数的值,所以构造range(1, j + 1)
Step4:
输出乘法表,需要注意的是,Python3中的print函数可以直接输出integer变量,也可以直接输出string,但是如果要同时输出,需要把其他的变量类型用str()函数转换成string类型。
另外,Python3的print()函数,默认是输出然后换行,如果我们不想它换行,我们就给它一个参数,end=""。比如print(a, end=""),那么在输出变量a的值之后,程序就不会还行了。
Step5:
双重循环逆向输出乘法表
外层循环 for m in range(len(term1), 0, -1):
下面说明一下range()函数
Python doc说明:range
(start, stop[, step]),第一个参数表示开始的值,第二个参数表示结束值,但是不等于这个结束值,以上面给list赋值的range(1, 10)为例。这就表示产生从1开始,到10-1=9的元组,也就是(1,2,3,4,5,6,7,8,9)。最后一个Step是可选的,如果不填就是默认为1,即后一个数在前一个数的基础上加1.
所以这里我们需要倒序输出乘法表,则第一个乘数从9递减到1,用range(len(term1), 0, -1)实现
内层循环 for n in range(1, m + 1),这里跟正序输出的情况是一样的,不做过多说明。
Step6:
同样,我们再次输出逆向乘法表
最后贴出代码,欢迎大家指正。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
term1 = list()
term2 = list()
for i in range(1, 10):
term1.append(i)
term2.append(i)
print("------------------------Multiplication Table-------------------------")
for j in range(1, len(term1) + 1):
for k in range(1, j + 1):
print(str(j) + "*" + str(k) + "=" + str(j * k) + " ", end="")
print()
print("--------------------------------End----------------------------------")
print()
print()
print("-----------------Reversed Multiplication Table-----------------------")
for m in range(len(term1), 0, -1):
for n in range(1, m + 1):
print(str(m) + "*" + str(n) + "=" + str(m * n) + " ", end="")
print()
print("--------------------------------End----------------------------------")