分享

第5关课后练习讲解

 skybook360 2022-09-03 发布于江苏

练习一:数羊

①明确目标

编写一段代码,模拟我们数羊到入睡的过程:

每数五只羊,就提问一次:睡着了吗?

如果没有睡着,继续循环,并打印“继续数羊”。

如果睡着了,则停止循环,并打印“终于睡着了”。

②思路讲解

我们要将题目的要求转变成执行流程,然后才能写代码。助教这边先梳理好了流程,给大家讲解一下。



首先我们看一下第一句“每数五只羊,就提问一次:睡着了吗?”,将这句话拆分一下,然后提取其中的动作,分别是“数羊”、“数到了五只羊”、“提问一次”。

“数羊”即是数数,需要进行数字累加,因此我们需要一个变量来存放这些数字并累加。那么第一步就是创建变量,第二步是累加。

“数到了五只羊,就提问一次”,这里我们应该还需要一个条件判断,判断变量是否累加完5只羊,是的话就要进行提问。那么流程的第三步就是判断是否累加够5只羊。

当判断累加够5只羊时,就需要进行提问,那么流程的第四步就是提问“睡着了吗”。

接下来需要根据提问所收集到的结果进行判断,如果结果是“睡着”的话,就停止循环并打印“终于睡着了”;如果结果是“没有睡着”的话就继续循环并打印“继续数羊”,继续循环也就是继续累加。那么第五步就是判断是否睡着,再根据判断的结果做对应的操作。

根据这个流程我们可以写出这么一份代码:

i = 0

while True:

    i += 1

    print('数到第' + str(i) + '只羊')

    if i%5 == 0:
        answer = input('有没有睡着:')

        if answer == '没有':
            print('继续数羊')
        else:
            print('终于睡着了')
            break

这里我们使用 while 循环而不使用 for 循环,先看看 for 循环语句的语法【for 变量 in 可迭代对象:】,使用 for 循环的前提是有可迭代对象,或者循环的次数是明确的。在本题中我们没有可使用的可迭代对象,也无法确定循环的次数,因此无法使用 for 循环。

for 循环无法使用时,可以考虑使用 while 循环。while 循环语句的语法是【while 条件:】,每循环一次就进行一次条件判断,当条件满足即是 True 时,就可以进入循环啦。因为在本题中,我们无法确定循环的次数,需要通过判断后再决定是否结束循环,所以我们会使用到支线课程中学到的死循环语句【while True:】。

使用死循环时,我们也可以通过条件判断 + break 的用法跳出循环,代码里就用到啦。

然后在这个里我们会用到一个新的知识点:%求余。

跟+ - * / (加减乘除)一样,%是算术运算中的求余,这一点助教就不做过多的解释啦,直接应用就好~



我们要判断是否数到五只羊,也就是判断 i 变量是不是到了5的倍数,只要 i 除以5得到的余数为0,就证明已经数到五只羊。

现在的代码与课程中提供的参考代码不一样,正常思路是每循环一次就数一次羊,课程参考代码的思路是每循环一次就数5只羊,因此每次循环需要打印5次数羊的信息。



关于区间的设置方式属于数学里的找规律题,这里不做过多阐述,前面的 tips.py 文件已经给我们做了提示,所以我们直接使用就可以啦~



课程的参考代码可以作为一种思维拓展,不要求学会,我们按照正常思路写代码就可以啦~要记住,编程没有唯一解~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多