2014-02-18 71 views
2

我對Python很新,所以我不太瞭解它的語法。如何在Python中獲取用戶輸入的網格字符

所以我想在輸入中輸入一個網格的行數和列數,然後輸入一個由行數和列數限制的字符網格。例如:

如果我輸入的是:

3 4 
X O X O 
X X X X 
O O O O 

我想打印出一個這樣的數組:

grid = [['X', 'O', 'X', 'O'], 
     ['X', 'X', 'X', 'X'], 
     ['O', 'O', 'O', 'O']] 

我至今是:

row, column = [int(x) in x for raw_input().split()] 
grid = [] 

for i in range (0, N): 
    grid[i].append([]) 
    grid[i] = raw_input().split() 

我收到錯誤:列表索引超出範圍。

我不知道我在做什麼錯。任何幫助,將不勝感激。

+0

輸入從標準輸入來的? –

回答

1

問題是grid是一個空的列表。您不能參考grid[i]其中i超出範圍。

您需要appendgrid,像這樣:

for i in range(N): # 0 is implicit 
    grid.append(raw_input().split()) 

無需追加到grid[i]

1

實際的問題是grid是一個空數組,但您要追加到元素0 ,這是不可能的。

可以解決這個問題,與列表理解,這樣

rows, columns = map(int, raw_input().split()) 
grid = [raw_input().split() for i in xrange(rows)] 

這是一樣的書寫

grid = [] 
for i in xrange(rows): 
    grid.append(raw_input().split()) 
0
grid = [] 
for i in range (0, N): 
    grid.append([]) 
    grid[i]=raw_input().split() 
print grid 
相關問題