2016-04-22 271 views
3

當我進入如何將用戶輸入轉換爲字符串在Python 2.7

username = str(input("Username:"))

password = str(input("Password:"))

後運行程序,我填我的名字輸入並回車

username = sarang

我得到錯誤

NameError: name 'sarang' is not defined

我已經試過

username = '"{}"'.format(input("Username:"))

password = '"{}"'.format(input("Password:"))

,但我最終得到了同樣的錯誤。

如何將輸入轉換爲字符串並修復錯誤?

+0

可能重複的[Python輸入()錯誤 - NameError:名稱'...'未定義](http://stackoverflow.com/questions/21122540/python-input-error-nameerror-name-is-未定義) – vaultah

回答

6

使用Python 2.x中的raw_input()和Python 3.x中的input()來獲取字符串。

您有兩種選擇:通過Python 3.x運行代碼或在代碼中將input()更改爲raw_input()

Python 2.x input()將用戶輸入評估爲代碼,而不是數據。它會在您現有的代碼中尋找一個名爲sarang的變量,但無法找到它;從而引發NameError

附註:您可以將此添加到您的代碼中,並改爲撥打input_func()。它會自動選擇合適的輸入法使你的代碼將工作在Python 2.x和3.x相同:

input_func = None 
try: 
    input_func = raw_input 
except NameError: 
    input_func = input 

# test it 

username = input_func("Username:") 
print(username) 

更多細節退房this question

+0

非常感謝jDo –

+0

由於您的幫助,問題得到解決 –

+0

@ sarang.g很好,歡迎您! – jDo

0

您必須明確使用raw_input(提示符),而不是僅使用輸入(提示符)。 正如您目前使用的Python 2.x支持這種類型的格式來接收用戶的輸入。

0

在Python 2中,raw_input()返回一個字符串,並且input()嘗試將輸入作爲Python表達式運行。

由於得到一個字符串幾乎總是你想要的,所以Python 3用input()這樣做。

相關問題