【问题标题】:Why am I unable to increment a cell in my array?为什么我无法增加数组中的单元格?
【发布时间】:2017-08-18 02:30:10
【问题描述】:

我正在进行的一个项目要求我确定成绩的范围,增加数组中的特定单元格,然后使用该数组以纯文本形式向用户打印直方图。目前,每当我的代码到达必须增加数组中单元格值的点时,我都会收到错误消息:

Traceback (most recent call last):
    addGrade(gradeInput)
  line 13, in addGrade
    arrayOfGrades[index]=arrayOfGrades[index]+1
TypeError: 'set' object does not support indexing

我很确定它也会出现在我尝试使用数组的其他地方。这是相关代码。

gradeInput=0
arrayOfGrades={0,0,0,0,0,0,0,0,0,0,0}
i=10
def addGrade(Grade):
    global arrayOfGrades
    index=int(Grade/10)
    arrayOfGrades[index]=arrayOfGrades[index]+1

在那里,我应该看到单元格增量,但我得到了错误。

while gradeInput!=SENTINEL:
    gradeInput=float(input('Please enter your grade, or enter -1 to stop.'))
    while gradeInput >100 or gradeInput <SENTINEL or (gradeInput>SENTINEL and gradeInput<0):
        gradeInput=float(input('Invalid grade. Please enter a number between 0-100 '
                               'for your grade, or enter -1 to quit.'))

    if gradeInput==SENTINEL:
        print("All grades entered.")
    else:
        addGrade(gradeInput)

我希望它也发生在该代码段的底部。

for x in range(10):
     printGradeCount(i,arrayOfGrades[i])
     i=i-1

这里也是。

【问题讨论】:

  • 试试这个:打印类型(arrayOfGrades),arrayOfGrades
  • 在旁注中,您的global arrayOfGrades 声明是不必要的(@simba 的解决方案应该可以解决您的实际问题)

标签: python arrays object indexing typeerror


【解决方案1】:
arrayOfGrades={0,0,0,0,0,0,0,0,0,0,0}

{...} 创建了一个无法索引的集合数据结构。您似乎想要的是一个使用 [...] 语法的列表。

尝试将其更改为:

arrayOfGrades=[0,0,0,0,0,0,0,0,0,0,0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多