Python -- raw_input() and input() -- ACM

LiChong0309發表於2018-06-20

Author: LiChong0309
Label: ACM 、Python

1. The problem of “A+B+C”

1.1 Topic

輸入為一行,包括了用空格分隔的三個整數 A、B、C(資料範圍均在-4040 ~ 4040 之間)。輸出為一行,為“A+B+C”的計算結果。

1.2 Sample input

22 1 3

1.3 Sample output

26

1.4 Code

lis =  raw_input().split(' ')
sum = 0
for i in lis:
    sum = sum + int(i)
print(sum)

(1)split()函式表示指定分隔符對字串進行分片。
(2)raw_input()函式會將所有的輸入看作字串看待,返回字元型別。split()函式將字串分片之後,所產生的列表還是字串型別,所以要將分片後的字串轉換為int型才能進行運算。

1.5 raw_input() and input()

1.5.1 raw_input()

raw_input()函式將任何輸入作為字串型別看待,返回字串型別。如下圖所示,此時輸入的不能看作是三個數字,而是一個包含數字和空格的字串12_34_5

這裡寫圖片描述

再檢視切片之後lis的資料型別,此時的lis為list型別

這裡寫圖片描述

再檢視lis中每個元素的型別,此時為str型別。

這裡寫圖片描述

1.5.2 input()

我是將input()函式看作是raw_input()函式的升級版的,input()函式沒有將所有的輸入看作是字串型別,而是包含了豐富的資料型別,比如int,float,string等等。當輸入的是字串型別的時候,要加上雙引號。所以input()可以接受合法的python表示式,比如input(1 + 3),會返回一個int型別的4。
當輸入字串的時候沒有帶雙引號的時候,會出現一個SyntaxError(語法錯誤)的錯誤。

這裡寫圖片描述

這裡寫圖片描述

2. Python2 、Python 3中的raw_input()和input()

對於python的開發者來說,他們的設計思想就是一個問題只用一種方法解決就好了,所以在python3中,python的開發者索性就把raw_input()函式捨去了。在python3中使用raw_input的話,會有一個錯誤:
name 'raw_input' is not defined
解決方法:raw_input該用為input即可。

相關文章