0

文理解の実験のために、次のようなリスト行で構成される一連のファイルを用意しました。

1 14 2「実験文」

「1 14 2」は参照番号です。実験のために、隣接する 2 つの文が同じ 3 番目の数字を持つことはできないという制約の下で、各ファイルの文をランダム化する必要があります。あれは

1 14 2

1 14 3

許容されるシーケンスですが、

1 14 2

1 13 2

ではありません。

line_randomizer(filename)のすべての行をランダム化して に配置する関数を作成filenameし、 の行数で変数をbuffer = []定義しました。次に、次の関数を書きました。limitbuffer

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 インタープリターで実行すると、すべて正常に動作しますが、.py スクリプトでまったく同じコードを記述すると、このエラーが発生します。

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

これがスクリプトでのみ発生するのはなぜですか?

前もって感謝します。

4

1 に答える 1

0

bufferコマンドラインセッションでは、何かを設定している必要があります。

ただし、スクリプトでは、誰も設定bufferしないため、タイプオブジェクトである組み込み名を使用します。これは、ほとんどのタイプと同様に、サブスクリプト化できません。

于 2012-11-29T15:22:37.003 に答える