Python程序 以蛇形图案打印矩阵
在这篇文章中,我们将学习一个Python程序来打印一个蛇形图案的矩阵。
假设我们有一个n x n矩阵。现在我们将使用下面提到的方法以蛇形模式打印输入的矩阵。
使用的方法
以下是用于完成这项任务的各种方法
- 使用嵌套for循环
-
使用切分法反转交替的行
直觉
我们将遍历一个矩阵的所有行。对于每一行,我们现在将检查它是偶数还是奇数。如果该行是偶数,那么将从左到右打印该矩阵,否则我们将从右到左打印该矩阵。
方法1:使用嵌套for循环
算法(步骤)
以下是执行所需任务时需要遵循的算法/步骤。-
- 创建一个变量来存储矩阵的行数。
-
创建另一个变量来存储矩阵的列数。
-
创建一个函数 printSnakePattern() ,通过接受输入的矩阵作为参数,以蛇形模式打印矩阵。
-
使用 global 关键字,使行和列变量成为全局变量。
-
使用 for循环 来遍历矩阵的行。
-
使用 if条件 语句来检查当前行数是否为偶数。
-
如果条件为真,使用另一个 嵌套的for循环 来遍历当前行的所有列。
-
如果当前行是 偶数 ,从左到右打印矩阵行 。
-
否则,如果当前行是 奇数 ,则从右到左打印矩阵行 。
-
创建一个变量来存储输入矩阵并打印给定的矩阵。
-
通过传递输入矩阵作为参数,调用上面定义的 printSnakePattern() 函数。
例子
下面的程序使用嵌套的for循环打印一个蛇形图案的输入矩阵。
# initializing the number of rows of the matrix
rows = 4
# initializing the number of columns of the matrix
columns = 4
# creating a function for printing the matrix in
# snake pattern accepting the input matrix as an argument.
def printSnakePattern(inputMatrix):
# making the rows and columns variables global
global rows, columns
# traversing through the rows of a matrix
for m in range(rows):
# checking whether the current row number is even
if m % 2 == 0:
# traversing through all the columns of the current row
for n in range(columns):
# printing from left to right if the current row is even
print(inputMatrix[m][n], end=" ")
# Else, printing from right to left if the current row is even
else:
# traversing from the end of the columns
for n in range(columns - 1, -1, -1):
print(inputMatrix[m][n], end=" ")
# input matrix
inputMatrix = [[3, 4, 5, 6],
[10, 40, 60, 80],
[1, 9, 7, 8],
[40, 20, 14, 15]]
print("The Given Matrix is :")
print(inputMatrix)
# calling the above-defined printSnakePattern function
# by passing the input matrix as an argument.
print("Snake Pattern of the given Matrix is:")
printSnakePattern(inputMatrix)
输出
在执行过程中,上述程序将产生以下输出
The Given Matrix is :
[[3, 4, 5, 6], [10, 40, 60, 80], [1, 9, 7, 8], [40, 20, 14, 15]]
Snake Pattern of the given Matrix is:
3 4 5 6 80 60 40 10 1 9 7 8 15 14 20 40
方法2:用切片法颠倒交替的行
切片 是一种经常使用的做法,也是程序员利用最多的一种做法,可以有效地解决问题。考虑一个 Python 列表。你必须对一个列表进行切片,以访问列表元素的一个范围。使用 冒号(:),一个 简单的分片操作符,是完成这个任务的一种方法。
语法
[start:stop:step]
参数
- start – 从哪里开始的索引
-
end – 结束索引
-
step – 中间的跳转次数,即步长。
例子
下面的程序使用切分法以蛇形模式打印一个输入矩阵—-。
# input matrix
inputMatrix = [[3, 4, 5, 6],
[10, 40, 60, 80],
[1, 9, 7, 8],
[40, 20, 14, 15]]
# initializing the number of rows of a matrix
rows = 4
# initializing the number of columns of a matrix
columns = 4
# creating a function for printing the matrix in
# snake pattern accepting the input matrix as an argument.
def printSnakePattern(inputMatrix):
# making the rows and columns variables global
global rows, columns
# traversing through the rows of a matrix
for m in range(rows):
# checking whether the current row number is even
if m % 2 != 0:
# Reversing the row using reverse slicing
inputMatrix[m] = inputMatrix[m][::-1]
# traversing through the rows of a matrix
for m in range(rows):
# traversing through all the columns of the current row
for n in range(columns):
# printing the corresponding element
print(inputMatrix[m][n], end=' ')
# input matrix
inputMatrix = [[3, 4, 5, 6],
[10, 40, 60, 80],
[1, 9, 7, 8],
[40, 20, 14, 15]]
print("The Given Matrix is :")
print(inputMatrix)
# calling the above-defined printSnakePattern function
# by passing the input matrix as an argument.
print("Snake Pattern of the given Matrix is:")
printSnakePattern(inputMatrix)
输出
在执行时,上述程序将产生以下输出:
The Given Matrix is :
[[3, 4, 5, 6], [10, 40, 60, 80], [1, 9, 7, 8], [40, 20, 14, 15]]
The Snake Pattern of the given Matrix is:
3 4 5 6 80 60 40 10 1 9 7 8 15 14 20 40
结论
在这篇文章中,我们学习了如何使用两种不同的方法将给定的矩阵打印成蛇形。我们学习了如何使用global关键字来使变量成为全局变量。我们还学习了如何通过反向切分来反转任何可迭代的东西,包括列表、元组、字符串等。