【问题标题】:Why am i getting a 'float' object is not subscriptable error [duplicate]为什么我得到一个“浮动”对象不可下标错误[重复]
【发布时间】:2023-03-08 17:09:01
【问题描述】:

我希望输入行数(学生)和列数(测验)来定义有多少学生参加了多少测验(确切地说是矩阵)。 因此,在我为每个学生在每个测验中输入测验分数后,预计我会计算每个学生的平均成绩(exe:student1 avg = quiz1 + quiz2 +quiz3/3 等等,学生 2 和 3 ) 并计算每个测验的平均值 (quiz1 avg = stu1+stu2+stu3/quiz 等等,对于测验 2,3,4...) 但是现在我没有设法得到它,因为它表明我有一个“浮动”对象不可下标错误。这是为什么? 这是完整的代码

R = int(input("Enter the number of rows:"))
C = int(input("Enter the number of columns:"))


matrix = []
print("Enter the entries rowwise:")
for i in range(R):
    a = []
    for j in range(C):
         a.append(int(input("Student " + str(i+1) + " Quiz " + str(j+1)+":")))
    matrix.append(a)

for i in range(R):
    T1 = 0
    for j in range(C):
        T1 += matrix[i][j]
    matrix[i] = T1/C
    print()

for i in range(R):
    print("The average mark for student", i+1, "is", matrix[i])



for j in range(C):
    T2 = 0
    for i in range(R):
        T2 += matrix[i][j]  #This is where i get float object is not subscriptable error
    matrix[j] = T2/R
    print()

for j in range(C):
    print("The average mark for quiz", j+1, "is", int(matrix[j]))


    

【问题讨论】:

  • 表示你正在尝试索引一个浮点数,例如5.8[2]
  • matrix[i] 在那个地方是一个浮动
  • 当然,你有解决方案吗?
  • 当您执行matrix[i] = T1/C 时,您希望它如何工作?提示:分配之前 matrix[i]type 是什么?后面是什么类型?当您对每一行执行此操作时,您的 matrix 会发生什么情况?
  • 这能回答你的问题吗? TypeError: 'float' object is not subscriptable

标签: python


【解决方案1】:
for i in range(R):
    T1 = 0
    for j in range(C):
        T1 += matrix[i][j]
    matrix[i] = T1/C
    print()

此过程迭代地替换每一行 (matrix[i]),这是一个列表,具有单个数字(计算的平均值)。所以在循环之后,我们现在有一个 1D 列表,而不是 2D 列表。

因此,当我们尝试以相同的方式将矩阵中的“列”相加以获得测验平均值时,我们的数据无效。

修正:使用单独的列表来存储结果平均值。或者,您可以在计算它们时print 它们,而不是将它们存储在任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2019-10-03
    相关资源
    最近更新 更多