TypeError:'int'对象不可订阅

时间:2012-01-29 16:52:08

标签: python python-2.7

我正在尝试创建一个简单的程序,根据命理学告诉你你的幸运数字。我一直在收到这个错误:

File "number.py", line 12, in <module>
    sumln = (int(sumall[0])+int(sumall[1]))
TypeError: 'int' object is not subscriptable

我的脚本是:

birthday = raw_input("When is your birthday(mm/dd/yyyy)? ")
summ = (int(birthday[0])+int(birthday[1]))
sumd = (int(birthday[3])+int(birthday[4]))
sumy= (int(birthday[6])+int(birthday[7])+int(birthday[8])+int(birthday[9]))
sumall = summ + sumd + sumy
print "The sum of your numbers is", sumall
sumln = (int(sumall[0])+int(sumall[1]))
print "Your lucky number is", sumln`   

6 个答案:

答案 0 :(得分:11)

错误正是它所说的那样;当sumall[0]是一个int并且没有任何意义时,你试图取sumall。您认为sumall应该是什么?

答案 1 :(得分:4)

如果你想对数字的数字求和,一种方法是使用sum() +生成器表达式:

sum(int(i) for i in str(155))

我使用sum()修改了一些你的代码,也许你想看看它:

birthday = raw_input("When is your birthday(mm/dd/yyyy)? ")
summ = sum(int(i) for i in birthday[0:2])
sumd = sum(int(i) for i in birthday[3:5])
sumy = sum(int(i) for i in birthday[6:10])
sumall = summ + sumd + sumy
print "The sum of your numbers is", sumall
sumln = sum(int(c) for c in str(sumall)))
print "Your lucky number is", sumln

答案 2 :(得分:3)

sumall = summ + sumd + sumy

您的sumall是一个整数。如果你想要它的单个字符,首先将它转换为字符串。

答案 3 :(得分:3)

为了清楚起见,到目前为止所有的答案都是正确的,但背后的原因并没有得到很好的解释。

sumall变量还不是字符串。括号不会转换为字符串(例如summ = (int(birthday[0])+int(birthday[1]))仍会返回一个整数。看起来你很可能打算键入str((int(sumall[0])+int(sumall[1]))),但忘记了。str()函数修复所有内容的原因是因为它将与其兼容的任何内容转换为字符串。

答案 4 :(得分:1)

你不能做那样的事情:(int(sumall[0])+int(sumall[1]))

那是因为sumallint而不是列表或字典。

所以,summ + sumd将是你的幸运数字

答案 5 :(得分:1)

请改为尝试:

sumall = summ + sumd + sumy
print "The sum of your numbers is", sumall
sumall = str(sumall) # add this line
sumln = (int(sumall[0])+int(sumall[1]))
print "Your lucky number is", sumln

sumall是一个数字,您无法使用下标符号(sumall[0]sumall[1])访问其数字。要使其工作,您需要将其转换回字符串。