看过很多教程,却依然写不好一个程序,怎么破?

简介: 最近在和学员的沟通中,发现不少初学者面临这样一个问题:了解了一些基本的语法,看得懂书上的示例,但是面临一个新的编程问题时,依然感到无从下手。

零基础python入门教程:python666.cn

大家好,欢迎来到 Crossin的编程教室 !

近在和学员的沟通中,发现不少初学者面临这样一个问题:了解了一些基本的语法,看得懂书上的示例,但是面临一个新的编程问题时,依然感到无从下手。究其原因,主要是两个方面:


  1. 整体上,不晓得如何把问题转化为程序语言。
  2. 细节上,不知道用什么方法去实现某个功能。

比如我们码上行动的编程实例里有一道题,大意是:生成 200 个优惠码,每个优惠码由8位字母组成(包括大小写)。

当然题目本身难度不高,和我们公众号【每周一坑】栏目里的题相比,这个算是小 case 了。不过如果你是一个刚刚接触编程不久,才掌握条件判断、循环、列表的新手来说,还是有点小挑战的。

以这题来说,有人是直接对生成一串字符没有想法,不知道怎么办。更多的人可能会有些思路,但在具体的环节,比如如何产生随机字母、如何拼成字符串、如果判断重复上遇到麻烦。从学员的评论中可以看出,很多人惊呼:原来还有 xxx 这个函数、还有 yyy 这个模块,完全都不知道。

那么在开发程序的时候,怎么去解决类似的问题,并且找到合适的方法呢?我简单分享下几点经验:

1. 学会分解问题

有个关于数学家当消防员的笑话:


消防队长问:如果巷子里一个货仓着火了怎么?数学家答:把消火栓接到软管上,打开水龙头,把火浇灭。队长说:完全正确!那如果你来到巷子发现货仓没着火怎么处理?数学家答:把货仓点着,这样问题简化到一个已知问题上了。

抛开笑话本身的夸张,作为一个程序员,你也需要有类似的逻辑思维:分解和转化问题。

  • 生成 200 个优惠码 => 生成 1 个优惠码,循环 200 次
  • 生成 1 个 8 位优惠码 => 生成 1 个字符,循环 8 次
  • 生成 1 个随机字符 => 生成一个随机数,转成字符

生成一个随机数,这是个我们很早就提过的一个问题,用 random 模块即可实现。那么这个问题的思路就已经比较清楚了。剩下的就是处理好过程中的细节:如果从数字转换为字符、如何循环、如何拼接等等。

不过肯定会有同学说,我都不知道数字还能转成字符。也会有同学表示,其实根本不用绕这个弯,明明可以直接生成随机的字符。没错,就和点燃货仓的数学家一样,我们这个逻辑没问题,但实际看来还是有点二。所以另外一个重要的经验:

2. 学会使用搜索

虽然大多数程序员在大学里的专业属于计算机科学(science),但在企业中的角色却是工程师(engineer)。也就是说,编程是一项更偏向实践而非理论的工作。我们的目标是解决问题,需要掌握的是解决问题的手段和方法。对于程序员来说,搜索就是非常有效的一种寻找解法的途径。

但可能很多没有编程经验的同学会觉得,学编程时通过搜索找到一个解法是一种“作弊”的方式,自己并没有真正理解怎么解决问题。这种想法大可不必。即使经验丰富的程序员,也会在处理问题之前,通过搜索来寻找有没有更合适的解决方案。通过搜索找到解法这个行为本身会比写出这个小程序对你来说更有价值。这里我曾写过一篇,关于如何使用搜索引擎:编程初学者如何使用搜索引擎

就优惠码这个问题来说,通过一些简单的搜索,就可以发现不少类似的问题解法。当然你不能去搜“如何制作 8 位优惠码”,而是搜“Python 生成随机字符串”这样的关键字。然后你就了解到:可以用 random 的 sample、shuffle,另外还有 string 这种模块可以利用。

顺便扯远些。有同学曾经问过:你们的教程是不是包括了找工作需要的知识点。这也是一种类似的误区。我们不是去参加高考,按照考纲复习完备,然后再上考场。现在的计算机行业可以说比任何一个行业的更新都要快,你永远不可能“完全”掌握某个领域的知识之后再去开发,你需要不断去面对新的技术和新的问题。所以编程相关的知识是变化的,要掌握的是不变的解决方法。

况且对于任何一个领域来说,知识的分布就像这张图,当你越进一步,你面对的知识空白就越多。这也是为什么很多同学学完基础之后,表示找不到一本合适的教材来进阶。因为根本就不存在这样的教材。在初级阶段,你提升能力的模式是 学习技能->拿技能去练习,而到了一定程度之后,提升能力的方式则必须是 遇到问题->想办法去解决问题,是一个由被动变主动的过程。所以,想更进一步的同学,不要去找教材,而是去找问题,再用好“搜索”这个伟大工具去解决它。

我们秉持的教学方法也是一样:我们不是给你教材,全互联网的资源都应该是你的教材。我们给你问题,以及如何去找解决问题的方法。


3. 学会查文档

在程序员届有这样一个词:RTFM(Read The Fuxxing Manual,去读TMD文档手册)

