2013-04-16 12 views
0

Я делаю решение Sudoku в Python, и мой код работает, но мне нужно указать список из 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]] 

Я думал делать то время цикла с функцией разделения, а затем присоединяя каждое значение в список, но это только создает один гигантский список.

Может кто-нибудь мне помочь?

Я могу расширить это или дать вам код при необходимости, спасибо.

ответ

2

Input отделено без пробелов

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

0

Прежде всего, узнайте, что из их первого ввода len(), а затем создайте список этой длины. Затем каждый раз, хотя ваш цикл, создайте список и добавьте его в свой список контейнеров. Прекратите запрашивать ввод, как только вы получите правильное количество списков для создания ваших строк. Существует несколько способов сделать это с помощью while или for петель.

0

Вы можете использовать list comprehension на входе, а затем добавить, что в основном списке:

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