习题 14: 提示和传递 ********************************** 让我们使用 ``argv`` 和 ``raw_input`` 一起来向用户提一些特别的问题。下一节习题\ 你会学习如何读写文件,这节练习是下节的基础。在这道习题里我们将用略微不同的方法\ 使用 ``raw_input``\,让它打出一个简单的 ``>`` 作为提示符。这和一些游戏中的方式\ 类似,例如 Zork 或者 Adventure 这两款游戏。 .. literalinclude:: ex/ex14.py :linenos: 我们将用户提示符设置为变量 ``prompt``\,这样我们就不需要在每次用到 ``raw_input`` 时重复输入提示用户的字符了。而且如果你要将提示符修改成别的字串,你只要改一个位置\ 就可以了。 非常顺手吧。 你应该看到的结果 =================== 当你运行这个脚本时,记住你需要把你的名字赋给这个脚本,让 argv 参数接收到你的名称。 .. literalinclude:: ex/ex14.txt :language: console 加分习题 ============ 1. 查一下 Zork 和 Adventure 是两个怎样的游戏。 看看能不能下载到一版,然后玩玩看。 2. 将 ``prompt`` 变量改成完全不同的内容再运行一遍。 3. 给你的脚本再添加一个参数,让你的程序用到这个参数。 4. 确认你弄懂了三个引号 ``"""`` 可以定义多行字符串,而 ``%`` 是字符串的格式化工具。 常见问题回答 ========================== 运行时出现 ``SyntaxError: invalid syntax`` 再次说明,你应该使用命令行,而不是 python 环境去运行脚本。如果你先输了 ``python`` 然后试图输入 ``python ex14.py Zed`` 就会出现这个错误,你这是在 python 里运行 python。 关掉窗口,重新运行 ``python ex14.py Zed``\。 修改命令提示符是什么意思? 看这句变量定义 ``prompt = '> '``\,将它改成一个不同的值。这个应该难不倒你,只是修改一个\ 字符串而已,前面的 13 个习题都是围绕字符串来的,自己花时间搞定。 发生错误 ``ValueError: need more than 1 value to unpack``. 记得上次我说过,你应该到“你应该看到的结果”部分重复我的动作。集中精力到我的输入,以及为什么\ 我提供了一个命令行参数。 我可以用双引号定义 ``prompt`` 变量的值吗? 当然可以,试试看就知道了。 你有台 Tandy 计算机? 我小时候有过。 运行时出现 ``NameError: name 'prompt' is not defined``\。 要么拼错了 ``prompt`` 要么漏写了这一行。回去比较你写的和我写的东西,从最后一行开始直至第一行。 怎样从 IDLE 中运行? 不要使用 IDLE。