第四章-使用者輸入與錯誤處理(User Input and Error Handling)

  • Python 輸入資料的方法:
    • 從終端視窗(Terminal Window)輸入 (4.1 節)
    • 從命令列(Command Line)輸入 (4.2 節)
    • 從檔案(File)輸入 (4.5 節)
    • 從圖形介面(Graphical Interface)輸入 (4.8 節)
  • 檢測使用者輸入資料的合法性-4.7 節
  • 編寫自己的模組(Module)-4.9 節

4.1-問個問題,讀取答案

問使用者一個問題,將其答案輸入程式中;用到的函式為:raw_input(Python 2)或 input(Python 3)。

  • 例如:
    #Python2
    C = raw_input('C=? ')
    print C
    
    #Python3
    C = input('C=? ')
    print(C)
    
    
  • 執行結果:

4.2-命令列中,讀取資料

通過命令列輸入資料。

4.2.1

  • 例如:
    #Python3
    import sys
    C = sys.argv[1]
    print(C)
  • 執行結果:

  • 說明:
    • 需要 import sys
    • sys.argv 為引數列表,儲存命令列引數;上述命令中:sys.argv[0] temp.pysys.argv[1] 21

4.2.2

命令列中所有引數均為字串,運算時需轉為對應型別。

  • 例如:
    #Python3
    import sys
    s = 0
    for arg in sys.argv[1:]:
        number = float(arg)
        s += number
    print('The sum is: %f' % s)
    
  • 執行結果:

  • 更簡潔的表達:
    #Python3
    import sys
    s = sum([float(x) for x in sys.argv[1:]])
    print('The sum is: %f' % s)

4.2.3

命令列引數以空格隔開;若需輸入空格,應當使用引號。

  • 程式:
    #Python3
    import sys
    print(sys.argv[1:])
  • 執行結果 1(無引號):

  • 執行結果 2(有引號):

4.3-將使用者文字,轉換為實時物件(Turning User Text into Live Objects)

將使用者輸入的公式,直接執行。

4.3.1

神奇的 eval 函式,可直接將字串型別的表示式轉為對應的物件。

  • 例如:

  • 與 4.1 結合:

  • 與 4.2 結合:

4.3.2

神奇的 exec 函式,可直接將字串型別的程式碼直接執行。

  • 例如:

  • 與 4.1 結合:

  • 與 4.2 結合:

4.3.3

待續