打印矩阵的元素,每行换行,每行的元素用空格分隔

Posted

技术标签:

【中文标题】打印矩阵的元素,每行换行,每行的元素用空格分隔【英文标题】:Print the elements of the matrix with each row in a new line and elements of each row are separated by a space 【发布时间】:2019-08-19 16:10:12 【问题描述】:

为您提供行数 (R) 和列数 (C)。您的任务是生成具有 R 行和 C 列的矩阵,使所有数字按行方式从 1 开始按递增顺序排列。

输入格式: 第一行包含两个数字 R 和 C,用空格隔开。

输出格式: 打印矩阵的元素,每行换行,每行元素用空格分隔。

注意:每行的最后一个元素后面不能有空格,最后一行后面不能有新行。

例子:

输入:

3 3

输出:

1 2 3
4 5 6
7 8 9

我已经尝试了以下代码。它在在线编译器上运行。但在某些编译器中显示错误,\n 在输出中。我想删除这个错误

x=[]
a=[int(n) for n in input().split()]
#print(*a)

for i in range(a[0]):
    x.append(list(map(int, input().rstrip().split())))

for i in range(a[0]):
    for j in range(a[1]): 
        print(x[i][j], end = " ")
    print()

新行的期望输出

1 2 3
4 5 6

实际输出

1 2 3\n
4 5 6

【问题讨论】:

【参考方案1】:

此脚本将以包含空格分隔的两个数字 R 和 C 的行的形式接受输入。

它将打印带有空格分隔值的矩阵:

R, C = map(int, input().split())

print('\n'.join(' '.join(str(C*row + col) for col in range(1, C+1)) for row in range(R)), end='')

打印(在输入3 3的情况下):

1 2 3
4 5 6
7 8 9

注意:最后一行后面没有换行符。

【讨论】:

这比原始代码更漂亮,但从技术上讲不会创建矩阵 - 它只是打印这样的矩阵将具有的值。 ;-) 正确,应该是:print('\n'.join(' '.join(str(C*row + col) for col in range(1, C+1)) for row in range(R)), end='') @Amdoc 现在试试,我做了小修正。谢谢天门【参考方案2】:

你可以试试:

for i in range(a[0]):
  for j in range(a[1]): 
    if (j == a[1]-1):
      print(x[i][j])
    else:
      print(x[i][j], end = " ")

您还可以将代码稍微简化为:

a=[int(n) for n in input().split()] # e.g. a = [2,4]

matrix = [[i*a[1]+j+1 for j in range(a[1])] for i in range(a[0])]
for m in matrix:
    print(*m)

【讨论】:

【参考方案3】:
r,c = input("Enter the number of Row and Column : ").split()
r=int(r)
c=int(c)
matrix=[]
count=0

for i in range(r*c):
    matrix.append(i+1)

for i in matrix:
    count+=1
    if(count==r):
        print(i)
        print("\n")
        count=0
    else:
        print(i,end=" ")

【讨论】:

以上是关于打印矩阵的元素,每行换行,每行的元素用空格分隔的主要内容,如果未能解决你的问题,请参考以下文章

习题7-4 求矩阵各行元素之和 (15分)

矩阵转置

蓝桥杯今日份练习

[PTA]习题7-4 求矩阵各行元素之和

[PTA]实验7-2-1 求矩阵各行元素之和

BC105 矩阵相等判定