2016-01-26 201 views
1

我對編程非常陌生。我遇到了下面的問題,我正在試圖用他旁邊的號碼列出此人的姓名。所以在這裏,我試圖加入「史蒂夫」到「100」。我希望結果是steve100。訓練視頻說,你不能連接字符串和int,所以你必須鍵入str(等級[1]),讓100連接成steve。但是,它不適用於我,請參閱下文。STR功能不起作用

>>> grades = ["steve", 100, "john", 50] 
>>> grades[0] + grades[1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: cannot concatenate 'str' and 'int' objects 
>>> grades[0] + str(grades[1]) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'str' object is not callable 
>>> 
+2

因爲它的立場,'等級[0] + STR(等級[1])'應該工作。可能發生的事情是,你已經在某處指定了某個名字「str」。嘗試'del str',然後再次運行該命令。 – michaelrccurtis

回答

5

您需要爲int解析字符串,而你與str功能做正確:

grades[0]+str(grades[1]) 

你得到很可能是因爲您以前定義的str變量錯誤str object is not callable

您可以運行del str然後再試一次,它會工作=)

+0

好的,我會測試它。這讓我想知道,爲什麼Python允許我將一個函數的名稱分配給另一個變量?讓我這麼做似乎很奇怪(假設str是一個函數)。 –

+0

Python確實允許使用與某些內置函數完全相同的名稱命名(重新定義)變量或函數,從而防止原始函數可用。 –

+1

至於爲什麼允許這樣做,Python是一種開放的語言,並不會在很多方面限制你,包括你可以使用的名稱。這確實會導致一些初學者的錯誤,但總的來說,如果你知道你在做什麼,那麼擁有這種自由是很好的。當然,期望程序員有責任並理解他在寫什麼=) –