距离第一次学习已经快两个月了,这期间,小肥蛋找各种理由逃避,不是借口作业太多,就是装模作样要去锻炼身体,来来回回编造了不少理由,也挺费心思。正好我也乐得清闲,就一直拖到昨天。
“皮皮,今天机会难得,学一会人工智能时代的语言吧?这个东西太重要了...”
“好!”
出乎意料,答应的这么痛快,我还有好多话没说呢。
“爸爸,学完了去吃披萨。”
“那么难吃,还没饼子好吃呢。看看你的成绩,只适合吃六中门口那种没有油的干饼子。”其实如果把披萨上面乱七八糟的东西去掉,只剩下的一层薄薄的饼,脆脆的还很香。
前情回顾!
“上次学的while循环还记得么?”
“什么意思?”
“就你这还想吃?复习一下上节课内容,这段是什么意思?”
g = 1while g < 101:print(1)= g + 1
“这还不简单,打印1到100。”
“又是惯性思维,看清楚了再说。”
“没问题,上节课学过的。”
“这么自信?运行一下!不要被打脸。”
“这是1到100么?明显是100个1!看题一定要仔细!print(1),括号里面只是1,计算机是由人控制的,怎么可能自己做主去打印其它的?”
“现在就像你说的,要打印1到100了,在这个基础上应该怎么做?”
“想不出来。”
有点失望,上节课学的差不多都忘了。不过仔细一想,快两个月了怎能不忘?小娃娃初学这个毕竟还是比较困难的,不能轻易打击,还是要鼓励为主。
“忘了不怕,你那么聪明,再多想想,就会回忆起来!”
“首先,我们知道print(1)只能打印1对吧?那我们要打印1到100,括号里应该放什么?应该从1、2、3......一直放到100对吧?那么只放一个数字显然是不行的,应该放个可以变化的东西吧?所以这里的答案就呼之欲出了吧?”
小肥蛋皱着眉头思索良久:“放一个变量?”
“好,自己改一改试试。”
g = 1while g < 101:print('g')g = g + 1
“这个太有创意了,一般人写不出来,我无话可说,你自己运行一下看看!”

“哈哈,100个g。”
“你要打印的是1到100,现在出来了100个g。为什么会这样呢?”
“啊,我知道了。”
g = 1while g < 101:print(g)g = g + 1

“我厉害吧,爸爸表扬我!”
“表扬你基础太不扎实了?这个变量你都听过几次了?这个类型的做过几次了?我确实想表扬你,但是我骗不了我自己。”
“哼......”
“一定要记清楚最基本的概念,变量可以用字母表示,但字母两边加上引号就不能叫变量了,就变成字符串了。”
开始新课程!
“现在我们继续学习另一种循环for循环。所有的高级语言,至少都包括两种循环,while循环和for循环。不要小看循环,循环是非常重要的基础,不论是做项目还是写算法,都不可能离开循环。
“我知道,循环就是不停的吃包子。”
“不要总想着吃,你还觉得自己瘦吗?从前有个聪明的小孩子,叫高斯......”
“从1加到100吧?这个故事我都听腻了。”
“听过我就不讲了,高斯求和的方法很巧妙,你们经过思考,也会慢慢理解。但是当时十岁的高斯就能够独自找出来这个规律,这只能说是天才。普通人呢?努力才有可能会成功,不努力呢?还想吃披萨?有凉水泡馍馍就不错了。”
“现在咱们就开始了解for循环,通过for循环来和高斯比赛计算看看谁更快。for循环和while循环在很多情况下可以互相代替,但某些特定的情况下,更适合用其中一种循环。这两个循环方式你有个印象就行,以后在练习的过程中慢慢体会。”
“先来看下面看这两行是用来做什么的。”
# 对于 i 来说在它是在 range 这个范围中取值。for i in range(1, 6, 1):print('皮皮吃了{}个包子'.format(i))
“我又在吃包子?”
“对,和上一节的while循环一样,首先看清楚要循环打印的是变量i。那么i是多少呢?i从哪里来?”
“从in这个单词可以看出,i变量是从range函数中取得,range函数就是用来不断产生i的。这样说你是不是理解了一些?”
“不理解。”
“还是以吃包子为例,你吃的包子是哪里来的呢?”
“当然是奶奶包的。”
“对,这个range函数就可以理解为奶奶在包包子,变量i就是不断的把包子取出来,然后用print打印。所以这个过程就是奶奶在辛苦的包包子,你在不断的吃包子。”
“学过等差数列了吧?还记得吗?”
“有点印象。”
“range(1,6,1)中,第一个1是等差数列初始值,第三个1是等差数列的递增值,等差数列从1开始,不断的加1,加一之后进行判断,只要小于6,就打印出来。咱们运行一下,看看结果,有助于你理解。”

“不够,66大顺,我要吃6个。”
“那么怎样就能吃6个呢?自己改一下。”
# 对于 i 来说在它是在 range 这个范围中取值。for i in range(1, 7, 1):print('皮皮吃了{}个包子'.format(i))
“好,理解了基本原理,现在开始从1加到100。”
s = 0a = 1for i in range(1, 101, 1):s = s + aa = a + 1print(s)
“短短的6行,就可以得到1+2+......+100的和,是不是很简洁?”
”我们来看运行过程。第一行的变量s是用来储存1加到100之和的,所以刚开始赋值为0。第二行变量a用来完成从1到100的变化,所以初始值为1。第三行i从1到100循环一百次。所以a从1、2...一直增到100,s用来保存1+2+...+100的值。明白了吗?”
“一点都不明白。”
”不明白就对了。我设置一个断点,一步一步执行,你仔细看每次执行时,s和a的变化。”
”是不是恍然大悟了?一会你自己运行一次,在上面的基础上修改一下。光听没用,必须多想多动手才能深刻的理解。”
“没意思,我不喜欢。”
”你不是你不喜欢,你是还没有发现你的兴趣,还没有感觉到成就感。”
思考为先,实践为主,单步执行了很多次。
“嗯,明白一点点了。我饿了。”
”课下自己多运行,多写多练。这个为了让你能理解,其实写的复杂了,还可以继续精简。”
s = 0for i in range(1, 101, 1):s = s + iprint(s)
“看到了吗?6行又缩减到4行,还是一样的结果。是不是很巧妙?”
“不是。”
“想想为什么6行代码和4行代码有一样的执行效果呢?看一看最后打印的都是什么?都是变量s。第一段中第四行为s=s+a,第二段中第三行s=s+i,说明这两句效果一样,也就说明a和i可能相等。再仔细查看,每次刚刚进入循环进行计算时,a和i的值是不是都一样?”
“不知道。爸爸我饿了。”
“儿子辛苦了,今天太晚了,披萨店关门了,爸爸马上给你煮香香的方便面。就先简单的讲到这吧。这是for循环最基础的部分,之后的千变万化,都是在这个基础上进行的。一会吃晚饭,用我教你的方法,把两段程序一步步的执行,看看每个变量值的变化,看看程序执行的精妙之处!”
总算凑合着讲完了,嗓子又干又疼。其实讲这么多只能起一个引导的作用,关键还是在于平时的实践。只有在电脑上多写程序,并且多思考多总结,才能稳步提高。
|
|
|
|
|