2017-02-05 7 views
2

私はPythonにはかなり新しく、Lo Shuマジックスクエアを検証するための入力としてファイルに行を入れるプログラムのコーディングには苦労しています。私がする必要があるのは、一度に1行ずつ、そして各行でのように1行読み込み、それを [[1,2,3] 、[4,5,6]、[7,8,9]] 最初の3つの数字はマジックスクエアの最初の行の値に対応し、次の3つの値は2番目の行に対応し、最後の3つの値最後の行に対応します。ファイル内の行を2次元配列にする方法

は、これまでのところ私は

def main(): 
    data = [] 
    for line in open('Magic Square Input.txt'): 
    items = line.split(" ") 
    temp = 0 
    setOfThree = [] 
    for item in items: 

     if(len(item) > 1): 
      item = item[0:1] 

     if(item != " "): 
      setOfThree.append(item) 
      temp += 1 


     if(temp == 3): 
      test = [] 
      test = setOfThree[:] 
      test = [int(x) for x in test] 
      data.append(test) 

を試してみたが、それは私だけ

4 3 8 9 5 1 2 7 6 
8 3 4 1 5 9 6 7 2 
6 1 8 7 5 3 2 9 4 
6 9 8 7 5 3 2 1 4 
6 1 8 7 5 3 2 1 4 
6 1 3 2 9 4 8 7 5 
5 5 5 5 5 5 5 5 5 

は、だから私は上のイムのように感じている

[[4, 3, 8]] 
[[4, 3, 8], [8, 3, 4]] 
[[4, 3, 8], [8, 3, 4], [6, 1, 8]] 
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8]] 
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8]] 
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8], [6, 1, 3]] 
[[4, 3, 8], [8, 3, 4], [6, 1, 8], [6, 9, 8], [6, 1, 8], [6, 1, 3], [5, 5, 5]] 

テキストファイルの内容を提供します右のトラックが、データに各行の最初の3つの項目を追加するだけで、理由はわかりません。

+0

あなたは何を試みましたか、正確に何を苦労していますか?これまでのところコードを見ることができるように質問を編集し、何がうまくいかないかを詳述すれば、良い答えを得るチャンスが大幅に増えます。 – miradulo

+0

プログラムはこの2次元配列を取って有効なマジックスクエアであるかどうかを確認し、マジックスクエアであれば有効であるか無効であるかを確認する必要があります。 – TheBudderBomb

+0

それは私の質問に対処できません。あなたが試したことと間違っていることを尋ねました。スタックオーバーフローはコード作成サービスではなく、プログラム全体があなたのために処理されることはありません。 – miradulo

答えて

0

行は常に9要素そう

line = "1 2 3 4 5 6 7 8 9" 

items = line.split() 

result = [items[0:3], items[3:6], items[6:9]] 

print(result) 

EDIT持って:あなたはより普遍的な必要がある場合は、すべての行

lines = """4 3 8 9 5 1 2 7 6 
8 3 4 1 5 9 6 7 2 
6 1 8 7 5 3 2 9 4 
6 9 8 7 5 3 2 1 4 
6 1 8 7 5 3 2 1 4 
6 1 3 2 9 4 8 7 5 
5 5 5 5 5 5 5 5 5""" 

data = [] 

for line in lines.split('\n'): 

    items = line.split() 

    data.append([items[0:3], items[3:6], items[6:9]]) 

print(data) 

同じように - 異なるN

のために
N = 3 

data = [] 

for line in lines.split('\n'): 

    items = line.split() 
    array = [] 

    while items: 
     array.append(items[:N]) 
     items = items[N:] 

    data.append(array) 

print(data) 
関連する問題