Exercise 14: 提示和傳參

原文鏈接:http://learnpythonthehardway.org/book/ex14.html

       現在讓我們來做一個同時使用 argv 和 raw_input 兩個方法來詢問用戶一些特別的事情的練習。在做下一個練習前你得學會如何讀和寫像下面示例的腳本。在這次練習中,我們將使用 raw_input 的方式稍微有點不同,不同之處在於我們用它只簡單的輸出一個 “>” 提示符。這有點像Zork 或者 Advacne遊戲。

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 中來避免反反覆覆的打印它。現在如果我們想要使其他提示符的話,只要返回腳本中修復 prompt 這個變量的值就行了。

非常方便!

輸出結果如下:

當你運行這個腳本的時候,你得記住要給腳本中的 argv 參數傳人相應的值。
c:\>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 是什麼樣的遊戲。試着找到一個副本並玩一下這個遊戲。

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 也可能忘了寫定義prompt的那一行。回過頭和我的代碼仔細對比一下,從腳本的最後一行開開始到最上面的方式來對比。

我可以用IDLE來運行腳本嗎?
答:不要去使用IDLE。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章