## 笨办法更简单
在这本书的帮助下,你将通过非常简单的练习学会一门编程语言。做练习 是每个程序员的必经之路:
> 1. 做每一道习题
> 1. 一字不差地写出每一个程序
> 1. 让程序运行起来
就是这样,刚开始可能会非常难,但你要坚持下去。如果你通读了这本书,并且每晚花一两个小时做习题,你可以为自己读下一本关于Python的编程书籍打下良好的基础。这本书不会在一夜之间把你变成一个程序员,但是它会帮你掌握学习编程的最基本的方法。
这本书的目的是教会你作为编程新手所需的三种最重要的技能:读和写、注重细节、发现不同。
## 读和写
如果你连打字都成问题的话,那你学习编程也会成问题。尤其如果你连程序源代码中的那些奇怪字符都打不出来的话,就根本别提编程了。没有这种基本技能的话,你将连最基本的软件工作原理都难以学会。
输入代码样例并让他们运行起来能帮你记住各种符号的名字并对它们熟悉起来,这个过程也会让你对编程语言更加熟悉。
## 注重细节
区分好坏程序员的最重要的一个技能就是对于细节的注重程度。事实上这是任何行业区分好坏的标准。你必须关注你工作中任何一个微小的细节,否则你的工作成果将缺乏重要的元素。以编程来讲,这样你得到的结果只能是毛病多多难以使用的软件。
通过将本书中的例子一字不差地打出来,你将通过实践训练自己,让自己集中精力到你作品的细节上面。
## 发现不同
程序员长年累月的工作会培养出一个重要技能,那就是对于不同点的区分能力。有经验的程序员拿着两份仅有细微不同的程序,可以立即指出里边的不同点来。程序员甚至造出工具来让这件事更加容易,不过我们不会用到这些工具。你要先用笨办法训练自己的大脑,等你具备一些相关能力的时候才可以使用这些工具。
在你做每一个习题的时候,你一定会写错东西。这是不可避免的,甚至有经验的程序员也会偶尔出点错。你的任务是对比你写过的东西和正确的答案,并将所有的不同点都改正。这个过程可以训练你关注自己的错误,bugs以及其他的一些问题。
## 不要复制-粘贴
你必须自己手动将每个练习打出来。复制粘贴会让这些练习变得毫无意义。这些习题的目的是训练你的双手和大脑思维,让你有能力读代码、写代码、观察代码。如果你复制粘贴的话,那你就是在欺骗自己,而且这些练习也将失去效果。
## 使用书中包含的视频
《笨办法学Python》一书中包含超过5小时的教学视频。对于每一个练习都有一个视频,或者是示范这个练习,或者是给出一些完成练习的提示。使用视频的最佳方式是首先尝试不使用它们完成练习,然后通过视频回顾所学,或者是在你被问题卡住的时候使用视频。这将慢慢使你通过视频来学习编程和构建你直接理解代码的技能。坚持下去,慢慢的你将不需要书中视频或任何学习编程的视频。你可以只看你所需要的信息。
## 对于坚持练习的一点建议
在你通过这本书学习编程时,我正在学习弹吉他。我每天至少练习2个小时,至少花一个小时练习音阶、和声、和琶音,剩下的时间用来学习音乐理论和歌曲演奏以及训练听力等。有时我一天会花8个小时来练习吉他,因为我觉得这是一件有趣的事情。对我来说,要学好一样东西,重复的练习是必不可少的。就算这天个人状态很差,或者说学习的课题实在太难,你也不必介意,只要坚持尝试,总有一天困难会变得容易,枯燥也会变得有趣了。
在我写笨办法学Python和笨办法学Ruby之间的那段时间,我发现了绘画这个有意思的事情。我在39岁的时候爱上了视觉艺术,并且花费每天的时间来学习它,就像我学习吉他,音乐和编程一样。我收集教学材料的用书,按照书上讲的做,每天练习绘画,并且专注于享受学习的过程。我不是一个“艺术家”,但是现在我可以说我会绘画。我在这本书中教给你我用到学习艺术上的相同方法。如果你把问题分解成小的练习课,并且每天完成他们,你就可以做任何事情了。如果你把精力集中在慢慢改进,享受学习的过程,那么你一定会受益,不管你之前有多么擅长它。
在你通过这本书学习编程的过程中要记住一点,就是“万事开头难”,对于有价值的事情尤其如此。也许你是一个害怕失败的人,一碰到困难就想放弃。也许你是一个缺乏自律的人,一碰到“无聊”的事情就不想上手。也许因为有人夸你“有天分”而让你自视甚高,不愿意做这些看上去很笨拙的事情,怕有负你”神童”的称号。也许你太过激进,把自己跟有20多年经验的编程老手相比,让自己失去了信心。
不管是什么原因,你一定要坚持下去。如果你碰到做不出来的加分习题,或者碰到一节看不懂的习题,你可以暂时跳过去,过一阵子回来再看。只要坚持下去,你总会弄懂的。一开始你可能什么都看不懂。这会让你感觉很不舒服,就像学习人类的自然语言一样。你会发现很难记住一些单词和特殊符号的用法,而且会经常感到很迷茫,直到有一天,忽然一下子你会觉得豁然开朗,以前不明白的东西忽然就明白了。如果你坚持练习下去,坚持探索他们,你最终会学会这些东西的。也许你不会成为一个编程大师,但你至少会明白程序是怎么工作的。
如果你放弃的话,你会失去达到这个程度的机会。你会在第一次碰到不明白的东西时(几乎是所有的东西)放弃。如果你坚持尝试,坚持写习题,坚持尝试弄懂习题坚持阅读习题的话,你最终一定会明白里边的内容的。如果你通读了这本书,却还是不知道编程是怎么回事。那也没关系,至少你尝试过了。你可以说你已经尽过力但成效不佳,但至少你尝试过了。这也是一件值得你骄傲的事情。
## 给“小聪明”们的警告
有的学过编程的人读到这本书,可能会有一种被侮辱的感觉。其实本书中没有任何要居高临下地贬低任何人的意思。只不过是我比我面向的读者群知道的更多而已。如果你觉得自己比我聪明,然后觉得我在居高临下,那我也没办法,因为你根本就不属于我的目的读者群。
如果你觉得这本书里到处都在侮辱你的智商,那我对你有三个建议:
> 1. 别读这本书了。我不是写给你的,我是写给需要学习的人的。
> 1. 放下架子好好学。如果你认为你什么都知道,那你就很难从比你强的人身上学到什么了。
> 1. 学 Lisp 去。我听说什么都知道的人可喜爱 Lisp 了。
对于其他在这里学习的人,你们读的时候就想着我在微笑就可以了,虽然我的眼睛里还带着恶作剧的闪光。
- 序言
- 前言
- 简介
- 0:安装和准备
- 1:第一个程序
- 2:注释和“#”井号
- 3:数字和数学计算
- 4:变量和命名
- 5:更多的变量和打印
- 6:字符串和文本
- 7:更多的打印(输出)
- 8:打印, 打印
- 9:打印, 打印, 打印
- 10:那是什么?
- 11:提问
- 12:提示别人
- 13:参数, 解包, 变量
- 14:提示和传递
- 15:读文件
- 16:读写文件
- 17:更多文件操作
- 18:命名, 变量, 代码, 函数
- 19:函数和变量
- 20:函数和文件
- 21:函数的返回值
- 22:到目前为止你学到了什么?
- 23:阅读代码
- 24:更多的练习
- 25:更多更多的练习
- 26:恭喜你,可以进行一次考试了
- 27:记住逻辑
- 28:布尔表达式
- 29:IF 语句
- 30:Else 和 If
- 31:做出决定
- 32:循环和列表
- 33:while循环
- 34:访问列表元素
- 35:分支和函数
- 36:设计和调试
- 37:复习符号
- 38:列表操作
- 39:字典,可爱的字典
- 40:模块, 类和对象
- 41:学会说面向对象
- 42:对象、类、以及从属关系
- 43:基本的面向对象的分析和设计
- 44:继承Vs.包含
- 45:你来制作一个游戏
- 46:项目骨架
- 47:自动化测试
- 48:更复杂的用户输入
- 49:写代码语句
- 50:你的第一个网站
- 51:从浏览器获取输入
- 52:开始你的web游戏
- 来自老程序员的建议
- 下一步
- 附录A:命令行教程
- 简介
- 安装和准备
- 路径, 文件夹, 名录 (pwd)
- 如果你迷路了
- 创建一个路径 (mkdir)
- 改变当前路径 (cd)
- 列出当前路径 (ls)
- 删除路径 (rmdir)
- 目录切换(pushd, popd)
- 生成一个空文件(Touch, New-Item)
- 复制文件 (cp)
- 移动文件 (mv)
- 查看文件 (less, MORE)
- 输出文件 (cat)
- 删除文件 (rm)
- 退出命令行 (exit)
- 下一步