我试图写一个函数返回任意数量的字串低于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