python - Python Logo

Python提供了兩種簡單的內建函數以獲取用戶輸入的資訊,分別是raw_input()和input()。兩個函數都適合在終端運行的程式上使用。

raw_input函數

raw_input([prompt])函數可接受一個字串作為參數,該字串會在作為問題向用家查詢,並且在stdout上顯示。

我們使用下面的代碼作測試。當raw_input函數被叫喚時,它會將第一個參數顯示在標準輸出(Standard Output)上,然後等待用戶輸入一行的資訊,將輸入的內容設定為x的數值,再將數值顯示在標準輸出上。

x = 0

def rawInputTest():
    x = raw_input(">>> Input: ")
    print x

while (True):
    rawInputTest()

我們看看以下的測試結果︰

>>> Input: 2013
2013
>>> Input: foolegg.com
foolegg.com
>>> Input: yo python
yo python
>>> Input: 12 + 8
12 + 8
>>> Input: 'abc' + 'def'
'abc' + 'def'
>>> Input: 12 * 3 - 9 * 4
12 * 3 - 9 * 4
>>> Input: 1 + 'a'
1 + 'a'

我們可以看見,所有輸入的內容也會當作字串處理。如果需要作數學運算,需要使用其他函數將字串轉為數字。

input函數

input([prompt])函數可接受一個字串作為參數,該字串會在作為問題向用家查詢,並且在stdout上顯示。

我們使用下面的代碼作測試。當input函數被叫喚時,它會將第一個參數顯示在標準輸出(Standard Output)上,然後等待用戶輸入一行的資訊,將輸入的內容設定為x的數值,再將數值顯示在標準輸出上。

x = 0

def inputTest():
    x = input(">>> Input: ")
    print x

while (True):
    inputTest()

我們看看以下的測試結果︰

>>> Input: 2013
2013
>>> Input: foolegg.com
Traceback (most recent call last):
  File "", line 1, in 
  File "input.py", line 8, in 
    rawInputTest()
  File "input.py", line 4, in rawInputTest
    x = input(">>> Input: ")
  File "", line 1, in 
NameError: name 'foolegg' is not defined
>>> Input: yo python
Traceback (most recent call last):
  File "", line 1, in 
  File "input.py", line 8, in 
    rawInputTest()
  File "input.py", line 4, in rawInputTest
    x = input(">>> Input: ")
  File "", line 1
    yo python
            ^
SyntaxError: unexpected EOF while parsing
>>> Input: 'foolegg.com'
foolegg.com
>>> Input: True
True
>>> Input: 12 + 8
20
>>> Input: 'abc' + 'def'
abcdef
>>> Input: 12 * 3 - 9 * 4
0
>>> Input: 1 + 'a'
Traceback (most recent call last):
  File "", line 1, in 
  File "input.py", line 8, in 
    rawInputTest()
  File "input.py", line 4, in rawInputTest
    x = input(">>> Input: ")
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

由以上的結果,我們可以看得出input函數並不會把輸入的內容當作字串。如果輸入的是一條數學算式,算式計算出來的結果會作為input的返回值。如果輸入的內容不是字串、數值、變數或者布林值,系統則提示錯誤。