""" 2 定义一个函数,fn(n)其中n表示输入n行n列的矩阵,需要满足的要求是在n为 3时先输出 3 1 2 3 4 4 5 6 5 7 8 9 6 后输出 7 1 4 7 8 2 5 8 9 3 6 9 10 解决方案: 11 定义一个局部函数,返回其局部函数的值,并且根据其规律来写代码 12 """ 13 def found_list(num): 14 """ 15 创建一个num*num的二维列表 16 """ 17 list1 = [[0 for i in range(num)] for i in range(num)] 18 return list1 19 20 def function(num,list1): 21 z = 0 22 for x in range(num): 23 for y in range(num): 24 z += 1 25 list1[x][y] = z 26 27 return list1 28 def function2(num,list2): 29 i = 1 30 for x in range(num): 31 n = 1 32 for y in range(num): 33 z = i + (n - 1)*num 34 list2[x][y] = z 35 n += 1 36 if n > num: 37 break 38 i += 1 39 if i > num: 40 break 41 return list2 42 43 def display(list1): 44 for x in range(num): 45 for y in range(num): 46 print(list1[x][y],end = " ") 47 print() 48 print("#"*50) 49 if __name__ == "__main__": 50 num = int(input()) 51 list1 = found_list(num) 52 list2 = found_list(num) 53 list3 = function(num,list1) 54 list4 = function2(num,list2) 55 display(list3) 56 display(list4)
运行结果
输入3时
1 2 3
4 5 6
7 8 9
##################################################
1 4 7
2 5 8
3 6 9
##################################################
输入5时
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
##################################################
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
##################################################
这只是一种实现方法,并且代码的还有很大的优化空间,利用局部函数或者用函数作为参数均可以使代码变得更加整洁