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

代码与此前版本一致却报错:evenly()函数触发'int'不可下标错误

解决自定义evenly()函数中的TypeError问题

我在自定义的evenly()函数里一直碰到TypeError: 'int' object is not subscriptable这个错误,把evenly()注释掉之后,equall()和gauss()函数就能正常运行了——我只是复制了这两个函数的代码框架,把里面的step()或者stepn()替换成了自己写的stepe()函数。

相关代码片段如下:

import numpy as np
import matplotlib.pyplot as plt
from numpy.random import rand,seed,randn

steps = 1
walks = 10000
walk = np.zeros(steps + 1)

def step():
    if rand() < 0.5:
        return 1.0
    return -1.0

def stepn():
    return randn() + 0.5

def stepe(...  # 这里是自定义stepe函数的未完成代码

问题分析与解决思路

首先,'int' object is not subscriptable这个错误本质很明确:你尝试对一个整数(int类型)进行下标访问操作(比如像数组/列表那样写some_int[0]),但整数本身并不支持这种操作。

结合你的场景,既然只有替换step()/stepn()为stepe()后才触发错误,问题大概率出在stepe()函数本身,或者evenly()中调用stepe()的逻辑里:

  • 检查stepe()的返回值类型:原有的step()返回的是浮点型数值(1.0/-1.0),stepn()返回的也是randn()生成的浮点值。如果你的stepe()返回了整数,或者不小心返回了一个非预期的结构,就可能导致后续代码误把它当成可下标访问的对象来处理。
  • 排查evenly()中使用stepe()的代码:比如你是不是写了类似stepe()[0]这样的代码?如果stepe()返回的是单个数值(不是数组/列表),这种写法就会直接触发错误。

具体排查步骤

  1. 补全stepe()的完整代码,确保它的返回值和step()/stepn()保持一致——返回单个数值(浮点或整数都可以,但不要返回数组/列表,除非原有逻辑就是处理这类结构)。
  2. 在evenly()函数中定位触发错误的具体行,确认哪个变量是整数却被你用了下标操作。
  3. 可以在stepe()函数末尾加一句print(type(return_value)),直接查看它的返回值类型,快速定位问题。

内容的提问来源于stack exchange,提问作者Brandon SeedlessBananas Mc-Wil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:09:32