2013-04-16 4 views
0

파이썬에서 스도쿠 해결사를 만들고 코드가 작동하지만 목록 분석을 위해 목록 내에 9 개의 목록으로 구성된 목록을 지정해야합니다. 나는 현재 사용자가 입력을 요구받을 때 공백없이 9 개의 숫자를 입력 한 다음 8 번 다시 입력하도록하는 방법에 대해 고심하고있다. 행을 제출할 때마다 행이 목록으로 변환됩니다. 현재 수동으로 목록을 지정해야합니다 (아래 예제 참조).파이썬 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()이 무엇인지 알아 낸 다음 해당 길이의 목록을 만드십시오. 그런 다음 루프를 반복 할 때마다 목록을 만들어 컨테이너 목록에 추가하십시오. 행을 구축하는 데 필요한 수의 목록이 있으면 입력을 요청하십시오. while 또는 for 루프를 사용하여 여러 가지 방법으로이를 수행 할 수 있습니다.

0

당신은 입력에 list comprehension을 사용하여 다음 주 목록에 그것을 추가 할 수 있습니다 :

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