光速编程课的日常3

光速班进度太快,请容我充电

二十四小时

┭┮﹏┭┮

转眼进入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版本上,对质数的求解方式进行了加速,可能是语句的微调,可能是其他算法,作为新一代的机器侠,能最终领会简化逻辑,高效输出才是硬道理!

怎么提速

待我满血复活时

再来分享

加油,保重

下周见

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180110G0VDQP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券