在python中用户输入n * n矩阵输入

时间:2015-09-08 20:02:43

标签: python matrix input split nested-loops

我开始在python中编码。当我从用户那里获取两个输入时,两个输入之间有一个空格,我的代码就像

 min, p = input().split(" ")  
min=int(min)
p=float(p)

工作得很好。在另一个这样的问题中,我将n * n矩阵作为用户输入,我声明为arr=[[0 for i in range(n)] for j in range(n)] 打印arr给出了一个精细的矩阵(虽然在一行中)但是我要用用户输入替换每个元素' 0'所以我使用嵌套循环

for i in range(0,n)
    for j in range(0,n)
       arr[i][j]=input()

这也工作得很好,但是按下了'输入'每个元素后面的按钮。在这个特殊问题中,用户将在空格中输入一行元素,而不是按“输入”。按钮。我想知道如何在这种情况下使用split,就像上面的第一种情况一样,请记住矩阵是n * n,我们不知道n是什么。我宁愿避免使用numpy作为python的初学者。

10 个答案:

答案 0 :(得分:3)

const data = {
    0: [],
    1: ['a', 'b'],
    2: [],
    3: ['20']
}

const newData = {};

for (const property in data) {
    if (data[property].length !== 0) {
        newData[property] = data[property]
    }
}

console.log(newData)

答案 1 :(得分:2)

你可以这样做:

rows = int(input("Enter number of rows in the matrix: "))
columns = int(input("Enter number of columns in the matrix: "))
matrix = []
print("Enter the %s x %s matrix: "% (rows, columns))
for i in range(rows):
    matrix.append(list(map(int, input().rstrip().split())))

现在您输入控制台中的值如下:

Enter number of rows in the matrix: 2
Enter number of columns in the matrix: 2
Enter the 2 x 2 matrix:
1 2
3 4

答案 2 :(得分:1)

你可以尝试这种简单的方法(在每个数字之后按回车......工作正常)::

m1=[[0,0,0],[0,0,0],[0,0,0]]
for x in range (0,3):
    for y in range (0,3):
        m1[x][y]=input()
print (m1)

答案 3 :(得分:0)

尝试这样的事情,而不是使用现有的列表逐个设置矩阵:

# take input from user in one row
nn_matrix = raw_input().split()
total_cells =  len(nn_matrix)
# calculate 'n'
row_cells = int(total_cells**0.5)
# calculate rows
matrix = [nn_matrix[i:i+row_cells] for i in xrange(0, total_cells, row_cells)]

示例:

>>> nn_matrix = raw_input().split()
1 2 3 4 5 6 7 8 9
>>> total_cells =  len(nn_matrix)
>>> row_cells = int(total_cells**0.5)
>>> matrix = [nn_matrix[i:i+row_cells] for i in xrange(0, total_cells, row_cells)]
>>> matrix
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>> 

答案 4 :(得分:0)

>>> import math
>>> line = ' '.join(map(str, range(4*4))) # Take input from user
'0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'
>>> items = map(int, line.split()) # convert str to int
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> n = int(math.sqrt(len(items))) # len(items) should be n**2
4
>>> matrix = [ items[i*n:(i+1)*n] for i in range(n) ]
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]

答案 5 :(得分:0)

如果矩阵是n * n,这意味着使用第一个输入行就知道输入行的数量(并且没有,<ScrollViewer Margin="12"> <StackPanel> <TextBlock Text="content1" FontSize="48" /> <TextBlock Text="content1" FontSize="48" /> </StackPanel> </ScrollViewer> 不能以键输入结束,这是不可能的)。所以你需要这样的东西:

input()

我使用arr = [] arr.append(input().split()) for x in range(len(arr[0]) - 1): arr.append(input().split()) 所以它输入其余的行(因为矩阵的宽度和高度是相同的,并且已经从输入中读取了第一行)。

我还使用了range(len(arr[0]) - 1)而没有.split()作为参数,因为它是默认参数。

答案 6 :(得分:0)

尝试以下,

r=int(input("enter number of rows"));
c=int(input("enter number of columns"));
mat=[];
for row in range(r):
    a=[]
    for col in range(c):
        a.append(row*col);
    mat.append(a)

print mat;

答案 7 :(得分:0)

print("Enter The row and column :")
row,col=map(int,input().split())
matrix = [] 
print("Enter the entries rowwise:") 

# For user input 
for i in range(row):          # for loop for row entries 
a =[] 
for j in range(col):      #  for loop for column entries 
     a.append(int(input())) 
matrix.append(a) 
for i in range(row): 
   for j in range(col): 
      print(matrix[i][j], end = " ") 
print()

答案 8 :(得分:0)

n = 10#n是矩阵的阶数

matrix = [[input()中j的int(j).split()] in range(n)中i的矩阵

打印(矩阵)

答案 9 :(得分:0)

r = int(input("Enret Number of Raws : "))

c = int(input("Enter Number of Cols : "))

a=[]

for i in range(r):

   b=[]

   for j in range(c):

      j=int(input("Enter Number in pocket ["+str(i)+"]["+str(j)+"]"))

      b.append(j)

   a.append(b)

for i in  range(r):

   for j in range(c):

      print(a[i][j],end=" ")

   print()