0

对于句子理解的实验,我准备了一组文件,每个文件都包含一个列表行,如下所示:

1 14 2“实验句”

“1 14 2”是参考编号。出于实验的目的,我必须随机化每个文件中的句子,约束条件是没有两个相邻的句子可以有相同的第三个数字。那是

1 14 2

1 14 3

是一个可接受的序列,但是

1 14 2

1 13 2

不是。

我编写了一个函数line_randomizer(filename),将所有行随机化filename并放入buffer = [],并定义了一个limit变量,其中包含行数buffer。然后,我编写了以下函数:

def checker():
    counter = 0
    while counter < limit:
       next = counter + 1
       val1 = buffer[counter].split(" ")[2]
       val2 = buffer[next].split(" ")[2]
       if int(val1) == int(val2):
          print("bad sequence; starting new randomization")
          line_randomizer(filename)
       else:
          print("continue checking")
       counter = counter + 1

当我在 python 解释器(从 shell 调用)上运行它时,一切正常,但是当我在 .py 脚本上编写完全相同的代码时,我得到了这个错误。

val1 = buffer[counter].split(" ")[2]
TypeError: 'type' object is unsubscriptable

为什么这只发生在脚本上?

提前致谢。

4

1 回答 1

0

在命令行会话中,您必须buffer设置一些东西。

但是,在您的脚本中,没有人设置buffer,因此它使用作为类型对象的内置名称,与大多数类型一样,它是不可订阅的。

于 2012-11-29T15:22:37.003 回答