0

我正在用 Python 制作数独求解器,并且我的代码可以工作,但我需要指定一个列表,该列表由列表中的 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]]

我正在考虑使用 split 函数做一个 while 循环,然后将每个值附加到一个列表中,但这只会创建一个巨大的列表。

有人能帮我吗?

如有必要,我可以对此进行扩展或为您提供代码,谢谢。

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_input在 Python 2.7 上

于 2013-04-16T12:28:04.077 回答
0

首先,找出len()他们的第一个输入是什么,然后创建一个该长度的列表。然后,每次通过您的循环,创建一个列表并将其添加到您的容器列表中。一旦你有正确数量的列表来构建你的行,就停止询问输入。有几种方法可以使用whileorfor循环来完成此操作。

于 2013-04-16T12:28:06.267 回答
0

您可以对输入使用列表理解,然后将其附加到您的主列表中:

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