光速班进度太快,请容我充电
二十四小时
┭┮﹏┭┮
转眼进入2018,光速班真的是光速,截止新年第一周,已经讲解完成了10个小程序,老师是光速的头脑,学生是光速的理解力,但是,请问你们有没有善良地,摸着良心地考虑过我的感受?
我摸着良心说
你们跑太快
我的智商跟不上
新
课
上周几个程序来着?四个。对啊,这周几个?老霍说六个!
┭┮﹏┭┮
01
乘法小九九
一来,我先任性的直接上执行结果
有没有感觉很神奇,语句跟之前的小程序复杂不到哪里去,但是出现了神奇的排列,那么这个小程序的重点在哪里呢?
我们逐句分解,这个程序可以翻译如下:
乘法小九九
print('我会背乘法小九九了!')
:喂,注意哦,我会背乘法小九九了!
for i inrange(1, 10):
小伙伴“i“”说:我要跑步健身,我要跑1圈,哦,太少了,我要跑10圈,哦,不,太累了,我就跑小于10圈吧!
画外音:矫情!
重点:range,它就是矫情,(start,end)表示从start开始,计数到end结束,但不包含end。
for j in range(1, i + 1):
小伙伴“j”不服气了:我也要健身,我,我要跑1到,1到,总之i你跑第几圈的时候,我就从1开始,跑到你那么多圈;对,每次都这样!
画外音:这不是傻吗?
重点:这个for...in语句,它要执行多少次,其实完全取决于i是几,所以,当i为1时,它执行1次,i为2时,它执行2次...直到9次,i的循环结束。
print(str(j) + 'x' + str(i) + '=' + ''.format(i * j), end=' ')
:喂,你俩商量好了没?我要开始背了!
重点:str跟int的功能很像,但代表字符串 ;d表示数字,2表示输出两位数字宽度;format定义了输出的格式。
注意:今天的课程我都选用了转来转去的小标题,意思有好几个:
循环
光速
晕
我当然是最后一个
02
乘法小九九增强版1.0
乘法表还怎么增强,不就是一一得一,一二得二。。。。。。九九八十一吗?老霍的小程序傲娇地说,no! 我才不要顺着数,我要倒着数,喂!这。。。
其实很符合我的逆反心理
乘法小九九
背个乘法小九九没难度
我给你倒背一个
[嘚瑟]
print('我倒背如流!')
for i inrange(9, 0, -1):
for j inrange(9, i - 1, -1):
print(str(i) + 'x' + str(j) + '=' + ''.format(i * j), end=' ')
print()
那。。。这倒背和顺数有什么不同呢?其实没什么不同,对不对,我们看到都是用的for...in...,还是那range,str,还是,还是format,所以,是否突然明白,懂了算法和语句的逻辑,自己就可以赋予相同程序不同的值,而呈现出不同的效果。
解惑:
range(start,end,step)
start和end在程序1中已经做了解释,这个step的意思就是我每次循环走多长,比如,这个程序中range(9,0,-1)就是指每次循环-1.因此,小程序就倒数罗!
顺数倒读
同出一辙
03
求质数
在大于1的自然数中,除了1和它本身以外不再有其他因数
容我默默地说一句,看到这个程序我就不想继续写下去了被它的复杂度吸引了,真的是太复杂了!┭┮﹏┭┮
等我再充电24小时
顺口气再来
拿到这个程序我去找老霍唠叨了几句,1是想表达我真的看不懂很努力,2是想表达饶了我吧我是个带着问题学习的人,拿着输出结果,我们对话如下:
木登
执行结果,这个count不明白
计算了count次除法取余操作,
为了和后面的优化对比
老霍
木登
isPrime 呢
是个标志变量,是否为质数
开始设为True
发现有能整除这个数的数时,设为False
老霍
来,能理解老牌程序员说话的同学举个手,我保证不打你!我为老霍的耐心点赞!我自己再琢磨琢磨吧!拜拜,不送!送别老霍,我启动了自究模式如下:
求质数
n = input('求多少以内的质数,请输入最大值:')
n = int(n)
count= 0
for i in range(2, n + 1):
isPrime= True
for j in range(2, i):
count+=1
if (i%j) == 0:
isPrime = False
break
if isPrime:
print(i, end=' ', flush=True)
print()
print('count=' + str(count))
重点:
count+=1等价于count=count+1
isPrime:作为一个标志变量,该程序中决定是否输出“i”
%:返回除法运算后的余数
当我完成上面这个表的逻辑推演,我对这个程序有了更深入的了解,知道了什么是时候要count,isPrime拿来干嘛,并且顺便复习了range的定义。
真的是认真起来鬼都害怕都把自己感动得热泪盈眶!为了这个程序我已气血耗尽。
用推演的方式来理解小程序,是个很好的方法!我只有对学程序的小朋友们说一声
加油,珍重
4-6
求质数
加强版2.0/3.0/4.0
老霍说的六个程序,后三个是求质数的加强版,有什么可以加强的呢?看运行结果后你们来猜猜:
对了嘛,看出来了吧,是count的次数不同了,一个程序能出结果纵然是好事,但是它如果能高效的出结果,那就是好上加好!老霍在2.0/3.0/4.0版本上,对质数的求解方式进行了加速,可能是语句的微调,可能是其他算法,作为新一代的机器侠,能最终领会简化逻辑,高效输出才是硬道理!
怎么提速
待我满血复活时
再来分享
加油,保重
下周见
领取专属 10元无门槛券
私享最新 技术干货