在 Python 中使用 input / raw_input 函數獲取用戶輸入的資訊

Python

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

raw_input 函數

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

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

1
2
3
4
5
6
7
8
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的數值,再將數值顯示在標準輸出上。

1
2
3
4
5
6
7
8
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 的返回值。如果輸入的內容不是字串、數值、變數或者布林值,系統則提示錯誤。

Made in Hong Kong