1

次のコードは、マップ上の各正方形から指定された場所に到達するために必要な最小移動数を示すマップを作成しようとします。全体としての機能は問題とはほとんど関係がありませんが、私は自分の問題を文脈の中で提供すべきだと思いました。コレクションからdequeもインポートしました。奇妙な部分は7行目にあります。TypeError:'int'オブジェクトが反復可能ではありません。ただし、「distance_from_loc、f_loc = squares_to_check.popleft()」というステートメントは、知識の及ぶ限り何でも反復しようとしてはなりません。どんな助けでも大歓迎です。

    def complex_distance(self, loc):
        row, col = loc
        squares_to_check = deque((0, loc))
        self.complex_distance_map = zeros((self.height, self.width), int) + 999
        self.complex_distance_map[row][col] = 0
        while squares_to_check:
            distance_from_loc, f_loc = squares_to_check.popleft()
            distance_from_loc += 1
            for d in AIM:
                n_loc = self.destination(f_loc, d)
                n_row, n_col = n_loc
                if distance_from_loc < self.complex_distance_map[n_row][n_col] and not self.map[n_row][n_col] == -4:
                    squares_to_check.append((distance_from_loc, n_loc))
                    self.complex_distance_map[n_row][n_col] = distance_from_loc
4

1 に答える 1

7

反復しようとします:

>>> a, b = 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

この線

squares_to_check = deque((0, loc))

単一の要素ではなく、2つの要素0とで両端キューを初期化します。使用するloc(0, loc)

squares_to_check = deque([(0, loc)])

望ましい結果を得るために。

于 2011-04-20T10:51:48.603 に答える