TypeError:“int”对象是unsubscribtab

2024-05-14 08:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,我得到这个错误:

TypeError: 'int' object is unsubscriptable

这发生在:

sectorcalc[i][2]= ((today[2]/yesterday[2])-1)

我在任何地方都找不到python unsubscribable的好定义。

for quote in sector[singlestock]:
        i+=1
        if i < len(sector):
            if i==0:
                sectorcalc[i][0]= quote[0]
                sectorcalc[i][2]= 0
                sectorcalc[i][3]= 0
                sectorcalc[i][4]= 0
                sectorcalc[i][5]= 0
                sectorcalc[i][6]= 0
                sectorcalc[i][7]= 0
            else:                    
                yesterday = sector[singlestock-1][i]

                print yesterday                                

                today = quote

                print type(today[2])
                sectorcalc[i][2]= ((today[2]/yesterday[2])-1)
                sectorcalc[i][3]= (today[3]/yesterday[3])-1
                sectorcalc[i][4]= (today[4]/yesterday[4])-1
                sectorcalc[i][5]= (today[5]/yesterday[5])-1 
                sectorcalc[i][6]= (today[6]/yesterday[6])-1
                sectorcalc[i][7]= (today[7]/yesterday[7])-1

这个错误是什么意思?


Tags: todayifobjectis地方错误quoteint
3条回答

这让人困惑:

today = quote 

是不是today = datetime.date.today()?为什么一个日期会突然引用一句名言?变量名应该是quoteForToday还是更具表现力的名称?同样适用于yesterday。像你那样分两次约会对我来说毫无意义。

既然这是一个quote,那么todayyesterday会指不同日期的价格或费率吗?名字很重要-仔细选择。你可能是从现在起必须维持这六个月的人,你也不会记得他们的意思。

不是说你写的代码是有效的,但是我不明白你为什么不使用循环。

for j in range(2,7):
    sectorcalc[i][j] = (today[j]/yesteday[j])-1

而不是

        sectorcalc[i][2]= ((today[2]/yesterday[2])-1)
        sectorcalc[i][3]= (today[3]/yesterday[3])-1
        sectorcalc[i][4]= (today[4]/yesterday[4])-1
        sectorcalc[i][5]= (today[5]/yesterday[5])-1 
        sectorcalc[i][6]= (today[6]/yesterday[6])-1
        sectorcalc[i][7]= (today[7]/yesterday[7])-1 

如何重现该错误:

myint = 57
print myint[0]  

编写编译器的人说,您不能用以下方式执行此操作:

TypeError: 'int' object is unsubscriptable

如果要下标,请使用如下数组:

myint = [ 57, 25 ]
print myint[0]

打印内容:

57

解决方案:

将int提升为列表或其他索引类型,或者停止订阅int

今天[2]中的“[2]称为下标。

This usage is possible only if "today" is a sequence type. Native sequence types - List, string, tuple etc

因为您得到一个错误-“int”对象是不可订阅的。这意味着“today”不是一个序列,而是一个int类型的对象。

当您需要序列时,您需要查找/调试“today”或“neday”是int类型对象的原因。

[编辑:明确]

Error can be in

  1. 宗派
  2. 今天(已经证明是一个列表)
  3. 昨天

相关问题 更多 >

    热门问题