python3 中如何print循环输出标准矩阵

python3 中如何print循环输出标准矩阵

前言

做拼多多提前批笔试题时,出现不会输出标准矩阵,下去求解后记录一下。


一、解决如下

img

代码如下(示例):

# 输出调整为矩形,可以按下面的方式
import sys
n = int(input())
nums=[[0 for i in range(n)] for j in range(n)]

for i in range(n):
    for j in range(n):
        if(i==j or n-i-1== j or(n%2==1 and (i == n//2 or j == n//2))):
            continue
        if (i<n//2 and j < n/2):
            nums[i][j] = 3 if i>j else 2
        elif n//2>i and j>= n//2:
            nums[i][j]=1 if (n-1-i)>j else 8
        elif n // 2 <= i and j < n // 2:
            nums[i][j] = 4 if (n - 1 - i) > j else 5
        elif n // 2 <= i and j >=n // 2:
            nums[i][j] = 6 if i > j else 7

for i in range(n):
    for j in range(n):
        print(str(nums[i][j]),end=' ')
    #错误示范
   # print('\n')
   #正确
   print()
    #     sys.stdout.write(str(nums[i][j]) + ' ')
    #sys.stdout.write('\n')

在加print(’\n’)后的结果:它会多出一个换行,然后赛码网或者牛客的判题系统是认为错误的。

4
0 2 1 0 

3 0 0 8 

4 0 0 7 

0 5 6 0 


进程已结束,退出代码 0

(1).

#第一种
for i in range(n):
    for j in range(n):
        print(str(nums[i][j]),end=' ')
    #因为Print('\n')为输出了两个'\n',print()自带的有一个'\n',如果你加上就相当于输出了两个。和要求不符合。
    print()
输出结果:
4
0 2 1 0 
3 0 0 8 
4 0 0 7 
0 5 6 0 

进程已结束,退出代码 0

(2)

#第二种
for i in range(n):
    for j in range(n):
        sys.stdout.write(str(nums[i][j]) + ' ')
    sys.stdout.write('\n')
    输出结果:
4
0 2 1 0 
3 0 0 8 
4 0 0 7 
0 5 6 0 

进程已结束,退出代码 0

总结

1和2两种方法可以,只不过2需要import sys。


版权声明:本文为qq_42292196原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。