类似还有一个 STFW(Search The Fuxxing Web),就是对应我前面说的第 2 点。

我曾经一位老师指着一本厚厚的编程教材跟我们说:你们根本不用去记这些函数,只要用的时候知道去哪里查就足够了。

搜索可以告诉你有哪些解决方法,而官方的文档则是更明确的告诉你该怎样使用,参数有什么限制,需要注意的地方等等。唯一遗憾的是,大多数 Fuxxing Manual 都是英文写的。所以你说,英语不好到底能不能学编程。我只能说,可以,但强烈建议你好好补一下英语。(好消息是现在越来越多的文档都提供了中文版本

还是回到这道题目,通过 Python 官方文档,你就会知道 random 模块还能做哪些随机操作,以及 string 模块可以生成哪些字符串。

最后,还有提一点老生常谈:

4. 不断练习,积累经验

我已说过无数遍:编程如乐器,学会语法只是开始,还需要不断练习来掌握。每个程序员都是一行行代码堆出来的。如果你刚学编程不久,觉得自己缺少编程思维,经常感叹原来还有这种操作,写长一点代码就老出 bug 的话,相信我,你只是写得太少,看得太少。不用妄自菲薄,也不用急于求成,踏踏实实地先多练一练。等你把一本教程的示例代码都自己在电脑上输入运行一遍之后,我们再来谈谈什么是编程思维。这不是什么我独创的奇葩教学法,大多数程序员和计算机教师应该都认同这点。

以上是作为过来人的一点经验,希望对需要的人有所帮助。

感谢转发点赞的各位~


_往期文章推荐_


和想要通过学习Python转行的同学聊一聊

目录
打赏
0
0
0
0
11
分享
相关文章
7 行代码搞崩溃 B 站,原因令人唏嘘!
7 行代码搞崩溃 B 站,原因令人唏嘘!
74 2
前端开发必备神器大公开,用过的人都哭了:效率翻倍不是梦!
前端开发结合了创意与技术,本文介绍了几个提升开发效率的工具:Visual Studio Code、Webpack、Postman、GitHub 和 Chrome DevTools。这些工具分别在代码编辑、模块打包、API 测试、版本控制和网页调试等方面发挥重要作用,帮助开发者提高工作效率,优化项目管理。
49 4
关于我用半个月过了软件设计师这件事
这篇文章分享了作者在半个月内通过软件设计师考试的经验,包括快速刷视频了解知识体系、针对性地刷历年真题并根据错题加强知识点巩固、进行模拟考试和总结,以及使用笔记软件记录重要知识点的方法。
关于我用半个月过了软件设计师这件事
快如闪电!揭秘网页秒开秘籍,网友:再也不怕网速拖后腿!
【8月更文挑战第6天】随着互联网的发展,快速的网页加载成为关键。本文介绍前端性能优化策略,涵盖资源压缩与合并、图片优化、缓存利用、CDN部署、CSS及JavaScript的加载顺序优化、异步加载及DOM和CSS渲染减少等方面,旨在全面提升页面加载速度与用户体验。通过实施这些技术,可有效改善网站性能,满足用户需求并提升搜索引擎排名。
108 2
2021年9月28日,老是遇到一些非常奇葩的问题。就离谱、好好的一个web项目就莫名奇妙坏了。
开发者在使用IDEA 2020编辑器搭建的SSM框架图书管理系统中,遇到删除功能异常问题,经过一系列尝试后发现是IDEA编译缓存导致的,最终通过重新编译项目解决了问题。
离谱!阿里面试官嫌面试者技术差,竟彻夜怒肝524页面试通关手册
又到了“金三银四”面试求职高峰期,在金三银四时也参与过不少面试,2021都说工作不好找,也是对开发人员的要求变高。前段时间自己有结合GitHub高频面试资料整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档(1000道高频题),同时也整理一些图文解析及笔记,今天在这免费分享给大家,希望大家在即将的十月面试做好复习,长期的积累和短期的突击让自己能找到一个满意的工作!
前天才讲的知识点,不听讲的人今天就跑来问
前天才讲的知识点,不听讲的人今天就跑来问
120 0
初级软件测试面试题怎么找?提供的这两个地方你肯定用得上
最近几年,随着电子产品和互联网的蓬勃发展,各类科技公司如雨后春笋般出现,而软件公司作为科技类公司中的重要组成部分,在这支互联网大军中也占据了重要一席。因而,负责软件问题质检的软件测试岗位也逐渐成了这几年炙手可热的就业岗位之一。
180 0
【蓝桥杯Java_C组·从零开始卷】第四节(附)、河图洛书【九宫格】(卷王必备,不想卷的略过,使用优化暴力破解,与网上莫名其妙的规律不一样)
【蓝桥杯Java_C组·从零开始卷】第四节(附)、河图洛书【九宫格】(卷王必备,不想卷的略过,使用优化暴力破解,与网上莫名其妙的规律不一样)
273 1
【蓝桥杯Java_C组·从零开始卷】第四节(附)、河图洛书【九宫格】(卷王必备,不想卷的略过,使用优化暴力破解,与网上莫名其妙的规律不一样)