晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。
输入格式
输入第一行包括由空格分开的整数 M,N,T(0< N,M<200)T 的值为 0 或 1。其中 M和 N 分别表示待处理矩阵的行数与列数,T 为 0 时表示左右翻转,为 1 时表示上下翻转。
之后的 M 行,每行包括由空格分隔的 N 个整数,依次为输入矩阵的每一行的数据。
输出格式
输出包括 M 行 N 列,每个数字之间用一个空格分隔,每一行行末均有一个空格,表示的是按照要求翻转后的矩阵。
样例输入
4 4 1
1 2 3 4
5 6 7 8
9 0 1 2
3 4 5 6
样例输出
3 4 5 6
9 0 1 2
5 6 7 8
1 2 3 4
分析:
这个问题其实不难,主要是矩阵的输入问题,input()函数的字符串的操作问题
python中没有字符类型的说法,只有字符串!
1.join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
如:
>>> s1 = " "
>>> seq = ['r','u','n','o']
>>> s1.join(seq)
'r u n o'
>>> s2 = '-'
>>> s2.join(seq)
'r-u-n-o'
- split()就是将一个字符串分裂成多个字符串组成的列表。
str.split(str="", num=string.count(str)).
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。
如:
>>> s = 'this is my hobby'
>>> s.split()
['this', 'is', 'my', 'hobby']
>>> s1 = 'this_is_my_hobby'
>>> s1.split('_')
['this', 'is', 'my', 'hobby']
>>> s1
'this_is_my_hobby'
>>> s1.split('_',2)
['this', 'is', 'my_hobby']
与input的搭配使用:
>>> x = input().split()
1 23 4 56
>>> x
['1', '23', '4', '56']
list的二维数组的定义:
>>> [[ 0 for i in range(4)] for i in range(3)]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
代码如下:
a = [[0 for i in range(200)]for i in range(200)]
b = [[0 for i in range(200)]for i in range(200)]
def reverse_up(m,n):
for i in range(m):
for j in range(n):
b[m-i-1][j]=a[i][j]
def reverse_left(m,n):
for i in range(m):
for j in range(n):
b[i][n-j-1]=a[i][j]
x=input().split()
M=int(x[0])
N=int(x[1])
T=int(x[2])
for i in range(M):
x=input().split()
for j in range(N):
a[i][j]=int(x[j])
if T==1:
reverse_up(M,N)
else:
reverse_left(M,N)
for i in range(M):
for j in range(N):
print(b[i][j],end=" ")
print()