You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于伪代码编写霸凌检测作业代码,遇'int' object is not subscriptable错误求助

搞定'int' object is not subscriptable错误,顺便捋顺霸凌者判定逻辑

兄弟,我太懂这种对着错误提示抓瞎的感觉了!咱先把这个错误的本质说透,再结合你的霸凌者判定任务,揪出你代码里的坑。

先搞懂错误到底啥意思

简单说:你试图用下标(比如x[0]、arr[i][j]这种)去访问一个整数变量,但整数根本没有下标这玩意儿啊! 比如你本来应该操作的是列表/二维数组,结果某个地方不小心把这个变量变成了单个整数,然后你还硬要给它加下标,Python自然就给你报错了。

结合你的任务,大概率是这几个地方出问题

你的任务是判断霸凌者:霸凌者k要满足两个条件——①所有其他学生都惧怕k;②k不惧怕任何其他学生。通常咱们会用二维数组(比如fear[i][j]表示学生i是否惧怕学生j)来存惧怕关系,出错点基本都在这个数组的处理上:

1. 数组初始化错成了整数

比如你本来想初始化一个n×n的二维数组,结果写成了这样:

n = 5
fear = 0  # 这里应该是[[False]*n for _ in range(n)],结果写成了整数0
# 后面访问fear[i][j]的时候,直接就报错了

正确的初始化应该是创建一个二维列表,用来存每个学生间的惧怕关系:

n = 5
# 初始化n×n的二维数组,默认所有学生之间都没有惧怕关系
fear = [[False for _ in range(n)] for _ in range(n)]

2. 变量名冲突,把数组变量改成了整数

比如你用n表示学生数,结果后面又把某个计算得到的整数赋值给了fear(本来是数组的变量名):

n = 5
fear = [[False]*n for _ in range(n)]
# 中间某个地方不小心赋值:
fear = n  # 把数组改成了整数5
# 后面再用fear[i][j],肯定报错

这种情况最隐蔽,建议你检查所有对fear(或者你用来存惧怕关系的变量)的赋值操作,别让它变成整数。

3. 误把判断结果(布尔值/整数)当成数组用

比如在判定霸凌者条件时,你把all()返回的布尔值当成了数组,还去访问下标:

n = 3
fear = [[False, True, True], [False, False, True], [False, False, False]]
for k in range(n):
    # others_fear_k是布尔值(True/False),不是数组
    others_fear_k = all(fear[i][k] for i in range(n) if i != k)
    if others_fear_k[0]:  # 这里就会报错!布尔值不能用下标访问
        pass

正确的做法是直接用布尔值判断:

if others_fear_k:
    # 继续判断第二个条件...

给你一个霸凌者判定的正确代码片段参考

你可以对照这个片段,排查自己的代码:

n = int(input("输入学生数:"))
# 初始化惧怕关系数组
fear = [[False]*n for _ in range(n)]

# 假设这里你通过输入或者其他方式填充惧怕关系,比如:
# 示例:学生0惧怕1,学生0惧怕2,学生1惧怕2,学生2谁都不怕
fear[0][1] = True
fear[0][2] = True
fear[1][2] = True

has_bully = False
for k in range(n):
    # 条件1:所有其他学生都惧怕k
    others_fear_k = all(fear[i][k] for i in range(n) if i != k)
    # 条件2:k不惧怕任何其他学生
    k_fears_none = all(not fear[k][j] for j in range(n) if j != k)
    
    if others_fear_k and k_fears_none:
        has_bully = True
        print(f"找到霸凌者:学生{k}")
        break

if not has_bully:
    print("班级里没有霸凌者")

快速排查技巧

  1. 找到报错的那一行,把你用下标访问的变量打印出来:print(type(你的变量名), 你的变量名),看看是不是真的变成整数了。
  2. 检查数组初始化、赋值的所有地方,确保存惧怕关系的变量始终是列表/数组类型。

内容的提问来源于stack exchange,提问作者user9377534

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:50:59