2014-04-12 62 views
0

我有這樣的代碼在python寫的,用於輸入矩陣:矩陣輸入結果(Python)的

def gestionmatrice():  

    print("Entrez la matrice,séparé par des espaces pour chaques colonnes") 
    print("une rangée par ligne,et faites un ligne vide pour terminer") 
    matrix = [] 
    while True: 
     line = input() 
     if not line: break 
     values = line.split() 
     row = [int(value) for value in values] 
     matrix.append(row) 

    print(matrix) 

用戶輸入通過輸入每個由空格分隔行的所有期望int值的矩陣,然後按輸入以確認下一個行和input。要完成,用戶必須input一個空行並按輸入。最後,我想通過打印來查看矩陣;問題是它不能正常工作;例如,如果用戶輸入1 2 3,然後在下一行輸入4 5 6,則print(matrix)的結果將爲:[[1, 2, 3], [4, 5, 6]]。它應該是print1 2 3 4 5 6因此,某些內容不起作用。哪些內容需要修改?提前致謝。

+0

你能否使這個問題明確身體你會期望輸出是什麼?我試圖在編輯中挽救它,但我無法完成。 –

+0

實際上我想輸出顯示1 2 3,在下面的行中,4 5 6與1 2 3對齊。 –

+0

當有'10'時會發生什麼?你想要一切都對齊嗎? –

回答

0

我不知道爲什麼挺你希望它是這樣的,但你可以這樣做:

代替print(matrix),do:

>>> print(*(' '.join(map(str, sub)) for sub in matrix), sep='\n') 
1 2 3 
4 5 6 

這是快速修復。

+0

加入只能使用'str',而不是'int' –

+0

@HaiVu認識到,就像你發佈,編輯和感謝你。 –

0
[[1, 2, 3], [4, 5, 6]] 

是矩陣的默認打印(在許多語言中,不僅是python)。

達到你想要什麼,你必須這樣做

import sys 
for i in xrange(2): 
    for j in xrange(3): 
     sys.stdout.write(str(matrix[i,j] + " ")) 
    sys.stdout.write("\n") 
+0

真的嗎?我認爲我錯了,因爲我認爲[[1,2,3],[4,5,6]]就像大列表中的2列表,而不是矩陣。所以它仍然是一個矩陣,它的正常值它會產生這樣的顯示[[1,2,3],[4,5,6]]?謝謝 –

+0

@Jon_Computer這是「一種」表示矩陣的方式,但是Python本身絕不會像您原先想要的那樣打印矩陣。 – AdrienNK

+0

謝謝AdrienNK –

1

您可以在Python打印出一個矩陣是這樣的:

def print_matrix(matrix): 
    print('\n'.join([' '.join(map(str, row)) for row in matrix])) 

這裏是一個GET矩陣功能:

def get_matrix(): 
    matrix = [] 
    line = input() 
    while line: 
     matrix.append(map(int, line.split())) 
     line = input() 
    return matrix 

演示:

>>> matrix = get_matrix() 
1 2 3 
4 5 6 
7 8 9 

>>> print_matrix(matrix) 
1 2 3 
4 5 6 
7 8 9