当前位置: 首页 > 科技观察

编程新手:看懂很多示例,却依然写不好一个程序

时间:2023-03-20 13:58:34 科技观察

编程初学者:看懂了很多例子,还是写不好程序,但是面对一个新的编程问题,还是手足无措。原因主要有两个方面:总体上,我不知道如何将问题翻译成编程语言。在细节方面,我不知道用什么方法来实现某个功能。比如我们action对代码的编程例子中有一道题,大致思路是:生成200个优惠码,每个优惠码由8个字母(包括大小写)组成。当然,题目本身的难度并不高。和我们公众号【MondayPit】专栏的问题相比,这个算是小case了。不过,如果你是刚接触编程的新手,只掌握了条件判断、循环、列表,还是有点挑战。对于这道题,有些人对生成一串字符毫无头绪,不知如何是好。更多的人可能有一些想法,但是在具体的环节,比如如何生成随机字母,如何拼写字符串,判断重复是否遇到麻烦等。从同学们的评论中可以看出,很多人惊呼:有xxx的功能,yyy的模块,根本不知道。那么在开发程序的时候,如何解决类似的问题,找到合适的方法呢?我简单分享一些经验:1.学会分解问题仓库着火了怎么办?数学家:把消防栓接到水管上,打开水龙头,把火扑灭。队长说:完全正确!那如果来到巷子里发现仓库没有着火怎么办?数学家回答:放火烧仓库,这样问题就可以简化为一个已知问题。抛开笑话本身的夸张不谈,作为程序员,你也需要有类似的逻辑思维:分解和转化问题。生成200个优惠码=>生成1个优惠码,循环200次生成一个8位优惠码=>生成1个字符,循环8次生成一个随机字符=>生成一个随机数,转成字符生成aRandomnumbers,这个是我们很早之前提到的一个问题,可以用random模块来实现。那么这个问题的思路就已经比较清晰了。剩下的就是处理过程中的细节问题:数字怎么转字符,怎么循环,怎么拼接等等。但是肯定有同学会说,我都不知道数字可以转字符.也有同学会说,其实这个弯根本就不用绕,很明显可以直接生成随机字符。没错,就像那个点燃仓库的数学家一样,我们的逻辑没问题,但实际上还是显得有点模棱两可。所以还有一个重要的经验:2.学会使用搜索虽然大多数程序员在大学时主修计算机科学(science),但他们在企业中的角色是engineer(工程师)。也就是说,编程是一项比理论更实际的工作。我们的目标是解决问题,我们需要掌握的是解决问题的手段和方法。对于程序员来说,搜索是一种非常有效的寻找解决方案的方式。但是很多没有编程经验的同学可能会认为在学习编程的时候通过搜索来寻找解决方案是一种“作弊”的方式,并没有真正理解如何解决问题。这种想法是不必要的。即使是经验丰富的程序员在解决问题之前也会搜索是否有更合适的解决方案。与编写这个小程序相比,寻找解决方案这一行为本身对您来说更有价值。在这里我写了一篇关于如何使用搜索引擎的文章:Howtousesearchenginesforprogrammingbeginners。就优惠码问题而言,通过一些简单的搜索,可以找到很多类似问题的解决方案。当然不能搜索“如何制作8位优惠码”,而是搜索“Python生成随机字符串”之类的关键词。那么你就会明白:可以使用randomsample和shuffle,还有string模块可以使用。顺便说一句,走得更远。曾经有同学问:你们的教程有没有包括找工作需要的知识点。这也是一种类似的误解。我们又不是高考,按照考纲复习完成,然后去考场。现在的计算机行业可以说更新换代的速度比其他任何行业都要快。你永远不可能“完全”掌握某个领域的知识,然后再去开发它。你需要不断面对新技术和新问题。所以,编程相关的知识是千变万化的,需要掌握的是同样的解决方案。而且,对于任何一个领域,知识的分布都是这样的图。你走得越远,你将面临的知识差距就越大。这也是为什么很多同学说学了基础,找不到合适的教材进阶的原因。因为没有这样的教材。在初级阶段,你提升能力的方式是学习技能->把技能拿来练,但是到了一定程度之后,提升能力的方式一定是遇到问题->想办法解决问题,这是一个被动到主动的过程。所以,想要更进一步的同学,不要找课本,而是要找问题,然后用“搜索”这个大利器来解决。我们秉承的教学方式是一样的:我们不是给你课本,网上所有的资源都应该是你的课本。我们为您提供问题以及如何找到解决方案。3.学会搜索文档程序员圈子里有这样一句话:RTFM(ReadTheFuxxingManual,阅读TMD文档手册)和STFW(SearchTheFuxxingWeb)类似,对应我前面说的第二点.我的一个老师曾经指着一本厚厚的编程课本告诉我们:这些函数你根本不需要死记硬背,只要在使用的时候知道去哪里找就够了。搜索可以告诉你有哪些解决方案,而官方文档会更清楚地告诉你如何使用它,参数有哪些限制,需要注意什么等等。唯一遗憾的是大部分复兴手册都是英文的。所以你说,你英语不好能学编程吗?我只能说是的,但我强烈建议您提高英语水平。(先睹为快:我们整理了一本适合Python学习的英语词汇,做成了单词书,即将发布。)还是回到这个话题,通过Python官方文档,你会知道random模块可以还做哪些随机操作,以及字符串模块可以生成哪些字符串。Python的官方文档我还没有找到特别好的中文版,usyiyi.cn比较新也比较全。如果你有更好的了解,欢迎留言指出。最后,还有一个老生常谈:4.不断练习,积累经验。我说过无数次:编程就像乐器,学习语法只是一个开始,需要不断练习才能掌握。每个程序员都是一堆一堆的代码。如果你刚学编程,觉得自己缺乏编程思维,常常感叹这种操作还存在,代码写的再长,总会出bug,相信我,你只是写的太少,看的太少.不要小看自己,也不要急于求成,只要脚踏实地多修行。把一个教程的示例代码全部输入电脑运行后,我们再来说说什么是编程思维。这不是我创造的一些奇怪的教学方法,大多数程序员和计算机教师应该都同意这一点。【本文为栏目组织《Crossin的编程课堂》原创文章,转载请微信公众号(rossincode)联系原作者】点此查看该作者更多好文