习题 1: 第一个程序 ******************************** 你应该在练习 0 中花了不少的时间,学会了如何安装文本编辑器、运行文本编辑器、以及如何运行命令行终端,\ 而且你已经花时间熟悉了这些工具。请不要跳过前一个练习的内容直接进行下面的内容,这也是本书唯一的一次这样的警示。 将下面的内容写到一个文件中,取名为 ``ex1.py``\。这个命名方式很重要,Python 文件最好以 ``.py`` 结尾。 .. literalinclude:: ex/ex1.py :linenos: 如果你使用的是 Mac OSX 下的 TextWrangler,那你的文本编辑器大致是这个样子: .. figure:: _static/osx_textwrangler.png :align: center 如果你在 Windows 下使用 Notepad++,那你看到的应该是这个: .. figure:: _static/win_notepadpp_ex1.png :align: center 别担心编辑器长得是不是一样,关键是以下几点: 1. 注意我没有输入左边的行号(1-7)。这些是额外打印到书里边的,以方便对代码具体的某一行进行讨论。\ 例如“参见第 5 行……”你无需将这些也写进 python 脚本中去。 2. 注意我截图中开始的 ``print`` 语句,它和代码范例中是完全一样的,而且是精确的完全相同,不仅仅\ 是表面相似而已。要让这段脚本正常工作,代码中的每个字符都必须完全匹配。当然,显示的颜色可能是\ 不同的,颜色并不重要,只有字符才是重要的。 然后你需要在命令行终端通过输入以下内容来运行这段代码: .. code-block:: console python ex1.py 如果你写对了的话,你应该看到和下面一样的内容。如果不一样,那就是你弄错了什么东西。\ 不是计算机出错了,计算机没错。 你应该看到的结果 =================== 在 Mac OSX 的 Terminal 下面你应该看到以下内容: .. figure:: _static/osx_terminal_ex1.png :align: center 在 Windows 的 PowerShell 下你应该看到这些: .. figure:: _static/win_powershell_ex1.png :align: center 你也许会看到 ``python ex1.py`` 前面显示了不同的用户名,计算机名,以及其他一些信息,\ 这不是问题,重要的是你输入了命令,而且看到了相同的输出。 如果你看到类似如下的错误信息: .. literalinclude:: ex/ex1.err :language: console :linenos: 这些内容你应该学会看懂的,这是很重要的一点,因为你以后还会犯类似的错误。就是我现在也会\ 犯这样的错误。让我们一行一行来看。 1. 首先我们在命令行终端输入命令来运行 ``ex1.py`` 脚本。 2. Python 告诉我们 ``ex1.py`` 文件的第 3 行有一个错误。 3. 然后这一行的内容被打印了出来。 4. 然后 Python 打印出一个 ``^`` (井号,caret) 符号,用来指示出错的位置。 注意到少了一个 ``"`` (双引号,double-quote) 符号了吗? 5. 最后,它打印出了一个“语法错误(SyntaxError)”告诉你究竟是什么样的错误。通常这些错误信息\ 都非常难懂,不过你可以把错误信息的内容复制到搜索引擎里,然后你就能看到别人也遇到过这样的错误, 而且你也许能找到如何解决这个问题。 .. warning:: 如果你来自另外一个国家,而且你看到关于 ASCII 编码的错误,那就在你的 python 脚本的最上面\ 加入这一行: `# -*- coding: utf-8 -*-` 这样你就在脚本中使用了 unicode UTF-8 编码,这些错误就不会出现了。 加分习题 ============ 你还会有 ``加分习题`` 需要完成。加分习题里边的内容是供你尝试的。如果你觉得做不出来,你可以暂时\ 跳过,过段时间再回来做。 在这个练习中,试试这些东西: 1. 让你的脚本再多打印一行。 2. 让你的脚本只打印一行。 3. 在一行的起始位置放一个 '#' (octothorpe) 符号。它的作用是什么?自己研究一下。 从现在开始,除非特别情况,我将不再解释每个习题的工作原理了。 .. note:: 井号有很多的英文名字,例如:'octothorpe(八角帽)','pound(英镑符)', 'hash(电话的#键)', 'mesh(网)' 等。 常见问题回答 ========================== 我可不可以使用 IDLE? 不行。你应该使用 OSX 的 Terminal 或者 Windows 的 Powershell,和我这里演示的一样。如果你不知道如何使用它们,你可以去读一下《命令行快速入门》,网址是 http://cli.learncodethehardway.org/book/ 怎样让编辑器显示不同颜色? 编辑之前先将文件保存为 .py 格式,例如 ex1.py,后面编辑时你就可以看到各种颜色了。 运行 ex1.py 时看到 `SyntaxError: invalid syntax`\。 你也许已经运行了 python,然后又在 python 环境下运行了一遍 python。关掉并重启命令行终端,重来一遍,只键入 `python ex1.py` 就可以了。 我还是没法再 PowerShell 下运行 python。 那就给你个视频教程看看吧: http://www.youtube.com/watch?v=ndNlFy-5GKA 错误信息 `can't open file 'ex1.py': [Errno 2] No such file or directory`\。 你需要在你创建文件的目录下运行命令。确认你事先使用 `cd` 命令进入了这层目录下。加入你的文件存在 `lpthw/ex1.py` 下面,那你需要先执行 `cd lpthw/` 再运行 `python ex1.py`\,如果你不明白命令的意思,那就去看看问题1中提到的《命令行快速入门》吧。 怎样在代码中输入我们国家的语言文字? 确认在文件开头输入这行: ``# -*- coding: utf-8 -*-`` 我的文件无法运行,它直接回到了命令行,没有任何输出。 很有可能是你把代码做了字面理解,认为 ``print "Hello World!"`` 就是让你在文件中 print ``"Hello World!"`` 出来,于是你没有输入 `print`\。你的代码应该和我的完全 一模一样。我的每行里边有 `print`\,你的也要确保都有,这样代码才能正常运行。