类型错误:'int'对象不可下标访问

60 投票
8 回答
339482 浏览
提问于 2025-04-17 11:54

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

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`   

8 个回答

8

为了让大家更明白,之前的回答都是对的,但解释得不够清楚。

首先,sumall 这个变量现在还不是字符串。用括号包起来的内容不会自动变成字符串(比如 summ = (int(birthday[0])+int(birthday[1])) 这个表达式的结果还是一个整数)。看起来你可能是想写 str((int(sumall[0])+int(sumall[1]))),但忘记加上了。str() 这个函数能解决问题的原因是,它可以把里面的内容转换成字符串。

30

这个错误就是字面意思;你在尝试取 sumall[0] 的值,但 sumall 是一个整数,这样做是没有意义的。你觉得 sumall 应该是什么呢?

12

如果你想把一个数字的各位数字加起来,有一种方法是用 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

撰写回答