2017-09-19 33 views
2

我對這2個短代碼有兩個問題。python input()EOF錯誤和類型爲int的返回值?

1.

name = input('what: ') 
print(name) 

輸出

what: 641u 
Traceback (most recent call last): 
    File "/Users/vuthynun/PycharmProjects/untitled1/h/__init__.py", line 1, in <module> 
    name = input('what: ') 
    File "<string>", line 1 
    641u 
    ^
SyntaxError: unexpected EOF while parsing 

Process finished with exit code 1 

它爲什麼給我這個錯誤?

2.

name = input('what: ') 

print(type(name)) 

輸出:

what: 23 
<type 'int'> 

Process finished with exit code 0 

爲什麼名字int類型?我認爲所有的輸入都轉換爲字符串。

請請幫我理解這一點。這太痛苦了。

+2

更改'輸入()''到的raw_input()'。它看起來像你在python 2中,無論你給'input'什麼都調用'eval'。 – roganjosh

+1

[官方python2文檔](https://docs.python.org/2/library/functions.html#input ):「考慮將raw_input()函數用於用戶的一般輸入。」 – zypro

回答

3

使用raw_input而不是input python 2. 這就是你如何得到字符串。否則,python會評估你給它的東西,這會給你帶來意想不到的行爲。

-1

這是Python 2.7中的行爲。無論您通過input接受什麼,都將轉換爲int型號,無論您通過raw_input接受,都將轉換爲str型號。

對於Python 3行爲,檢查:What's the difference between raw_input() and input() in python3.x?

+1

這似乎是誤導 - 「輸入」不會轉換任何內容,它會評估您提供的任何內容。例如嘗試'2 + 3'。 – Shadow

+0

ya,編輯那個...... – Gauranga

+0

我想你還是誤解了 - 嘗試在'input'調用中輸入''test'''。你會注意到它是作爲一個字符串出現的,而不是一個整數。 – Shadow

相關問題