python 提示和傳遞

2021-09-15 14:46 更新

練習(xí)14.提示和傳遞

這節(jié)練習(xí)讓我們使用argvraw_input一起來向用戶提一些特別的問題。下一節(jié)習(xí)題你會(huì)學(xué)習(xí)如何讀寫文件,這節(jié)練習(xí)是下節(jié)的基礎(chǔ)。在這道習(xí)題里我們將用略微不同的方法使用 raw_input,讓它打出一個(gè)簡(jiǎn)單的 > 作為提示符。這和一些游戲中的方式類似,例如 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)

我們將用戶提示符設(shè)置為變量 prompt,這樣我們就不需要在每次用到 raw_input 時(shí)重復(fù)輸入提示用戶的字符了。而且如果你要將提示符修改成別的字串,你只要改一個(gè)位置就可以了。

是不是非常方便?

你看到的結(jié)果

當(dāng)你運(yùn)行這個(gè)腳本時(shí),記住你需要把你的名字賦給這個(gè)腳本,讓 argv 參數(shù)接收到你的名稱。

$ 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.

附加題

  1. 查一下 Zork 和 Adventure是兩個(gè)怎樣的游戲??纯茨懿荒芟螺d到一版,然后玩玩看。
  2. prompt 變量改成完全不同的內(nèi)容再運(yùn)行一遍。
  3. 給你的腳本再添加一個(gè)參數(shù),讓你的程序用到這個(gè)參數(shù),像你在上一個(gè)練習(xí)中用到的解包操作first, second = ARGV。
  4. 確認(rèn)你弄懂了三個(gè)引號(hào) """ 可以定義多行字符串,而 % 是字符串的格式化工具。

常見問題

Q:我遇到一個(gè)報(bào)錯(cuò)SyntaxError:invalid syntax.

重申一遍,你要在命令行里執(zhí)行腳本,而不是在Python的解釋器里。如果在python解析器里再輸入python ex14.py Zed 一定會(huì)出錯(cuò)的,因?yàn)槟闶窃赑ython里運(yùn)行Python腳本了。

Q:我不太明白你說的改變變量prompt的值?

看到代碼的這句了么prompt = '> ',改變它的值就是讓你修改 prompt 為一個(gè)不同 于> 的值,只是修改一個(gè)字符串而已,你已經(jīng)做過13個(gè)練習(xí)題,這次試試看自己解決這個(gè)問題。

Q:我遇到一個(gè)錯(cuò)誤信息need more than 1 value to unpack.

看看“你看到的結(jié)果”這部分,并且看看我是怎么運(yùn)行腳本的。你應(yīng)該注意我是如何輸入命令的,為什么我輸入了一個(gè)命令行參數(shù)?

Q:怎樣在IDLE運(yùn)行程序?

不要用IDLE,現(xiàn)在只用文本編輯器就夠了。

Q:我能給變量prompt用雙引號(hào)嗎?

當(dāng)然可以,盡管試試看。

Q:我遇到一個(gè)明明錯(cuò)誤: name 'prompt' is not defined.

你可能是拼寫錯(cuò)了prompt或者是丟掉了代碼的那一行。逐行對(duì)比下你和我的代碼那里不一樣。你遇到這類錯(cuò)誤意味著你有拼寫錯(cuò)誤或者你根本沒有定義這個(gè)變量。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)