我試圖寫一個函數返回任意數量的字串低於1000「Function對象是unsubscriptable」基本整數字符串映射功能
每次我在交互提示是我的代碼運行似乎工作沒有問題,但是當我嘗試導入wordify並運行一個高於20的測試號時,它會失敗,因爲「TypeError:」函數'object is unsubscriptable「。
根據錯誤消息,似乎問題是它試圖索引numString(例如試圖從n = 24的測試用例中提取數字4)並且編譯器認爲numString是一個函數而不是一個字符串。因爲函數的第一行是我將numString定義爲變量n的一個字符串,我不確定這是爲什麼。
任何幫助解決這個錯誤,甚至只是幫助解釋我爲什麼看到它,都會很棒。
def wordify(n):
# Convert n to a string to parse out ones, tens and hundreds later.
numString = str(n)
# N less than 20 is hard-coded.
if n < 21:
return numToWordMap(n)
# N between 21 and 99 parses ones and tens then concatenates.
elif n < 100:
onesNum = numString[-1]
ones = numToWordMap(int(onesNum))
tensNum = numString[-2]
tens = numToWordMap(int(tensNum)*10)
return tens+ones
else:
# TODO
pass
def numToWordMap(num):
mapping = {
0:"",
1:"one",
2:"two",
3:"three",
4:"four",
5:"five",
6:"six",
7:"seven",
8:"eight",
9:"nine",
10:"ten",
11:"eleven",
12:"twelve",
13:"thirteen",
14:"fourteen",
15:"fifteen",
16:"sixteen",
17:"seventeen",
18:"eighteen",
19:"nineteen",
20:"twenty",
30:"thirty",
40:"fourty",
50:"fifty",
60:"sixty",
70:"seventy",
80:"eighty",
90:"ninety",
100:"onehundred",
200:"twohundred",
300:"threehundred",
400:"fourhundred",
500:"fivehundred",
600:"sixhundred",
700:"sevenhundred",
800:"eighthundred",
900:"ninehundred",
}
return mapping[num]
if __name__ == '__main__':
pass
我無法重現您的錯誤。請說明如何做到這一點和/或您收到的完整追溯。 – wRAR 2010-06-13 19:30:20
「TypeError:'函數'對象是不可取代的」。哪裏?什麼行號。請用實際行號提供實際的錯誤信息,並確保您的代碼具有相同的行號,以便我們可以看到實際發生錯誤的行。 – 2010-06-13 19:31:40
實際上,現在它不會發生在我身上,我認爲它與我重新加載模塊的方式有關。一旦我關閉了交互式提示並在PyDev中重新打開它,一切似乎都過去了。 – IanWhalen 2010-06-13 19:35:34