习题 14: 提示和传递

阅读原文

让我们使用 argvraw_input 一起来向用户提一些特别的问题。下一节习题 你会学习如何读写文件,这节练习是下节的基础。在这道习题里我们将用略微不同的方法 使用 raw_input\,让它打出一个简单的 > 作为提示符。这和一些游戏中的方式 类似,例如 Zork 或者 Adventure 这两款游戏。

from sys import argv

script, user_name = argv
prompt = '> '

print "Hi %s, I'm the %s script." % (user_name, script)
print "I'd like to ask you a few questions."
print "Do you like me %s?" % user_name
likes = raw_input(prompt)

print "Where do you live %s?" % user_name
lives = raw_input(prompt)

print "What kind of computer do you have?"
computer = raw_input(prompt)

print """
Alright, so you said %r about liking me.
You live in %r.  Not sure where that is.
And you have a %r computer.  Nice.
""" % (likes, lives, computer)

我们将用户提示符设置为变量 prompt\,这样我们就不需要在每次用到 raw_input 时重复输入提示用户的字符了。而且如果你要将提示符修改成别的字串,你只要改一个位置\ 就可以了。

非常顺手吧。

What You Should See

当你运行这个脚本时,记住你需要把你的名字赋给这个脚本,让 argv 参数接收到你的名称。

$ python ex14.py zed
Hi zed, I'm the ex14.py script.
I'd like to ask you a few questions.
Do you like me zed?
>  Yes
Where do you live zed?
>  San Francisco
What kind of computer do you have?
>  Tandy 1000

Alright, so you said 'Yes' about liking me.
You live in 'San Francisco'.  Not sure where that is.
And you have a 'Tandy 1000' computer.  Nice.

Study Drills

  1. 查一下 Zork 和 Adventure 是两个怎样的游戏。 看看能不能下载到一版,然后玩玩看。
  2. prompt 变量改成完全不同的内容再运行一遍。
  3. 给你的脚本再添加一个参数,让你的程序用到这个参数。
  4. 确认你弄懂了三个引号 """ 可以定义多行字符串,而 % 是字符串的格式化工具。

Common Student Questions

I get SyntaxError: invalid syntax when I run this script.
Again, you have to run it right on the command line, not inside Python. If you type python, and then try to type python ex14.py Zed it will fail because you are running Python inside Python. Close your window and then just type python ex14.py Zed.
I don't understand what you mean by changing the prompt?
See the variable prompt = '> '. Change that to have a different value. You know this, it's just a string and you've done 13 exercises making them, so take the time to figure it out.
I get the error ValueError: need more than 1 value to unpack.
Remember when I said you need to look at the What You Should See (WYSS) section and replicate what I did? You need to do the same thing here and focus on how I type the command in, and why I have a command line argument.
Can I use double-quotes for the prompt variable?
You totally can. Go ahead and try that.
I get NameError: name 'prompt' is not defined when I run it.
You either spelled the name of the prompt variable wrong or forgot that line. Go back and compare each line of code to mine, from at the bottom of the script to the top. Any time you see this error, it means you spelled something wrong, or forgot to create the variable.

Copyright (C) 2010 by
Author: Zed Shaw
Translator:Zander Wong

results matching ""

    No results matching ""