不懂的代码要先背下来吗?

【学生提问】
  老师对于有些程序设计的代码写法,不理解的时候,我是不是应该先背下来,或者做个记录,以后要用的时候,再参考,还是用什么方式彻底弄懂?这个对于算法的理解,有什么提高的方法和步骤吗?

【答复】
  首先,我不赞成在不理解的情况下强记的方法。不理解先强记,对于某些少数的人文类知识,如诗词,是可以的,因为那些内容,一字不差是基本要求。各学科都有其内在逻辑,对绝大多数知识,要设法将自己已有知识与新学的知识联系起来,这可以是到达理解程度的中间状态,这样就可以不记而记了。对于程序和算法而言,掌握其思想,懂得其技术,写法可以有很多,先背下来,可能就坏事了。
  其次,如何处理这件事?建议几个策略,我以你正在学的递归为例说明:(1)补差法:现在学不懂递归,根源可能还是你对函数机制的理解不到位,形参和实参的结合、函数返回的值以及返回的点等等,只要有一个地方模糊,到递归时,就会成为障碍,你可以借着学递归,找出与之相关的前面的知识点,把未曾觉察的短板补上来;(2)外围突破法:看某一本书没懂,某一个视频没看懂,可能是这些材料与你的思维没有搭上线,你可以再找一些材料,可以在网上找,可以翻其他书,别的材料里的例子、讲法,可能让你一下子就打通了自己未能发现的关键障碍,做到了理解;(3)暂时搁置法:学习是个长期的过程,别指望所有的内容过一遍就全打通,如果这个知识点太困难了,又不是马上急着要用上(急着要用的可以先照猫画虎),就可以先放一放(不是放弃了),以后,一是记着往前走一段时间后再回来看(一年级的没全懂,二年级回来再看,发现容易了),二是在用着时立刻回来看(这是用补差法解决后续的知识点顺带解决遗留问题),这时是带着要解决的问题来学,自然效果就好了。
  总结一下,学习的困难源于知识的联系不够、知识点间的逻辑不明,死盯一点,用单一方式突破,有困难正常。用较长的周期、用多种材料、多种方式突破,而不是在形式层面背会,这是解决困难的思路。

当然可以,下面我来解释一下代码的主要部分。 首,我们定义了两个变量 `sum` 和 `count`,用于统计班级总分和人数。初始值都为0。 ```python sum = 0 count = 0 ``` 然后,我们使用了一个while循环来不断输入每个同学的成绩。循环条件为 `True`,表示循环条件永远为真,因此需要在循环体内部使用 `break` 语句来跳出循环。 在循环体内部,我们使用 `float(input())` 函数来读取用户输入的成绩,并将其转换为浮点数类型。如果用户输入的成绩小于0,说明输入结束,我们使用 `break` 语句跳出循环,进入后续的计算和输出。 如果用户输入的成绩大于等于0,说明输入的成绩有效,我们将其累加到 `sum` 变量中,并将 `count` 变量加1,表示班级人数加1。 ```python while True: score = float(input()) if score < 0: break sum += score count += 1 ``` 如果 `count` 变量的值为0,说明没有输入任何有效成绩,我们输出 "人数为0"。 ```python if count == 0: print("人数为0") ``` 如果 `count` 变量的值大于0,说明已经输入了有效成绩,我们计算平均分并输出。平均分的计算公式为 `avg = sum / count`,其中 `sum` 表示班级总分,`count` 表示班级人数。为了保留两位小数,我们使用了字符串格式化函数 `"{:.2f}".format(avg)`。 ```python else: avg = sum / count print("{:.2f}".format(avg)) ``` 希望这样的解释能帮助你理解这段代码。如果还有什么不的地方,可以随时问我。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值