类型错误:'int'对象不可下标访问
我正在尝试创建一个简单的程序,根据数字命理学告诉你你的幸运数字。但是我一直遇到这个错误:
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