好玩的编程思维

最近一直在接触关于创新的话题,其中一个不可绕过的话题是“效率”。要提高效率,第一个要做的是流程化,第二个要做的是信息化。信息化离不开编程,于是自己开始学习python编程。今天的内容可能看起来不好玩,但这种思维模式很好玩,我觉得有必要记录一下。

任务:打印一个九九乘法表

我们先来看一下记忆中九九乘法表的样子。

九九乘法表.png

实现打印的思路

如何解决这样的问题有以下几个步骤(通用的编程思维):

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行语句,就解决问题了,是不是很酷?

如果你有好的编程思维或其他心得,也可以和我交流。

你可能感兴趣的:(好玩的编程思维)