2
我對python相當陌生,我一直在努力編寫一個程序,該程序將文件中的一行作爲輸入來驗證Lo Shu Magic Square。我需要做的是每次在文件中讀取一行,每行例如,並將其轉換爲一個二維數組,如 [[1,2,3] ,[4,5,6],[7,8,9]] 前三個數字對應於幻方的第一行中的值,後三個數值對應第二行,最後三個數值對應於最後一行。如何將文件中的一行轉換爲二維數組
到目前爲止,我已經試過
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]]
[[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]]
文本文件的內容
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
所以我覺得像IM上正確的軌道,但它唯一的附加每條線的前三項數據,我不知道爲什麼
你有什麼企圖,你究竟在與什麼掙扎?編輯你的問題,以便我們可以看到你的代碼到目前爲止,並詳細說明發生了什麼問題將大大增加獲得良好答案的機會。 – miradulo
該程序需要能夠採取這個二維數組,驗證它是一個有效的魔術廣場或沒有,然後打印有效或無效的每條線給出,如果它的魔術廣場或不 – TheBudderBomb
這不解決我的問題 - 我問你已經嘗試了什麼,出了什麼問題。堆棧溢出不是一個代碼寫入服務,你不會爲你完成整個程序。 – miradulo