TypeError:'int'对象不可订阅

Cri*_*bel 27 python python-2.7

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

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

我的脚本是:

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`   
Run Code Online (Sandbox Code Playgroud)

Fre*_*lio 15

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


小智 6

需要明确的是,到目前为止,所有答案都是正确的,但其背后的原因并没有得到很好的解释。

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


Rik*_*ggi 5

如果要对一个数字进行求和,一种方法是使用sum()+生成器表达式:

sum(int(i) for i in str(155))
Run Code Online (Sandbox Code Playgroud)

我使用修改了一些代码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
Run Code Online (Sandbox Code Playgroud)