鍍金池/ 教程/ Python/ exercise14.提示和傳遞
附錄 A-練習(xí) 9:生成一個(gè)空文件(Touch, New-Item)
附錄 A-練習(xí) 10:復(fù)制文件 (cp)
exercise44.繼承 Vs.包含
附錄 A-練習(xí) 14:刪除文件 (rm)
附錄 A-練習(xí) 11:移動(dòng)文件 (mv)
exercise46.項(xiàng)目骨架
附錄 A-練習(xí) 3:如果你迷路了
exercise37.復(fù)習(xí)符號(hào)
exercise47.自動(dòng)化測(cè)試
exercise3.數(shù)字和數(shù)學(xué)計(jì)算
附錄 A-練習(xí) 1:安裝
exercise32.循環(huán)和列表
exercise31.做出決定
exercise42.對(duì)象、類、以及從屬關(guān)系
exercise48.更復(fù)雜的用戶輸入
下一步
簡(jiǎn)介
附錄 A-練習(xí) 7:刪除路徑 (rmdir)
exercise49.寫代碼語(yǔ)句
exercise18.命名, 變量, 代碼, 函數(shù)
exercise12.提示別人
exercise14.提示和傳遞
exercise40.模塊, 類和對(duì)象
附錄 A-練習(xí) 12:查看文件 (less, MORE)
exercise9.打印, 打印, 打印
exercise13.參數(shù), 解包, 變量
exercise30. Else 和 If
exercise28. 布爾表達(dá)式
附錄 A-練習(xí) 4:創(chuàng)建一個(gè)路徑 (mkdir)
附錄 A-練習(xí) 15:退出命令行 (exit)
exercise25. 更多更多的練習(xí)
exercise6.字符串和文本
exercise2.注釋和井號(hào)“#”
exercise21. 函數(shù)的返回值
附錄 A-下一步
exercise1.第一個(gè)程序
exercise23. 閱讀代碼
附錄 A-練習(xí) 5:改變當(dāng)前路徑 (cd)
exercise17.更多文件操作
exercise24. 更多的練習(xí)
exercise19.函數(shù)和變量
exercise51.從瀏覽器獲取輸入
exercise22. 到目前為止你學(xué)到了什么?
exercise41.學(xué)會(huì)說(shuō)面向?qū)ο?/span>
exercise52.開始你的 web 游戲
exercise20. 函數(shù)和文件
exercise15.讀文件
exercise45.你來(lái)制作一個(gè)游戲
exercise10.那是什么?
exercise8.打印, 打印
exercise35.分支和函數(shù)
exercise26. 恭喜你,可以進(jìn)行一次考試了
exercise33.while 循環(huán)
exercise29. IF 語(yǔ)句
exercise36.設(shè)計(jì)和調(diào)試
exercise0.安裝和準(zhǔn)備
exercise50.你的第一個(gè)網(wǎng)站
附錄 A-練習(xí) 2:路徑, 文件夾, 名錄 (pwd)
exercise38.列表操作
附錄 A-練習(xí) 6:列出當(dāng)前路徑 (ls)
exercise16.讀寫文件
exercise4.變量和命名
exercise34.訪問(wèn)列表元素
exercise11.提問(wèn)
exercise43.基本的面向?qū)ο蟮姆治龊驮O(shè)計(jì)
附錄 A-簡(jiǎn)介
附錄 A-練習(xí) 8:目錄切換(pushd, popd)
來(lái)自老程序員的建議
exercise27. 記住邏輯
exercise5.更多的變量和打印
exercise7.更多的打印(輸出)
附錄 A-練習(xí) 13:輸出文件 (cat)
exercise39.字典,可愛(ài)的字典

exercise14.提示和傳遞

這節(jié)練習(xí)讓我們使用 argv 和 raw_input 一起來(lái)向用戶提一些特別的問(wèn)題。下一節(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) """ 可以定義多行字符串,而 % 是字符串的格式化工具。

常見(jiàn)問(wèn)題

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

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

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

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

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ò)誤或者你根本沒(méi)有定義這個(gè)變量。