2013-04-16 68 views
0

我在Python中製作了一個Sudoku解算器,並且我的代碼可以工作,但是我需要在列表中指定一個由9個列表組成的列表,以供分析。我目前正在努力如何做到這一點,以便當用戶提示輸入時,他們輸入9個數字沒有空格,然後再做8次;每次他們提交一行時,該行就被轉換成一個列表。目前我必須手動指定列表(請參閱下面的示例)。python 3多行輸入

b=[[2,5,9,7,1,6,4,8,3], 
[8,6,7,3,4,5,9,1,2], 
[4,1,3,9,2,8,6,7,5], 
[3,9,8,5,7,4,1,2,6], 
[5,4,6,2,8,1,7,3,9], 
[1,7,2,6,3,9,5,4,8], 
[9,8,4,1,6,3,2,5,7], 
[6,2,1,8,5,7,3,9,4], 
[7,3,5,4,9,2,8,6,1]] 

我想在做一個while循環有分流的功能,然後追加每個值到一個列表,但這僅僅是創建一個巨大的名單。

有人可以幫助我嗎?

我可以對此進行擴展或在必要時提供代碼,謝謝。

回答

2

輸入不帶空格隔開

b = [[int(x) for x in input()] for i in range(9)] 

那豈不是更好看它是否是由空格分隔,我知道你的問題指定不,但你可以這樣做:

b = [[int(x) for x in input().split()] for i in range(9)] 

記:raw_input on Python 2.7

0

首先,找出它們的第一個輸入是什麼len(),然後創建一個該長度的列表。然後,每次通過循環時,創建一個列表並將其添加到您的容器列表中。一旦你有合適數量的列表來建立你的行,就不要再要求輸入了。有幾種方法可以通過whilefor循環完成此操作。

0

你可以輸入使用list comprehension然後追加,爲您的主目錄:

main = [] 
... 
#get input 
... 
main.append([int(i) for i in input])