Re: Pythonのファイルのバイト単位でのランダムアクセスについて
Posted: 2017年8月01日(火) 21:08
複数の指摘を書くと1か所にしか反応されなさそうで不安ではありますが、
keito94さんの決心を信じて指摘します。
そうであればここは特に触れずに行きますね。
http://dixq.net/forum/viewtopic.php?f=3&t=19442#p147101
本題とはあまり関係ないものの、ここも直してみたという説明でしょうか?
違和感があることに気づき…どうしたのかはわかりませんが何かしら奮闘されたと理解しておきます。
ようやく本題に戻ってきて安心しました。
・「二列目の配列が生成されず…」ということは一列目はきちんと配列が生成されているということでしょうか?
→実際に一列目だけ読み込まれたことはどうやって確認したのでしょうか?
・上記コードのif文の条件式 i < 0 and j ==0ですがこれは何を期待しての条件式でしょうか?
→どういう場合にTrueになるつもりで書いていますかを教えてください
・例えばマップチップデータ側が横幅5マス、縦幅2マスだったとして以下のようなデータを読み取った場合、
生成されることを期待するmap_dataは以下で正しいでしょうか?
マップデータ(5*2マス):0123456789
期待するmap_data:[ [0,1,2,3,4] , [5,6,7,8,9] ]
keito94さんの決心を信じて指摘します。
えーと、load関数は廃止されたと以下のレスで書いてありましたが、廃止前にやったことの説明でしょうか?
そうであればここは特に触れずに行きますね。
http://dixq.net/forum/viewtopic.php?f=3&t=19442#p147101
get_layerについては今初めて本文中に登場した気がしますが、keito94 さんが書きました: あと、get_layerに違和感があることに気づき、
本題とはあまり関係ないものの、ここも直してみたという説明でしょうか?
違和感があることに気づき…どうしたのかはわかりませんが何かしら奮闘されたと理解しておきます。
というかこちらが本題ですよね?keito94 さんが書きました: そして、頭を悩ませた以下のエラーの原因もわかりました。マップデータを表す配列が一列しかない上に、存在しない二列目に書き込もうとして以上のエラーが発生している模様です。File "C:/Users/keito940/PycharmProjects/quoyletest/test.py", line 53, in <module> main() File "C:/Users/keito940/PycharmProjects/quoyletest/test.py", line 41, in main map_data = map.data_load() File "C:/Users/keito940/PycharmProjects/quoyletest\quoyle\map.py", line 80, in data_load map_data[i].append(self.get_pos(1, j, i)) IndexError: list index out of range
解決方法は、新たに二列目の配列を作る必要がある模様です。
ようやく本題に戻ってきて安心しました。
その質問に答える前に原因と対応方針が正しいかを確認させてもらうため、いくつか質問しますね。keito94 さんが書きました:ですが、二列目の配列が生成されず、無効な配列を参照しているというエラーが出てしまいます。def data_load(self): map_data = [[]] # 開始時の位置を決める。 for i in range(self.MAP_H): for j in range(self.MAP_W): if i < 0 and j == 0: map_data.append([self.get_pos(1, j, i)]) else: map_data[i].append(self.get_pos(1, j, i)) return map_data
どうやって、二列目の配列を生成されるのでしょうか?
・「二列目の配列が生成されず…」ということは一列目はきちんと配列が生成されているということでしょうか?
→実際に一列目だけ読み込まれたことはどうやって確認したのでしょうか?
・上記コードのif文の条件式 i < 0 and j ==0ですがこれは何を期待しての条件式でしょうか?
→どういう場合にTrueになるつもりで書いていますかを教えてください
・例えばマップチップデータ側が横幅5マス、縦幅2マスだったとして以下のようなデータを読み取った場合、
生成されることを期待するmap_dataは以下で正しいでしょうか?
マップデータ(5*2マス):0123456789
期待するmap_data:[ [0,1,2,3,4] , [5,6,7,8,9] ]