最近一直在接触关于创新的话题,其中一个不可绕过的话题是“效率”。要提高效率,第一个要做的是流程化,第二个要做的是信息化。信息化离不开编程,于是自己开始学习python编程。今天的内容可能看起来不好玩,但这种思维模式很好玩,我觉得有必要记录一下。
任务:打印一个九九乘法表
我们先来看一下记忆中九九乘法表的样子。
实现打印的思路
如何解决这样的问题有以下几个步骤(通用的编程思维):
1、分析问题,明确结果;
2、思考需要的知识,或者搜索新知识;
3、思考切入点;
4、尝试解决问题的一部分;
5、重复1-4步,直到问题解决。
首先要知道结果,就是如图所示的表格。
其次,思考需要的知识:
需要用到打印和显示的语句print();
九九乘法表是有一定规律,重复的结构,所以我们可以想到用循环来处理。
同时,我们能看到数字是在灵活变动的,所以用“格式化字符串”来为变动的数字预留位置会方便些。
第三,我们知道需要用到“循环”和“格式化字符串”相关知识,
那我们就可以开始思考切入点:先从什么地方入手来解决这个问题。
第一步,找到规律:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
规律是:
每一行的等式里,第一位数会递增,第二位数则会保持不变,并且在第几行就会有多少个等式。
实现的代码是:
for i in range(1,3):
print('%d X %d = %d' % (i,2,i*2),end = ' ') #end--不换行打印
print('') #用来换行
输出》1X2=2 2X2=4
for i in range(1,4):
print('%d X %d = %d' % (i,3,i*3),end = ' ')
print('') #用来换行
输出》1X3=3 2X3=6 3X3=9
解决这个问题时,我被卡在了找到每一行的规律这一点上。因为我看了3行,觉得第一位都是1,第二位都是2,第三位都是3。
但实际只看一行就会发现:在每一行第一位是变动的,呈现递增属性;第二位和行号一样的,是不变的。
另外,在输出时,在不想换行的地方换行了,于是百度查到了方法,使用“end=”这个语句就可以解决,现如今,针对搜索对于学习的重要性,有人提出了“搜商”的概念。
解决了这个问题,发现,所有的内容都不换行了,于是用到了print(' ')的方法。
看来真是“办法总比问题多”啊!
这实际上只是完成了第四步,解决了一部分问题。
这样一行一行的打印也不是办法,失去了程序需要简洁的基本原则。
一件事重复9次,对于计算机来说,用循环语句就可以解决。
再次开始1-4步的分析,发现最终九九乘法表结构的规律:行数是固定的,范围是range(1,10),而列数(等式)则是逐行加一,即第N行就有N个等式。
那最终的结果是:
for i in range(1,10):
for a in range(1,i+1):#参考老师的解决了重复部分打印的问题。
print('{}×{}={}'.format(a,i,i*a),end=(' '))#用“.format()”格式化输出可以不管属性。
print('')
只用了4行语句,就解决问题了,是不是很酷?
如果你有好的编程思维或其他心得,也可以和我交流。