收集輸入
到目前為止,您已了解 Python 程式設計語言的各種建構。 您也撰寫了幾個程式。 不過,程式會處理資料,而該資料來自某處。 在本單元中,您將進一步了解如何從命令列和使用者輸入收集輸入。
命令列輸入
當您使用 python3
啟動程式時,您會為其提供要啟動的檔案名。 您也可以提供一組引數:程式在執行時可存取的資料。 看起來可能像這樣:
python3 backup.py 2023-01-01
在上述程式碼中,字串「2023-01-01」可用來作為程式 backup.py 從該日期開始備份的指示。 您可以使用命令列引數獲得彈性。 程式的運作方式可能會根據其外部輸入而有所不同。
命令列引數
這些命令如何在專案的編碼端擷取? 藉由使用 sys
模組,您可以擷取命令列引數,並在程式中使用這些引數。 查看下列程式碼:
import sys
print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg
sys.argv
是包含許多項目的陣列或資料結構。 第一個位置,在陣列中表示為 0
,其中包含程式名稱。 第二個位置 1
包含您的第一個引數。 假設程式 backup.py 包含範例程式碼,且您如下所示予以執行:
python3 backup.py 2023-01-01
程式會產生下列結果:
['backup.py', '2023-01-01']
backup.py
2023-01-01
使用者輸入
另一種將資料傳遞至程式的方式是讓使用者輸入資料。 您可以撰寫程式碼,讓程式告訴使用者輸入資訊。 您會將輸入的資料儲存在程式中,然後加以處理。
若要從使用者擷取資訊,您將使用 input()
函式。 以下是範例:
print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)
假設程式 input.py 包含範例程式碼,且您如下所示予以執行:
python3 input.py
執行程式會邀請您輸入名稱,例如:
Welcome to the greeter program
Enter your name:
輸入值並按 Enter 之後,就會傳回問候語:
Welcome to the greeter program
Enter your name: Picard
Greetings Picard
使用數字
input()
函式會將結果儲存為字串,因此下列程式碼可能不會執行您想要的結果:
print("calculator program")
first_number = input("first number: ")
second_number = input("second number: ")
print(first_number + second_number)
執行此程式會邀請您輸入第一個數字,假設為 3
:
calculator program
first number: 3
按 Enter 之後,您可以輸入第二個數字,假設為 4
:
calculator program
first number: 3
second number: 4
按 Enter 可提供下列結果:
calculator program
first number: 3
second number: 4
34
您可能希望讓此程式回覆您 7
而不是 34
。 什麼地方出錯了?
答案是,first_number
和 second_number
是字串。 若要讓計算正常運作,您必須使用 int()
函式將這些字串變更為數字。 只需修改程式的最後一行為使用 int()
,您便可解決問題:
print(int(first_number) + int(second_number))
以相同的值重新執行程式現在會以回應傳回 7
:
calculator program
first number: 3
second number: 4
7