0

Python で Sudoku ソルバーを作成しており、コードは機能しますが、分析するにはリスト内に 9 つのリストで構成されるリストを指定する必要があります。私は現在、ユーザーが入力を求められたときに、スペースなしで9つの数字を入力してから、8回やり直すようにする方法に苦労しています。行を送信するたびに、その行はリストに変換されます。現在、リストを手動で指定する必要があります (以下の例を参照)。

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 ループを実行し、各値をリストに追加することを考えていましたが、1 つの巨大なリストが作成されるだけです。

誰かが私を助けることができますか?

これを拡張するか、必要に応じてコードを提供できます。ありがとうございます。

4

3 に答える 3

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_inputPython 2.7 の場合

于 2013-04-16T12:28:04.077 に答える
0

最初に、最初の入力が何であるかを調べてからlen()、その長さのリストを作成します。次に、ループするたびに、リストを作成してコンテナー リストに追加します。行を作成するのに適切な数のリストを取得したら、入力を求めるのをやめます。whileまたはforループを使用してこれを行うには、いくつかの方法があります。

于 2013-04-16T12:28:06.267 に答える
0

入力にリスト内包表記を使用して、それをメイン リストに追加できます。

main = []
...
#get input
...
main.append([int(i) for i in input])
于 2013-04-16T12:36:40.780 に答える