笨方法學Python 習題 13: 引數、解包、變數
阿新 • • 發佈:2019-02-13
from sys import argv
script, first, second, third = argv
print ("The script is called:", script)
print ("Your first variable is:", first)
print ("Your second variable is:", second)
print ("Your third variable is:", third)
執行結果如下:
$ python ex13.py first 2nd 3rd The script is called: ex13.py Your first variable is: first Your second variable is: 2nd Your third variable is: 3rd $ python ex13.py cheese apples bread The script is called: ex13.py Your first variable is: cheese Your second variable is: apples Your third variable is: bread $ python ex13.py Zed A. Shaw The script is called: ex13.py Your first variable is: Zed Your second variable is: A. Your third variable is: Shaw
加分習題
①給你的指令碼三個以下的引數。看看會得到什麼錯誤資訊。試著解釋一下。
ValueError :not enough values to unpack.
②再寫兩個指令碼,其中一個接受更少的引數,另一個接受更多的引數,在引數解包時給它們取一些有意義的變數名。
將 raw_input 和 argv 一起使用,讓你的指令碼從使用者手上得到更多的輸入。
記住“模組(modules)”為你提供額外功能。多讀幾遍把這個詞記住,因為我們後面還會用到它。
常見問題回答
執行時錯誤資訊 ValueError: need more than 1 value to unpack。
記住,有一個很重要的技能是注重細節。如果你仔細閱讀並且完整重複了“你應該看到的結果”部分的命令引數,你就不會看到這樣的錯誤資訊。
argv 和 raw_input() 有什麼不同?
不同點在於使用者輸入的時機。如果引數是在使用者執行命令時就要輸入,那就是 argv, 如果是在指令碼執行過程中需要使用者輸入,那就使用 raw_input()。
命令列引數是字串嗎?
是的,就算你在命令列輸入數字,你也需要用 int() 把它先轉成數字,和在 raw_input() 裡一樣。
命令列該怎麼使用?
這個你應該已經學會了才對。如果你還沒學會,就去讀讀我寫的《命令列迫降式入門》吧 http://cli.learncodethehardway.org/book/
argv 和 raw_input() 不能合起來用。
別想太多了。在指令碼結尾加兩行 raw_input() 隨便讀取點使用者輸入就行了,然後再慢慢在指令碼中玩玩這兩個東東。
為什麼 ``raw_input(‘? ‘) = x``不靈?
因為你寫反了。照著我的寫就沒問題了。