# coding=utf-8
"""
# matrix.py
# 矩阵类
# Created on: 2015/4/9
# Author: Woolen Sky
"""
import sys
class Matrix:
"""矩阵类"""
matrix = []
row = 0
column = 0
def __init__(self, row_column=0):
"""
使用行列数初始化矩阵,行列数相同
:param row_column 行和列数
:type row_column: int
:return nothing
"""
self.matrix = []
self.row = row_column
self.column = row_column
for i in range(0, row_column):
new_arr = [0] * row_column
self.matrix.append(new_arr)
return
def init_with_row_and_column(self, row, column):
"""
使用行列数初始化矩阵
:param row: 行数
:param column: 列数
:type row int
:type column int
:return: nothing
"""
self.matrix = []
self.row = row
self.column = column
for i in range(0, row):
new_arr = [0] * column
self.matrix.append(new_arr)
return
def display(self):
"""
输出矩阵
:return:nothing
"""
max_len = len(str(self.row * self.column - 1))
format_str = "%" + str(max_len) + "r "
for i in self.matrix:
for j in i:
sys.stdout.writelines(format_str % j)
print("")
return
def round_matrix(self, length, start_line=0, start_column=0, num=0):
"""
调用函数请确保self.row == self.column
:type length:int
:type start_column:int
:type start_line:int
:type num:int
:param length:行列长度,确保一样
:param start_line:初始行(0)
:param start_column:初始列(0)
:param num:起始数字(0)
:return:nothing
"""
if length == 0:
return
elif length == 1:
self.matrix[start_line][start_column] = num
num += 1
return
for column in range(0, length - 1):
self.matrix[start_line][start_column + column] = num
num += 1
for line in range(0, length - 1):
self.matrix[start_line + line][start_column + length - 1] = num
num += 1
for column in range(0, length - 1):
self.matrix[start_line + length - 1][start_column + length - 1 - column] = num
num += 1
for line in range(0, length - 1):
self.matrix[start_line + length - 1 - line][start_column] = num
num += 1
self.round_matrix(length - 2, start_line + 1, start_column + 1, num)
return
接下来是主程序
# coding=utf-8
"""
# round_matrix.py
#
# Created on: 2015/4/9
# Author: Woolen Sky
"""
import matrix
m = matrix.Matrix(10)
m.round_matrix(m.row)
m.display()
运行结果如下